ó
    ‡Ž¡jes  ã                   óx  • S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKJrJ	r	  S SK
JrJr  S SKJrJrJr  S SKrS SKrS SKrS SKrS SKJrJr  S SKJr  S SKJr   S SKr\R<                  " 5       S:w  a  S SKr\" 5       (       a,  S S	K J!r!  S S
K"J#r#  S SK$J%r%  S SK&J'r'  S SK(J)r)J*r*J+r+J,r,J-r-  S SK.J/r/  SSS.r0\1" \Rd                  \Rf                  -   5      r4\1" \Rd                  \Rj                  -   \Rf                  -   S-   5      r6SS0SS0SS0SS0SS0SS0SS0S.r7Sr8SSRs                  \7Ru                  5       5       S3r;S \<S!\<4S" jr= " S# S$5      r> " S% S&5      r?S'\<S-  S!\4S( jr@S)\A\<   S-  S!\B4S* jrCS5S+\<S-  S!\A\B   4S, jjrDS-\<S.\A\B   S/\BS!\<4S0 jrES!\<4S1 jrF\GS2:X  a  \?" S3S49  gg! \ a     GNXf = f)6é    N)ÚAsyncIteratorÚ	Awaitable)Ú	AnnotatedÚAny)ÚurljoinÚurlparseÚ
urlunparse)ÚAsyncInferenceClientÚChatCompletionStreamOutput)ÚGenerationConfig)Úis_rich_availableÚWindows)Úfilesize)ÚConsole)ÚLive)ÚMarkdown)Ú	BarColumnÚProgressÚProgressColumnÚ
TextColumnÚTimeElapsedColumn)ÚTextÚ	localhosti@  )ÚhostnameÚportz .!\"#$%&'()*+,\-/:<=>?@[]^_`{|}~Útextz5There is a Llama in my lawn, how can I get rid of it?zyWrite a Python function that integrates any Python function f(x) numerically over an arbitrary interval [x_start, x_end].z4How many helicopters can a human eat in one sitting?z4Count to 10 but skip every number ending with an 'e'zWhy aren't birds real?z2Why is it important to eat socks after meditating?z$Which number is larger, 9.9 or 9.11?)ÚllamaÚcodeÚ
helicopterÚnumbersÚbirdsÚsocksÚnumbers2aŒ  

**TRANSFORMERS CHAT INTERFACE**

Chat interface to try out a model. Besides chatting with the model, here are some basic commands:
- **!help**: shows all available commands (set generation settings, save chat, etc.)
- **!status**: shows the current status of the model and generation settings
- **!clear**: clears the current conversation and starts a new one
- **!exit**: closes the interface
am  

**TRANSFORMERS CHAT INTERFACE HELP**

Full command list:
- **!help**: shows this help message
- **!clear**: clears the current conversation and starts a new one
- **!status**: shows the current status of the model and generation settings
- **!example {NAME}**: loads example named `{NAME}` from the config and uses it as the user input.
Available example names: `ú`, `a#  `
- **!set {ARG_1}={VALUE_1} {ARG_2}={VALUE_2}** ...: changes the system prompt or generation settings (multiple
settings are separated by a space). Accepts the same flags and format as the `generate_flags` CLI argument.
If you're a new user, check this basic flag guide: https://huggingface.co/docs/transformers/llm_tutorial#common-options
- **!save {SAVE_NAME} (optional)**: saves the current chat and settings to file by default to
`./chat_history/{MODEL_ID}/chat_{DATETIME}.yaml` or `{SAVE_NAME}` if provided
- **!exit**: closes the interface
Úbase_urlÚreturnc                 ó¶   • [        U 5      nUR                  R                  S5      R                  S5      n[	        UR
                  UR                  USSS45      $ )zQReturn the service root of `base_url`, where the serve management endpoints live.Ú/z/v1Ú )r   ÚpathÚrstripÚremovesuffixr	   ÚschemeÚnetloc)r%   Úparsedr*   s      Ú£C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\transformers/cli/chat.pyÚget_service_root_urlr1   j   sK   € ä�hÓ€FØ�;‰;×Ñ˜cÓ"×/Ñ/°Ó6€DÜ�v—}‘} f§m¡m°T¸2¸rÀ2ÐFÓGÐGó    c                   óÚ   • \ rS rSrS\S\S\4S jrS\\\      S\	\\\
-  S-  4   4S	 jrS\4S
 jrS rS\4S jrS\S\4S jrSS\S\S\4S jjrSS\4S jjrS\4S jrS\4S jrSrg)ÚRichInterfaceéq   Úmodel_idÚuser_idr%   c                 óF   • [        5       U l        Xl        X l        X0l        g ©N)r   Ú_consoler6   r7   r%   )Úselfr6   r7   r%   s       r0   Ú__init__ÚRichInterface.__init__r   s   € Ü›	ˆŒØ ŒØŒØ �r2   Ústreamr&   Nc           	   ƒ   ól  #   • U R                   R                  SU R                   S35        [        U R                   SS9 nSnSn[        R                  " 5       nS nUI S h  v•N   S h  v•N nUR
                  S   R                  R                  n[        UR
                  S   SU5      n[        USS 5      n	U	b  [        U	S	U5      nU(       d  Ml  [        R                  " S
SU5      nX8-  n/ n
UR                  5        HN  nU
R                  U5        UR                  S5      (       a  U
R                  S5        M=  U
R                  S5        MP     [        SR                  U
5      R!                  5       SS9nUR#                  USS9  GM&   GN+ GN%
 S S S 5        O! , (       d  f       O= f[        R                  " 5       W-
  nUS:”  aK  WS:”  aE  XM-  nU R                   R                  5         U R                   R                  SU SUS SUS S35        U R                   R                  5         WW4$ 7f)Nz[bold blue]<z>:é   )ÚconsoleÚrefresh_per_secondr)   r   Úfinish_reasonÚusageÚcompletion_tokensz<(/*)(\w*)>z\<\1\2\>z```Ú
z  
zgithub-dark)Ú
code_themeT)Úrefreshz[dim]z tokens in z.1fzs (z tok/s)[/dim])r:   Úprintr6   r   ÚtimeÚchoicesÚdeltaÚcontentÚgetattrÚreÚsubÚ
splitlinesÚappendÚ
startswithr   ÚjoinÚstripÚupdate)r;   r>   Úliver   rE   Ú
start_timerC   ÚtokenÚoutputsrD   ÚlinesÚlineÚmarkdownÚelapsedÚtok_per_secs                  r0   Ústream_outputÚRichInterface.stream_outputx   sô  é € ð 	�‰×Ñ˜l¨4¯=©=¨/¸Ð<Ô=Ü˜$Ÿ-™-¸AÒ>À$ØˆDØ !ÐÜŸš›ˆJØ(,ˆMØ%+Ÿ|˜|÷ )4�eØŸ-™-¨Ñ*×0Ñ0×8Ñ8�Ü '¨¯©°aÑ(8¸/È=Ó Y�ä  w°Ó5�ØÑ$Ü(/°Ð7JÐL]Ó(^Ð%æÙô Ÿ&š& °¸gÓF�à‘�ð �Ø ŸO™OÖ-�DØ—L‘L Ô&Ø—‘ u×-Ñ-ð Ÿ™ TÖ*àŸ™ VÖ,ñ .ô $ B§G¡G¨E£N×$8Ñ$8Ó$:À}ÑU�ð —‘˜H¨d�Ô3òS  ,ò )4˜|÷ ?×>Ö>úô` —)’)“+ 
Ñ*ˆØ�Q‹;Ð,¨qÓ0Ø+Ñ5ˆKØ�M‰M×ÑÔ!Ø�M‰M×Ñ %Ð(9Ð':¸+ÀgÈcÀ]ÐRUÐVaÐbeÐUfÐfsÐ tÔuØ�‰×ÑÔà�]Ð"Ð"ùsO   ‚>H4Á !FÁ!FÁ"FÁ&FÁ*FÁ+FÁ.DFÆFÆFÆ	H4Æ
F*Æ&BH4c                 óŒ   • U R                   R                  SU R                   S35      nU R                   R                  5         U$ )z!Gets user input from the console.ú[bold red]<z>:
)r:   Úinputr7   rI   )r;   rd   s     r0   rd   ÚRichInterface.inputµ   s8   € à—‘×#Ñ# k°$·,±,°¸tÐ$DÓEˆØ�‰×ÑÔØˆr2   c                 ó8   • U R                   R                  5         g)zClears the console.N)r:   Úclear)r;   s    r0   rg   ÚRichInterface.clear»   s   € à�‰×ÑÕr2   r   c                 óŽ   • U R                   R                  SU R                   SU 35        U R                   R                  5         g)z%Prints a user message to the console.rc   z>:[/ bold red]
N)r:   rI   r7   )r;   r   s     r0   Úprint_user_messageÚ RichInterface.print_user_message¿   s6   € à�‰×Ñ˜k¨$¯,©,¨Ð7GÈÀvÐNÔOØ�‰×ÑÕr2   Úcolorc                 óz   • U R                   R                  SU SU 35        U R                   R                  5         g)z,Prints text in a given color to the console.z[bold Ú]N)r:   rI   )r;   r   rl   s      r0   Úprint_colorÚRichInterface.print_colorÄ   s1   € à�‰×Ñ˜f U G¨1¨T¨FÐ3Ô4Ø�‰×ÑÕr2   ÚmessageÚdefaultc                 óè   • U(       a  SOSnU R                   R                  SU SU S35      nU R                   R                  5         UR                  5       R	                  5       nU(       d  U$ US;   $ )zFDisplays a yes/no prompt to the user, returning True for confirmation.zY/nzy/Nz[bold yellow]z (z): >   ÚyÚyes)r:   rd   rI   rU   Úlower)r;   rq   rr   Údefault_hintÚresponses        r0   ÚconfirmÚRichInterface.confirmÉ   sf   € æ '‘u¨UˆØ—=‘=×&Ñ&¨°w°i¸rÀ,ÀÈsÐ'SÓTˆØ�‰×ÑÔà—>‘>Ó#×)Ñ)Ó+ˆÞØˆNà˜<Ñ'Ð'r2   Úminimalc                 ó¢   • U R                   R                  [        U(       a  [        O[        5      5        U R                   R                  5         g)z'Prints the help message to the console.N)r:   rI   r   ÚHELP_STRING_MINIMALÚHELP_STRING)r;   r{   s     r0   Ú
print_helpÚRichInterface.print_helpÕ   s.   € à�‰×ÑœH¾GÕ%8ÌÓUÔVØ�‰×ÑÕr2   Úmodelc           
      ó,  ^^^• [         R                  " [        [        U R                  5      S-   S5      ST0SS9nUR                  5          " S S[        5      nSS	S
SS.mU R                  R                  [        T5      S-   S-   :¬  mUUU4S jn[        [        S5      [        SS9U" 5       [        5       U R                  S9nUR                  U" S5      S S9nSn[        XPR                  SS9   UR!                  5        GH  nU(       a  UR#                  S5      (       d  M#  [$        R&                  " USS  5      n	U	R)                  S5      n
U
S:X  a  U	R)                  SS5      n  O U
S:X  a  [+        U	R)                  SS5      5      eU
S :X  d  M�  U	R)                  S!5      nU	R)                  S"5      nU" U5      nU(       a0  US#:X  a  S$OS%nUR-                  XmUS&   UR)                  S'5      US(9  Mñ  UR-                  XmS)S S*9  GM     S S S 5        U(       a)  U R                  R/                  [1        S+T S,35      5        O(U R                  R/                  [1        S+T S-35      5        U R                  R/                  5         g ! , (       d  f       N�= f).Nr(   Ú
load_modelr�   T)Újsonr>   c                   ó   • \ rS rSrS rSrg)Ú3RichInterface.print_model_load.<locals>.StatsColumnéà   c                 ó¸  • UR                   (       d  [        S5      $ UR                  R                  S5      S:X  aê  [        R
                  " [        UR                  5      5      n[        R
                  " [        UR                   5      5      nUR                  (       a-  S[        R
                  " [        UR                  5      5       S3OSnUR                  b6  S[        UR                  S-  5       S[        UR                  S-  5      S 3nOSn[        U S	U U U 3S
S9$ [        [        UR                  5       S	[        UR                   5       35      $ )Nr)   ÚunitÚbytesz  z/sé<   Ú:Ú02dr(   zprogress.download)Ústyle)
Útotalr   ÚfieldsÚgetr   ÚdecimalÚintÚ	completedÚspeedÚtime_remaining)r;   ÚtaskÚdoneÚtotr•   Úetas         r0   ÚrenderÚ:RichInterface.print_model_load.<locals>.StatsColumn.renderá   s  € Ø—z—zÜ ›8�Oà—;‘;—?‘? 6Ó*¨gÓ5Ü#×+Ò+¬C°·±Ó,?Ó@�DÜ"×*Ò*¬3¨t¯z©z«?Ó;�CØJNÏ*Ï*˜b¤×!1Ò!1´#°d·j±j³/Ó!BÐ CÀ2ÑFÐZ\�Eà×*Ñ*Ñ6Ø "¤3 t×':Ñ':¸bÑ'@Ó#AÐ"BÀ!ÄCÈ×H[ÑH[Ð^`ÑH`ÓDaÐbeÐCfÐg™à ˜ä 4 &¨¨#¨¨u¨g°c°UÐ ;ÐCVÑWÐWÜœs 4§>¡>Ó2Ð3°1´S¸¿¹³_Ð4EÐFÓGÐGr2   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r›   Ú__static_attributes__r�   r2   r0   ÚStatsColumnr†   à   s   † õHr2   r£   zLoading processorzLoading configzDownloading fileszLoading into memory)Ú	processorÚconfigÚdownloadÚweightsé   éF   c                 óF   >• TR                  X 5      nT(       a  T SU 3$ U$ )Nu     â†’  )r‘   )Ú	stage_keyÚ
stage_textr�   Úshow_model_prefixÚstage_labelss     €€€r0   Ú_labelÚ.RichInterface.print_model_load.<locals>._labelý   s-   ø€ Ø%×)Ñ)¨)Ó?ˆJÞ Ø˜ ¨
 |Ð4Ð4ØÐr2   z[bold]{task.description}é(   )Ú	bar_width)rA   r¤   )r�   F)rA   Ú	transients   data: é   ÚstatusÚreadyÚcachedÚerrorrq   zUnknown errorÚloadingÚstageÚprogressr¦   rŠ   ÚitemsÚcurrentr�   )Údescriptionr”   r�   r‰   r   )r¾   r”   r�   z_*z was already loaded.*_z is warm.*_)ÚrequestsÚpostr   r1   r%   Úraise_for_statusr   r:   ÚwidthÚlenr   r   r   r   Úadd_taskr   Ú
iter_linesrS   r„   Úloadsr‘   ÚRuntimeErrorrV   rI   r   )r;   r�   rx   r£   r¯   r»   Útask_idr·   r\   Úeventrµ   rº   ÚprogÚlabelr‰   r­   r®   s    `             @@r0   Úprint_model_loadÚRichInterface.print_model_loadÚ   sU  ú€ Ü—=’=ÜÔ(¨¯©Ó7¸#Ñ=¸|ÓLÐT[Ð]bÐScÐlpñ
ˆð 	×!Ñ!Ô#ô	Hœ.ô 	Hð& -Ø&Ø+Ø,ñ	
ˆð !ŸM™M×/Ñ/´3°u³:À±>ÀBÑ3FÑFÐ÷	ô ÜÐ1Ó2Ü Ñ#Ù‹MÜÓØ—M‘Mñ
ˆð ×#Ñ#¡F¨;Ó$7¸tÐ#ÐDˆØˆä�(§M¡M¸TÓBØ ×+Ñ+×-�Þ 4§?¡?°9×#=Ñ#=ÙÜŸ
š
 4¨¨ 8Ó,�ØŸ™ 8Ó,�à˜WÓ$Ø"ŸY™Y x°Ó7�FÙà˜WÓ$Ü& u§y¡y°¸OÓ'LÓMÐMà˜YÕ&Ø!ŸI™I gÓ.�EØ Ÿ9™9 ZÓ0�DÙ" 5›M�EæØ*/°:Ó*=™wÀ7˜Ø Ÿ™Ø#À$ÀyÁ/ÐY]×YaÑYaÐbiÓYjÐquð (ó ð !Ÿ™¨ÈaÐW[˜Ô\ñ1 .÷ Cö6 Ø�M‰M×Ñ¤¨2¨e¨WÐ4JÐ)KÓ LÕMà�M‰M×Ñ¤¨2¨e¨W°KÐ)@Ó AÔBØ�‰×ÑÕ÷? CÕBús   Ã2BJÆA7JÊ
Jr¥   c                 óÆ   • U R                   R                  SU R                   S35        U R                   R                  SU 35        U R                   R                  5         g)zFPrints the status of the model and generation settings to the console.z[bold blue]Model: rF   z[bold blue]N)r:   rI   r6   )r;   r¥   s     r0   Úprint_statusÚRichInterface.print_status.  sK   € à�‰×ÑÐ0°·±°¸rÐBÔCØ�‰×Ñ˜k¨&¨Ð2Ô3Ø�‰×ÑÕr2   )r:   r%   r6   r7   )F)rž   rŸ   r    r¡   Ústrr<   r   r   r   Útupler   r`   rd   rg   rj   ro   Úboolry   r   rÌ   r   rÏ   r¢   r�   r2   r0   r4   r4   q   sÂ   † ð! ð !¨sð !¸cô !ð;#Ø Ð.HÑ IÑJð;#à	ˆs�C˜#‘I Ñ$Ð$Ñ	%ô;#ðz�sô òð sô ð
 ð ¨Cô ñ

(˜sð 
(¨Tð 
(¸dõ 
(ñ $õ ð
R cô RðhÐ#3÷ r2   r4   c                   ó,  • \ rS rSrSrS\S    S\S    3SSSSSS4S	\\\R                  " S
S94   S\\S-  \R                  " SS94   S\\
\   S-  \R                  " SS94   S\\S-  \R                  " SS94   S\\S-  \R                  " SS94   S\\\R                  " SS94   S\\S-  \R                  " SS94   S\\S-  \R                  " SS94   SS4S jjr\S 5       rS\S\S\\\\\4   4   S \S!\
\   S\\
\   \4   4S" jrS# rS$rg)%ÚChati5  ú(Chat with a model from the command line.zhttp://r   rŒ   r   Nz./chat_history/r6   z9ID of the model to use (e.g. 'HuggingFaceTB/SmolLM3-3B').)Úhelpr%   z7Base url to connect to (e.g. http://localhost:8000/v1).Úgenerate_flagsa¦  Flags to pass to `generate`, using a space as a separator between flags. Accepts booleans, numbers, and lists of integers, more advanced parameterization should be set through --generation-config. Example: `transformers chat <model_id> <base_url> max_new_tokens=100 do_sample=False eos_token_id=[1,2]`. If you're a new user, check this basic flag guide: https://huggingface.co/docs/transformers/llm_tutorial#common-optionsÚuserzKUsername to display in chat interface. Defaults to the current user's name.Úsystem_promptzSystem prompt.Úsave_folderzFolder to save chat history.Úexamples_pathz"Path to a yaml file with examples.Úgeneration_configzÏPath to a local generation config file or to a HuggingFace repo containing a `generation_config.json` file. Other generation settings passed as CLI arguments will be applied on top of this generation config.r&   c	                 óö  • X l         [        U R                   5      n	U	R                  [        S   :X  a2  U	R                  [        S   :X  a  U R                  U R                   5        Xl        XPl        X`l        [        U5      n
U
R                  SSS9  U
R                  " S	0 [        U5      D6  X l        X!U R                  R                  5       S.U l        Ub  UO	[        5       U l        U(       a0  [#        U5       n[$        R&                  " U5      U l        SSS5        O[*        U l        [-        5       (       d  [/        S5      e[0        R2                  " U R5                  5       5        g! , (       d  f       NM= f)
rÖ   r   r   Té   )Ú	do_sampleÚmax_new_tokens)r%   r6   r¥   NzHYou need to install rich to use the chat interface. (`pip install rich`)r�   )r%   r   r   ÚDEFAULT_HTTP_ENDPOINTr   Úcheck_healthr6   rÚ   rÛ   Úload_generation_configrV   Úparse_generate_flagsr¥   Úto_dictÚsettingsÚget_usernamerÙ   ÚopenÚyamlÚ	safe_loadÚexamplesÚDEFAULT_EXAMPLESr   ÚImportErrorÚasyncioÚrunÚ
_inner_run)r;   r6   r%   rØ   rÙ   rÚ   rÛ   rÜ   rÝ   r/   r¥   Úfs               r0   r<   ÚChat.__init__:  s&  € ðF !Œä˜$Ÿ-™-Ó(ˆØ�?‰?Ô3°JÑ?Ó?ÀFÇKÁKÔShÐioÑSpÓDpØ×Ñ˜dŸm™mÔ,à ŒØ*ÔØ&Ôô (Ð(9Ó:ˆØ�‰ °SˆÑ9Ø�ŠÑ=Ô,¨^Ó<Ò=ØŒà%-ÈtÏ{É{×ObÑObÓOdÑeˆŒð !Ñ,‘D´,³.ˆŒ	ö Ü�mÔ$¨Ü $§¢¨qÓ 1�”÷ %Ð$ô -ˆDŒMô !×"Ñ"ÜÐhÓiÐiô 	�Š�D—O‘OÓ%Õ&÷ %Õ$ús   Ã;E*Å*
E8c                 ó
  • [        [        U 5      S-   S5      n [        R                  " U5      nUR                  S:w  a  [        SU  SUR                   S35      e g	! [        R                   a    [        SU  S35      ef = f)
Nr(   ÚhealthéÈ   zThe server running on z returned status code z on health check (/health).zNo server currently running on z™. To run a local server, please run `transformers serve` in aseparate shell. Find more information here: https://huggingface.co/docs/transformers/servingT)r   r1   Úhttpxr‘   Ústatus_codeÚ
ValueErrorÚConnectError)ÚurlÚ
health_urlÚoutputs      r0   rã   ÚChat.check_health€  s£   € äÔ1°#Ó6¸Ñ<¸hÓGˆ
ð
	Ü—Y’Y˜zÓ*ˆFØ×!Ñ! SÓ(Ü Ø,¨S¨EÐ1GÈ×HZÑHZÐG[Ð[vÐwóð ð )ð øô ×!Ñ!ó 	ÜØ1°#°ð 7oð póð ð	ús   šAA Á$BÚ
user_inputÚ	interfacerì   r¥   Úchatc                 ó  • SnUS:X  a'  [        U R                  5      nUR                  5         GO[US:X  a  UR                  5         GOCUR	                  S5      (       a¸  [        UR                  5       5      S:  a›  UR                  5       n[        U5      S:X  a  US   OL[        R                  R                  U R                  U R                  S[        R                  " S5       S	35      n[        X…U R                  S
9  UR!                  SU S3SS9  GOuUR	                  S5      (       ae  USS R#                  5       n	U	R                  5       n	U	 H   n
SU
;  d  M  UR!                  SU
 S3SS9    GO   UR$                  " S"0 ['        U	5      D6  OúUR	                  S5      (       a¨  [        UR                  5       5      S:X  a‹  UR                  5       S   nX³;   aB  UR                  5         / nUR)                  X;   S   5        UR+                  SX;   S   S.5        OmSU S[-        UR/                  5       5       S3nUR!                  USS9  O<US:X  a  UR1                  US9  O&SnUR!                  S U S!3SS9  UR                  5         XVU4$ )#z‹
Handles all user commands except for `!exit`. May update the chat history (e.g. reset it) or the
generation config (e.g. set a new flag).
Tú!clearú!helpú!saveé   é   Úchat_ú%Y-%m-%d_%H-%M-%Sú.json©Úfilenamer  rç   úChat saved to Ú!Úgreen©r   rl   ú!setr@   NÚ=ú(Invalid flag format, missing `=` after `ú;`. Please use the format `arg_1=value_1 arg_2=value_2 ...`.Úredú!exampler   rÙ   ©ÚrolerM   úExample ú* not found in list of available examples: Ú.ú!status©r¥   FÚ'ú/' is not a valid command. Showing help message.r�   )Únew_chat_historyrÚ   rg   r   rS   rÃ   ÚsplitÚosr*   rT   rÛ   r6   rJ   ÚstrftimeÚ	save_chatrç   ro   rU   rV   rå   rj   rR   ÚlistÚkeysrÏ   )r;   rÿ   r   rì   r¥   r  Úvalid_commandÚsplit_inputr  Únew_generate_flagsÚflagÚexample_nameÚexample_errors                r0   Úhandle_non_exit_user_commandsÚ"Chat.handle_non_exit_user_commands‘  s“  € ð ˆà˜Ó!Ü# D×$6Ñ$6Ó7ˆDØ�O‰OÖà˜7Ó"Ø× Ñ Ö"à×"Ñ" 7×+Ñ+´°J×4DÑ4DÓ4FÓ0GÈ!Ó0KØ$×*Ñ*Ó,ˆKô �{Ó# qÓ(ð ˜A’ä—W‘W—\‘\ $×"2Ñ"2°D·M±MÀUÌ4Ï=Ê=ÐYlÓKmÐJnÐnsÐCtÓuð ô
 ˜x¸T¿]¹]ÒKØ×!Ñ!¨¸°zÀÐ'CÈ7Ð!ÓSà×"Ñ" 6×*Ñ*ð ",¨A¨B ×!5Ñ!5Ó!7ÐØ!3×!9Ñ!9Ó!;Ðã*�Ø˜d•?Ø×)Ñ)àFÀtÀfð MAð Að $ð *ñ ò ñ +ð —’ÑIÔ 4Ð5GÓ HÓIà×"Ñ" :×.Ñ.´3°z×7GÑ7GÓ7IÓ3JÈaÓ3OØ%×+Ñ+Ó-¨aÑ0ˆLØÓ'Ø—‘Ô!Ø�Ø×,Ñ,¨XÑ-CÀFÑ-KÔLØ—‘ V¸Ñ8NÈvÑ8VÑWÕXð ˜|˜nÐ,VÔW[Ð\d×\iÑ\iÓ\kÓWlÐVmÐmnÐoð ð ×%Ñ%¨=ÀÐ%ÒFà˜9Ó$Ø×"Ñ"¨&Ð"Ò1ð "ˆMØ×!Ñ!¨¨:¨,Ð6eÐ'fÐnsÐ!ÑtØ× Ñ Ô"à FÐ*Ð*r2   c           	   ƒ   ó:	  #   • [        U R                  U R                  U R                  S9nUR	                  5         [        U R                  5      nUR                  SS9  UR                  U R                  5        U R                  n[        U R                  S9 IS h  v•N nS n  Ub  UnS nUR                  U5        OUR                  5       nUS:X  a  GO€US:X  a'  [        U R                  5      nUR	                  5         M`  US:X  a  UR                  5         Mx  UR                  S5      (       a¹  [        UR                  5       5      S	:  aœ  UR                  5       n[        U5      S	:X  a  US
   OL[         R"                  R%                  U R&                  U R                  S[(        R*                  " S5       S35      n[-        X‚U R.                  S9  UR1                  SU S3SS9  GMG  UR                  S5      (       af  USS  R3                  5       n	U	R                  5       n	U	 H  n
SU
;  d  M  UR1                  SU
 S3SS9    O   UR4                  " S,0 [7        U	5      D6  GMÃ  UR                  S5      (       aÒ  [        UR                  5       5      S	:X  aµ  UR                  5       S
   nX°R8                  ;   aX  UR	                  5         / nUR                  U R8                  U   S   5        UR;                  SU R8                  U   S   S.5        O¤SU S[=        U R8                  R?                  5       5       S3nUR1                  USS9  OiUS :X  a  URA                  US!9  GMÃ  UR                  S5      (       a'  UR1                  S"U S#3SS9  UR                  5         GM   UR;                  SUS.5        URC                  5       U R                  S$.nURE                  USU R                  US%9nURG                  U5      I S h  v•N u  nnUR;                  S&US.5        US':X  a-  UR1                  S(S)5        URI                  S*5      (       a  S+nGM°  GM²  S S S 5      IS h  v•N   g  GNË Ne! [J         a     M#  f = f N! , IS h  v•N  (       d  f       g = f7f)-N)r6   r7   r%   T)r{   )r%   z!exitr  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r@   r  r  r  r  r  r   rÙ   r  r  r  r  r  r  r  r  )rÝ   r�   )r>   r�   Ú
extra_bodyÚ	assistantÚlengthz2Generation stopped after reaching the token limit.ÚyellowzContinue generating?u'   Please continue. Do not repeat text.â€�r�   )&r4   r6   rÙ   r%   rg   r   rÚ   r   rÌ   r¥   r
   rj   rd   rS   rÃ   r!  r"  r*   rT   rÛ   rJ   r#  r$  rç   ro   rU   rV   rå   rì   rR   r%  r&  rÏ   Úto_json_stringÚchat_completionr`   ry   ÚKeyboardInterrupt)r;   r   r  r¥   ÚclientÚpending_user_inputrÿ   r(  r  r)  r*  r+  r,  r0  r>   Úmodel_outputrC   s                    r0   rñ   ÚChat._inner_runÛ  s–  é € Ü!¨4¯=©=À$Ç)Á)ÐVZ×VcÑVcÑdˆ	Ø�‰ÔÜ × 2Ñ 2Ó3ˆð 	×Ñ TÐÑ*Ø×"Ñ" 4§=¡=Ô1à—‘ˆä'°·±×?Ò?À6Ø-1ÐØðfØ)Ñ5Ø%7˜
Ø-1Ð*Ø!×4Ñ4°ZÕ@à%.§_¡_Ó%6˜
ð " WÓ,Ùà# xÓ/Ü/°×0BÑ0BÓC˜Ø!Ÿ™Ô)Ù à# wÓ.Ø!×,Ñ,Ô.Ù à#×.Ñ.¨w×7Ñ7¼CÀ
×@PÑ@PÓ@RÓ<SÐVWÓ<WØ&0×&6Ñ&6Ó&8˜ô  # ;Ó/°1Ó4ð (¨šNä!#§¡§¡Ø $× 0Ñ 0°$·-±-À5ÌÏÊÐWjÓIkÐHlÐlqÐAró"ð !ô "¨8ÈÏÉÒWØ!×-Ñ-°^ÀHÀ:ÈQÐ3OÐW^Ð-Ñ_Ú à#×.Ñ.¨v×6Ñ6ð .8¸¸¨^×-AÑ-AÓ-CÐ*Ø-?×-EÑ-EÓ-GÐ*ã$6˜DØ"¨$�Ø )× 5Ñ 5à*RÐSWÐRXð YMð )Mð +0ð !6ñ !"ñ !&ñ %7ð #ŸMšMÑUÔ,@ÐASÓ,TÒUÚ à#×.Ñ.¨z×:Ñ:¼sÀ:×CSÑCSÓCUÓ?VÐZ[Ó?[Ø'1×'7Ñ'7Ó'9¸!Ñ'<˜Ø'¯=©=Ó8Ø%ŸO™OÔ-Ø#%˜DØ%×8Ñ8¸¿¹À|Ñ9TÐU[Ñ9\Ô]Ø ŸK™K°ÀDÇMÁMÐR^ÑD_Ð`fÑDgÑ(hÕià.6°|°nÐDnÔosÐtx÷  uBñ  uB÷  uGñ  uGó  uIó  pJð  oKð  KLð  -M˜MØ%×1Ñ1°}ÈEÐ1ÒRà# yÓ0Ø!×.Ñ.°fÐ.Ñ=Ú à#×.Ñ.¨s×3Ñ3Ø!×-Ñ-Ø#$ Z LÐ0_Ð!`Ðhmð .ñ ð "×,Ñ,Ô.Ú ð Ÿ™¨VÀ
Ñ$KÔLð .4×-BÑ-BÓ-DØ!%§¡ñ"�Jð
 $×3Ñ3ØØ#Ø"Ÿm™mØ#-ð	 4ð �Fð 9B×8OÑ8OÐPVÓ8W×2WÑ/�L -à—K‘K¨ÀÑ NÔOà$¨Ó0Ø!×-Ñ-Ð.bÐdlÔmØ$×,Ñ,Ð-C×DÑDØ1ZÐ.Ú$òK ÷ @×?Ó?ñ~ 3Xøô )ó Úðú÷Q @×?×?Ð?üsÝ   ‚BRÂQ)ÂRÂ"RÂ'/Q.ÃRÃ+Q.ÄRÄQ.ÄRÄCQ.Ç)RÇ,AQ.È23Q.É%RÉ(C=Q.Í%RÍ(:Q.Î"RÎ%A!Q.ÐQ,ÐAQ.ÑRÑRÑ#Q?Ñ$RÑ,Q.Ñ.
Q<Ñ8RÑ;Q<Ñ<RÑ?RÒRÒR
ÒRÒR)r%   r¥   rì   r6   rÛ   rç   rÚ   rÙ   )rž   rŸ   r    r¡   Ú__doc__râ   r   rÑ   ÚtyperÚArgumentr%  ÚOptionr<   Ústaticmethodrã   r4   Údictr   rÒ   r-  rñ   r¢   r�   r2   r0   rÕ   rÕ   5  s  † Ù2ð Ð+¨JÑ7Ð8¸Ð:OÐPVÑ:WÐ9XÐYð ð
 ØTXØYjØhlð ñAD'à˜C §¢Ð5pÑ!qÐqÑrðD'ð Ø�$‰J˜ŸšÐ,eÑfÐfñ
ðD'ð "Ø�‰I˜ÑØ�NŠNð[ñð	ñ
ðD'ð& Ø�$‰JØ�LŠLÐkÑlðnñ
ð'D'ð. !  t¡¨U¯\ª\Ð?OÑ-PÐ!PÑQð/D'ð0 ˜s E§L¢LÐ6TÑ$UÐUÑVð1D'ð2 !  t¡¨U¯\ª\Ð?cÑ-dÐ!dÑeð3D'ð6 %Ø�$‰JØ�LŠLð gñðñ
ð7D'ðB 
õCD'ðL ñó ðð H+àðH+ð !ðH+ð �s˜D  c ™NÐ*Ñ+ð	H+ð
 !ðH+ð �4‰jðH+ð 
ˆt�D‰zÐ+Ð+Ñ	,ôH+õTtr2   rÕ   rÝ   c                 óü   • U c
  [        5       $ SU ;   aT  [        R                  R                  U 5      n[        R                  R	                  U 5      n[         R
                  " X5      $ [         R
                  " U 5      $ )Nr
  )r   r"  r*   ÚdirnameÚbasenameÚfrom_pretrained)rÝ   rB  r  s      r0   rä   rä   R  se   € ØÑ ÜÓ!Ð!àÐ#Ó#Ü—'‘'—/‘/Ð"3Ó4ˆÜ—7‘7×#Ñ#Ð$5Ó6ˆÜ×/Ò/°ÓBÐBä×/Ò/Ð0AÓBÐBr2   rØ   c           	      ó²  • U b  [        U 5      S:X  a  0 $ U  Vs/ s H  nSU;  d  M  UPM     nnU(       a)  [        R                  " SSR                  U5       S35      eU  Vs0 s H2  nSUR	                  SS5      S   -   S-   UR	                  SS5      S   _M4     nnUR                  5        VVs0 s H+  u  pEXER                  5       S;   a  UR                  5       OU_M-     nnnUR                  5        VVs0 s H  u  pEXES	:X  a  S
OU_M     nnnS[        S[        4S jnUR                  5        VVs0 s H  u  pEXF" U5      (       d  SU S3OU_M     nnnSR                  UR                  5        VVs/ s H  u  pEU SU 3PM     snn5      nSU-   S-   nUR                  SS
5      nUR                  SS5      nUR                  SS5      nUR                  SS5      nUR                  SS5      n [        R                  " U5      nU$ s  snf s  snf s  snnf s  snnf s  snnf s  snnf ! [        R                   a    [        SU  SU 35      ef = f)zUParses the generate flags from the user input into a dictionary of `generate` kwargs.r   r  r  r$   r  Ú"r  )ÚtrueÚfalseÚNoneÚnullÚsr&   c                 óf   • U R                  S5      n U R                  SSS5      R                  5       $ )NÚ-r  r)   r  )ÚremoveprefixÚreplaceÚisdigit)rK  s    r0   Ú	is_numberÚ'parse_generate_flags.<locals>.is_numberw  s,   € à�N‰N˜3ÓˆØ�y‰y˜˜b !Ó$×,Ñ,Ó.Ð.r2   z, z: Ú{Ú}z"null"z"true"rG  z"false"rH  z"[Ú[z]"rn   zPFailed to convert `generate_flags` into a valid JSON object.
`generate_flags` = z
Converted JSON string = )rÃ   r<  ÚBadParameterrT   r!  r¼   rv   rÑ   rÓ   rO  r„   rÆ   ÚJSONDecodeErrorrù   )	rØ   r*  Úinvalid_flagsÚgenerate_flags_as_dictÚkÚvrQ  Úgenerate_flags_stringÚprocessed_generate_flagss	            r0   rå   rå   ^  s£  € àÑ¤ ^Ó!4¸Ó!9Øˆ	á&4ÓH¢n˜d¸À4¹—T¡n€MÐHÞÜ× Ò Ø6°v·{±{À=Ó7QÐ6Rð S1ð 1ó
ð 	
ñ drÓrÒcqÐ[_˜c D§J¡J¨s°AÓ$6°qÑ$9Ñ9¸CÑ?ÀÇÁÈCÐQRÓASÐTUÑAVÒVÑcqÐÐrð
 Ka×JfÑJfÔJhôÚJhÁ$À!ˆŸ™›	Ð%6Ó6ˆ1�7‰7Œ9¸AÒ=ÑJhð ñ ð Ka×JfÑJfÔJhÔiÒJhÁ$À!˜a°«;¡¸AÒ=ÑJhÐÑið/”Sð /œTô /ð
 Rh×QmÑQmÔQoÔpÒQoÉÈ˜a°¸1·± 1 Q C q¡À1ÒDÑQoÐÑpð
 !ŸI™IÐ?U×?[Ñ?[Ô?]Ô&^Ò?]±t°q¨!¨¨B¨q¨c£{Ñ?]Ò&^Ó_Ðð  Ð"7Ñ7¸#Ñ=Ðð 2×9Ñ9¸(ÀFÓKÐØ1×9Ñ9¸(ÀFÓKÐØ1×9Ñ9¸)ÀWÓMÐØ1×9Ñ9¸$ÀÓDÐØ1×9Ñ9¸$ÀÓDÐð
Ü#'§:¢:Ð.CÓ#DÐ ð $Ð#ùòe Iùò sùóùó jùó qùó
 '_øô ×Ñó 
Üð$Ø$2Ð#3Ø(Ð)>Ð(?ðAó
ð 	
ð
ús4   ™
H§HÁ#9HÂ12HÃ9HÄ6!H$Å8H*
Ç6H0 È0&IrÚ   c                 ó    • U (       a  SU S./$ / $ )z Returns a new chat conversation.Úsystemr  r�   )rÚ   s    r0   r   r   ˜  s   € æ=J�X¨-Ñ8Ð9ÐRÐPRÐRr2   r  r  rç   c                 ó   • [         R                  " [         R                  R                  U 5      SS9  [	        U S5       n[
        R                  " X!S.USS9  SSS5        [         R                  R                  U 5      $ ! , (       d  f       N-= f)z!Saves the chat history to a file.T)Úexist_okÚw)rç   Úchat_historyr@   )ÚindentN)r"  Úmakedirsr*   rB  ré   r„   ÚdumpÚabspath)r  r  rç   rò   s       r0   r$  r$  �  s]   € ä‡K‚K”—‘—‘ Ó)°DÒ9Ü	ˆh˜Ô	 Ü�	Š	˜xÑ>ÀÈ!ÒL÷ 
ä�7‰7�?‰?˜8Ó$Ð$÷ 
Õ	ús   ¿A?Á?
Bc                  óÄ   • [         R                  " 5       S:X  a  [        R                  " 5       $ [        R
                  " [        R                  " 5       5      R                  $ )z)Returns the username of the current user.r   )Úplatformr_  r"  ÚgetloginÚpwdÚgetpwuidÚgetuidÚpw_namer�   r2   r0   rè   rè   ¥  s8   € ä‡‚Ó˜IÓ%Ü�{Š{‹}Ðä�|Š|œBŸIšI›KÓ(×0Ñ0Ð0r2   Ú__main__z meta-llama/Llama-3.2-3b-Instruct)r6   r9   )Hrï   r„   r"  ri  rO   ÚstringrJ   Úcollections.abcr   r   Útypingr   r   Úurllib.parser   r   r	   r÷   r¿   r<  rê   Úhuggingface_hubr
   r   Útransformersr   Útransformers.utilsr   Úreadlinerî   r_  rk  Úrichr   Úrich.consoler   Ú	rich.liver   Úrich.markdownr   Úrich.progressr   r   r   r   r   Ú	rich.textr   râ   ÚsetÚascii_lettersÚ
whitespaceÚALLOWED_KEY_CHARSÚdigitsÚALLOWED_VALUE_CHARSrí   r}   rT   r&  r~   rÑ   r1   r4   rÕ   rä   r%  r@  rå   r   r$  rè   rž   r�   r2   r0   Ú<module>r„     s4  ðó Û Û 	Û Û 	Û Û ß 4ß !ß 6Ñ 6ã Û Û Û ß Lå )Ý 0ð	Ûð
 ‡?‚?Ó˜	Ó!Ûá×ÑÝÝ$ÝÝ&ß`Õ`Ýà%0¸$Ñ?Ð Ù˜×,Ñ,¨v×/@Ñ/@Ñ@ÓAÐ ÙØ
×Ñ˜6Ÿ=™=Ñ(¨6×+<Ñ+<Ñ<Ð?bÑbóÐ ð
 ÐMÐNàð)ðð ÐQÐRØÐNÐOØÐ.Ð/ØÐJÐKØÐ?Ð@ñÐ ð 	Ð ð	ð "Ÿ;™;Ð'7×'<Ñ'<Ó'>Ó?Ð@ð Að€ð&H 3ð H¨3ô H÷Añ A÷HZñ Zðz	C¨c°D©jð 	CÐ=Mô 	Cð7$¨¨c©°TÑ)9ð 7$¸dô 7$ñtS C¨$¡Jð S¸$¸t¹*õ Sð
%˜ð % 4¨¡:ð %¸ð %À#ô %ð1�cô 1ð ˆzÓÙÐ4Ó5ð øðQ ó 	âð	ús   ÁF/ Æ/F9Æ8F9