+
    QV-jq  ã                   ó\  € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtH	t	 ^ RI
HtHt ^ RIHtHt ^ RIt^ RIt^ RIt^ RIt^ RIHtHt ^ RIHt ^ RIHt  ^ RIt]P:                  ! 4       R8w  d   ^ RIt]! 4       '       d-   ^ R	IH t  ^ R
I!H"t" ^ RI#H$t$ ^ RI%H&t& ^ RI'H(t(H)t)H*t*H+t+H,t, ^ RI-H.t. RRRR/t/]0! ]Pb                  ]Pd                  ,           4      t3]0! ]Pb                  ]Ph                  ,           ]Pd                  ,           R,           4      t5RRR/RRR/RRR/RRR/RRR/RRR /R!RR"//t6R#t7R$R%Pq                  ]6Ps                  4       4       R&2t: ! R' R(4      t; ! R) R*4      t<R+ R, lt=R- R. lt>R8R/ R0 llt?R1 R2 lt@R3 R4 ltA]BR58X  d   ]<! R6R77       R# R#   ] d     ELLi ; i)9é    N)ÚAsyncIteratorÚ	Awaitable)Ú	AnnotatedÚAny)ÚurljoinÚurlparse)ÚAsyncInferenceClientÚChatCompletionStreamOutput©ÚGenerationConfig)Úis_rich_availableÚWindows)Úfilesize)ÚConsole)ÚLive)ÚMarkdown)Ú	BarColumnÚProgressÚProgressColumnÚ
TextColumnÚTimeElapsedColumn)ÚTextÚhostnameÚ	localhostÚporti@  z .!\"#$%&'()*+,\-/:<=>?@[]^_`{|}~ÚllamaÚtextz5There is a Llama in my lawn, how can I get rid of it?ÚcodezyWrite a Python function that integrates any Python function f(x) numerically over an arbitrary interval [x_start, x_end].Ú
helicopterz4How many helicopters can a human eat in one sitting?Únumbersz4Count to 10 but skip every number ending with an 'e'ÚbirdszWhy aren't birds real?Úsocksz2Why is it important to eat socks after meditating?Únumbers2z$Which number is larger, 9.9 or 9.11?aŒ  

**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: `z`, `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
c                   óÐ   a € ] tR t^jt o V 3R lR ltV 3R lR ltV 3R lR ltR tV 3R lR	 ltV 3R
 lR lt	RV 3R lR llt
RV 3R lR lltV 3R lR ltV 3R lR ltRtV tR# )ÚRichInterfacec                ó,   <€ V ^8„  d   QhRS[ RS[ RS[ /# )é   Úmodel_idÚuser_idÚbase_url©Ústr)ÚformatÚ__classdict__s   "€Úf/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/transformers/cli/chat.pyÚ__annotate__ÚRichInterface.__annotate__k   s"   ø€ ÷ !ñ !¡ð !©sð !¹cñ !ó    c                óH   € \        4       V n        Wn        W n        W0n        R # ©N)r   Ú_consoler(   r)   r*   )Úselfr(   r)   r*   s   &&&&r/   Ú__init__ÚRichInterface.__init__k   s   € Ü›	ˆŒØ ŒØŒØ Žr2   c                óz   <€ V ^8„  d   QhRS[ S[S[,          ,          RS[S[S[S[,          R,          3,          /# )r'   ÚstreamÚreturnN)r   r   r
   Útupler,   r   )r-   r.   s   "€r/   r0   r1   q   s;   ø€ ÷ ;#ñ ;#Ù¡Ñ.HÕ IÕJð;#á	‰s‘C™#•I Õ$Ð$Õ	%ñ;#r2   c           	   ƒ  óÊ  "  € V P                   P                  R V P                   R24       \        V P                   ^R7      ;_uu_ 4       pRp^ p\        P                  ! 4       pRpVG Rj  x€L
   Rj  x€L
  pVP
                  ^ ,          P                  P                  p\        VP
                  ^ ,          RV4      p\        VRR4      p	V	e   \        V	RV4      pV'       g   Kw  \        P                  ! RR	V4      pW8,          p. p
VP                  4        FO  pV
P                  V4       VP                  R
4      '       d   V
P                  R4       K>  V
P                  R4       KQ  	  \        RP                  V
4      P!                  4       RR7      pVP#                  VRR7       EK<   ELA EL;ED= RRR4       M  + '       g   i     M; i\        P                  ! 4       X,
          pT^ 8”  dQ   X^ 8”  dJ   YM,          pT P                   P                  4        T P                   P                  RT RTR RTR R24       T P                   P                  4        XX3# 5i)z[bold blue]<z>:)ÚconsoleÚrefresh_per_secondÚ NÚ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])r5   Úprintr(   r   ÚtimeÚchoicesÚdeltaÚcontentÚgetattrÚreÚsubÚ
splitlinesÚappendÚ
startswithr   ÚjoinÚstripÚupdate)r6   r:   Úliver   rC   Ú
start_timerA   ÚtokenÚoutputsrB   ÚlinesÚlineÚmarkdownÚelapsedÚtok_per_secs   &&             r/   Ústream_outputÚRichInterface.stream_outputq   sÿ  é € ð 	�‰×Ñ˜l¨4¯=©=¨/¸Ð<Ô=Ü˜$Ÿ-™-¸A×>Õ>À$ØˆDØ !ÐÜŸš›ˆJØ(,ˆMØ%+Ÿ|˜|÷ )4ð )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Ø�‰×ÑÔà�]Ð"Ð"ùsW   ‚A	I#Á!F?Á,F-Á-F?Á1F3Á5F0
Á6F3Á9A,F?Ã&CF?Æ0F3Æ3F?Æ6	I#Æ?G	Ç
BI#c                ó    <€ V ^8„  d   QhRS[ /# ©r'   r;   r+   )r-   r.   s   "€r/   r0   r1   ®   s   ø€ ÷ ñ ‘sñ r2   c                óŒ   € V P                   P                  RV P                   R24      pV P                   P                  4        V# )z!Gets user input from the console.ú[bold red]<z>:
)r5   Úinputr)   rG   )r6   rd   s   & r/   rd   ÚRichInterface.input®   s8   € à—‘×#Ñ# k°$·,±,°¸tÐ$DÓEˆØ�‰×ÑÔØˆr2   c                ó:   € V P                   P                  4        R# )zClears the console.N)r5   Úclear)r6   s   &r/   rg   ÚRichInterface.clear´   s   € à�‰×ÑÖr2   c                ó    <€ V ^8„  d   QhRS[ /# )r'   r   r+   )r-   r.   s   "€r/   r0   r1   ¸   s   ø€ ÷ ñ ¡sñ r2   c                ó�   € V P                   P                  RV P                   RV 24       V P                   P                  4        R# )z%Prints a user message to the console.rc   z>:[/ bold red]
N)r5   rG   r)   )r6   r   s   &&r/   Úprint_user_messageÚ RichInterface.print_user_message¸   s6   € à�‰×Ñ˜k¨$¯,©,¨Ð7GÈÀvÐNÔOØ�‰×ÑÖr2   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# )r'   r   Úcolorr+   )r-   r.   s   "€r/   r0   r1   ½   s   ø€ ÷ ñ ¡ð ©Cñ r2   c                ó|   € V P                   P                  RV RV 24       V P                   P                  4        R# )z,Prints text in a given color to the console.z[bold Ú]N)r5   rG   )r6   r   rn   s   &&&r/   Úprint_colorÚRichInterface.print_color½   s1   € à�‰×Ñ˜f U G¨1¨T¨FÐ3Ô4Ø�‰×ÑÖr2   c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r'   ÚmessageÚdefaultr;   ©r,   Úbool)r-   r.   s   "€r/   r0   r1   Â   s"   ø€ ÷ 
(ñ 
(™sð 
(©Tð 
(¹dñ 
(r2   c                óì   € V'       d   RMRpV P                   P                  RV RV R24      pV P                   P                  4        VP                  4       P	                  4       pV'       g   V# VR9   # )zFDisplays a yes/no prompt to the user, returning True for confirmation.zY/nzy/Nz[bold yellow]z (z): >   ÚyÚyes)r5   rd   rG   rS   Úlower)r6   rt   ru   Údefault_hintÚresponses   &&&  r/   ÚconfirmÚRichInterface.confirmÂ   sf   € ç '‘u¨UˆØ—=‘=×&Ñ&¨°w°i¸rÀ,ÀÈsÐ'SÓTˆØ�‰×ÑÔà—>‘>Ó#×)Ñ)Ó+ˆßØˆNà˜<Ñ'Ð'r2   c                ó    <€ V ^8„  d   QhRS[ /# )r'   Úminimal)rw   )r-   r.   s   "€r/   r0   r1   Î   s   ø€ ÷ ñ ¡$ñ r2   c                ó¦   € V P                   P                  \        V'       d   \        M\        4      4       V P                   P                  4        R# )z'Prints the help message to the console.N)r5   rG   r   ÚHELP_STRING_MINIMALÚHELP_STRING)r6   r�   s   &&r/   Ú
print_helpÚRichInterface.print_helpÎ   s.   € à�‰×ÑœH¿GÕ%8ÌÓUÔVØ�‰×ÑÖr2   c                ó    <€ V ^8„  d   QhRS[ /# )r'   Úmodelr+   )r-   r.   s   "€r/   r0   r1   Ó   s   ø€ ÷ Pñ P¡cñ Pr2   c                óœ  aaa€ \         P                  ! V P                  P                  R 4       R2RS/RR7      pVP	                  4         ! R R\
        4      pRRR	R
RRRR/oV P                  P                  \        S4      ^,           ^F,           8¬  oVVV3R lp\        \        R4      \        ^(R7      V! 4       \        4       V P                  R7      pVP                  V! R4      RR7      pRp\        WPP                  RR7      ;_uu_ 4        VP                  4        EF  pV'       d   VP!                  R4      '       g   K%  \"        P$                  ! VR,          4      p	V	P'                  R4      p
V
R8X  d   V	P'                  RR4      p M¯V
R8X  d   \)        V	P'                  RR4      4      hV
R8X  g   K™  V	P'                  R 4      pV	P'                  R!4      pV! V4      pV'       d:   VR8X  d   R"MR#pVP+                  WmVR$,          VP'                  R%4      VR&7       EK  VP+                  Wm^ RR'7       EK  	  RRR4       V'       d*   V P                  P-                  \/        R(S R)24      4       M(V P                  P-                  \/        R(S R*24      4       V P                  P-                  4        R#   + '       g   i     L…; i)+Ú/z/load_modelrˆ   T)Újsonr:   c                   ó&   a € ] tR t^×t o R tRtV tR# )Ú3RichInterface.print_model_load.<locals>.StatsColumnc                óÖ  € VP                   '       g   \        R 4      # VP                  P                  R4      R8X  dø   \        P
                  ! \        VP                  4      4      p\        P
                  ! \        VP                   4      4      pVP                  '       d.   R\        P
                  ! \        VP                  4      4       R2MR pVP                  e?   R\        VP                  ^<,          4       R\        VP                  ^<,          4      R 2pMR p\        V RV V V 2RR	7      # \        \        VP                  4       R\        VP                   4       24      # )
r@   ÚunitÚbytesz  z/sÚ:Ú02drŠ   zprogress.download)Ústyle)
Útotalr   ÚfieldsÚgetr   ÚdecimalÚintÚ	completedÚspeedÚtime_remaining)r6   ÚtaskÚdoneÚtotrš   Úetas   &&    r/   ÚrenderÚ:RichInterface.print_model_load.<locals>.StatsColumn.renderØ   s  € Ø—z—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__Ú__classdictcell__©r.   s   @r/   ÚStatsColumnr�   ×   s   ø‡ € ÷Hð Hr2   rª   Ú	processorzLoading processorÚconfigzLoading configÚdownloadzDownloading filesÚweightszLoading into memoryc                 óH   <€ SP                  W 4      pS'       d   S R V 2# V# )u     â†’  )r–   )Ú	stage_keyÚ
stage_textrˆ   Úshow_model_prefixÚstage_labelss   & €€€r/   Ú_labelÚ.RichInterface.print_model_load.<locals>._labelô   s-   ø€ Ø%×)Ñ)¨)Ó?ˆJß Ø˜ ¨
 |Ð4Ð4ØÐr2   z[bold]{task.description})Ú	bar_width)r>   N)r”   F)r>   Ú	transients   data: :é   NNÚstatusÚreadyÚcachedÚerrorrt   zUnknown errorÚloadingÚstageÚprogressr�   ÚitemsÚcurrentr”   )Údescriptionr™   r”   r�   )rÂ   r™   r”   z_*z was already loaded.*_z is warm.*_)ÚrequestsÚpostr*   ÚrstripÚraise_for_statusr   r5   ÚwidthÚlenr   r   r   r   Úadd_taskr   Ú
iter_linesrQ   r‹   Úloadsr–   ÚRuntimeErrorrT   rG   r   )r6   rˆ   r}   rª   r´   r¿   Útask_idr»   rZ   Úeventr¹   r¾   ÚprogÚlabelr�   r²   r³   s   &f             @@r/   Úprint_model_loadÚRichInterface.print_model_loadÓ   s^  ú€ Ü—=’= D§M¡M×$8Ñ$8¸Ó$=Ð#>¸kÐ!JÐRYÐ[`ÐQaÐjnÔoˆØ×!Ñ!Ô#ô	Hœ.ô 	Hð& Ð,ØÐ&ØÐ+ØÐ,ð	
ˆð !ŸM™M×/Ñ/´3°u³:Àµ>ÀBÕ3FÑFÐ÷	ô ÜÐ1Ó2Ü Ô#Ù‹MÜÓØ—M‘Mô
ˆð ×#Ñ#¡F¨;Ó$7¸tÐ#ÓDˆØˆä�(§M¡M¸T×BÖ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    Ä3J;ÅA1J;Æ:1J;Ç,AJ;Ê;K	c                ó    <€ V ^8„  d   QhRS[ /# )r'   r¬   r   )r-   r.   s   "€r/   r0   r1   %  s   ø€ ÷ ñ Ñ#3ñ r2   c                óÈ   € V P                   P                  RV P                   R24       V P                   P                  RV 24       V P                   P                  4        R# )zFPrints the status of the model and generation settings to the console.z[bold blue]Model: rD   z[bold blue]N)r5   rG   r(   )r6   r¬   s   &&r/   Úprint_statusÚRichInterface.print_status%  sK   € à�‰×ÑÐ0°·±°¸rÐBÔCØ�‰×Ñ˜k¨&¨Ð2Ô3Ø�‰×ÑÖr2   )r5   r*   r(   r)   N)F)r£   r¤   r¥   r¦   r7   r^   rd   rg   rk   rq   r~   r…   rÑ   rÕ   r§   r¨   r©   s   @r/   r%   r%   j   sh   ø‡ € ÷!ð !÷;#ð ;#÷zð ò÷ð ÷
ð ÷

(ò 
(÷ò ÷
Pð P÷dö r2   r%   c                   ó˜   a € ] tR tRt o RtR]R,           R]R,           2RRRRRR3V 3R	 lR
 llt]R 4       tV 3R lR lt	R t
RtV tR# )ÚChati,  ú(Chat with a model from the command line.zhttp://r   r‘   r   Nz./chat_history/c                ór  <€ V ^8„  d   QhRS[ S[S[P                  ! RR7      3,          RS[ S[R,          S[P                  ! RR7      3,          RS[ S[S[,          R,          S[P                  ! RR7      3,          R	S[ S[R,          S[P
                  ! R
R7      3,          RS[ S[R,          S[P
                  ! RR7      3,          RS[ S[S[P
                  ! RR7      3,          RS[ S[R,          S[P
                  ! RR7      3,          RS[ S[R,          S[P
                  ! RR7      3,          RR/	# )r'   r(   z9ID of the model to use (e.g. 'HuggingFaceTB/SmolLM3-3B').)Úhelpr*   Nz7Base 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 <base_url> <model_id> 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;   )r   r,   ÚtyperÚArgumentÚlistÚOption)r-   r.   s   "€r/   r0   ÚChat.__annotate__1  sO  ø€ ÷ D'ñ 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'r2   c	                ó2  € W n         \        V P                   4      p	V	P                  \        R,          8X  d8   V	P                  \        R,          8X  d   V P                  V P                   4       Wn        WPn        W`n        \        V4      p
V
P                  RRR7       V
P                  ! R/ \        V4      B  W n        RVRVRV P                  P                  4       /V n        Ve   TM	\        4       V n        V'       d9   \#        V4      ;_uu_ 4       p\$        P&                  ! V4      V n        R	R	R	4       M\*        V n        \-        4       '       g   \/        R
4      h\0        P2                  ! V P5                  4       4       R	#   + '       g   i     LQ; i)rÙ   r   r   Té   )Ú	do_sampleÚmax_new_tokensr*   r(   r¬   NzHYou need to install rich to use the chat interface. (`pip install rich`)r¢   )r*   r   r   ÚDEFAULT_HTTP_ENDPOINTr   Úcheck_healthr(   rÞ   rß   Úload_generation_configrT   Úparse_generate_flagsr¬   Úto_dictÚsettingsÚget_usernamerÝ   ÚopenÚyamlÚ	safe_loadÚexamplesÚDEFAULT_EXAMPLESr   ÚImportErrorÚasyncioÚrunÚ
_inner_run)r6   r(   r*   rÜ   rÝ   rÞ   rß   rà   rá   Úparsedr¬   Úfs   &&&&&&&&&   r/   r7   ÚChat.__init__1  s1  € ðF !Œä˜$Ÿ-™-Ó(ˆØ�?‰?Ô3°JÕ?Ô?ÀFÇKÁKÔShÐioÕSpÔDpØ×Ñ˜dŸm™mÔ,à ŒØ*ÔØ&Ôô (Ð(9Ó:ˆØ�‰ °SˆÔ9Ø�ŠÑ=Ô,¨^Ó<Ò=ØŒà# X¨z¸8ÀXÈtÏ{É{×ObÑObÓOdÐeˆŒð !Ò,‘D´,³.ˆŒ	÷ Ü�m×$Ô$¨Ü $§¢¨qÓ 1�”÷ %Ð$ô -ˆDŒMô !×"Ò"ÜÐhÓiÐiô 	�Š�D—O‘OÓ%Ö&÷ %×$ús   ÄFÆF	c                ó  € \        V R ,           R4      p \        P                  ! V4      pVP                  ^È8w  d   \	        RV  RVP                   R24      h R#   \        P
                   d    \	        RT  R24      hi ; i)rŠ   Úhealthz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   Úhttpxr–   Ústatus_codeÚ
ValueErrorÚConnectError)ÚurlÚ
health_urlÚoutputs   &  r/   rì   ÚChat.check_healthw  sœ   € ä˜S 3�Y¨Ó1ˆ
ð
	Ü—Y’Y˜zÓ*ˆFØ×!Ñ! SÔ(Ü Ø,¨S¨EÐ1GÈ×HZÑHZÐG[Ð[vÐwóð ð )ñ øô ×!Ñ!ô 	ÜØ1°#°ð 7oð póð ð	ús   •AA Á%B c                ó    <€ V ^8„  d   QhRS[ RS[RS[S[ S[S[ S[ 3,          3,          RS[RS[S[,          RS[S[S[,          S[3,          /# )r'   Ú
user_inputÚ	interfacerõ   r¬   Úchatr;   )r,   r%   Údictr   rä   r<   )r-   r.   s   "€r/   r0   ræ   ˆ  st   ø€ ÷ H+ñ H+áðH+ñ !ðH+ñ ‘s™D¡¡c �NÐ*Õ+ð	H+ñ
 !ðH+ñ ‘4�jðH+ñ 
‰t‘D�zÑ+Ð+Õ	,ñH+r2   c                ó”  € RpVR8X  d(   \        V P                  4      pVP                  4        EM•VR8X  d   VP                  4        EM|VP	                  R4      '       dÅ   \        VP                  4       4      ^8  d§   VP                  4       p\        V4      ^8X  d
   V^,          ML\        P                  P                  V P                  V P                  R\        P                  ! R4       R24      p\        W…V P                  R7       VP!                  R	V R
2RR7       EM¡VP	                  R4      '       do   VR,          P#                  4       p	V	P                  4       p	V	 F$  p
RV
9  g   K  VP!                  RV
 R2RR7        EM;	  VP$                  ! R / \'        V	4      B  EMVP	                  R4      '       dÃ   \        VP                  4       4      ^8X  d¥   VP                  4       ^,          pW³9   dT   VP                  4        . pVP)                  W;,          R,          4       VP+                  RRRW;,          R,          /4       MwRV R\-        VP/                  4       4       R2pVP!                  VRR7       MCVR8X  d   VP1                  VR7       M)RpVP!                  RV R2RR7       VP                  4        WVV3# )!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   rn   ú!setºé   NNÚ=ú(Invalid flag format, missing `=` after `ú;`. Please use the format `arg_1=value_1 arg_2=value_2 ...`.Úredú!exampler   ÚrolerÝ   rK   ú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…   rQ   rÈ   ÚsplitÚosÚpathrR   rß   r(   rH   ÚstrftimeÚ	save_chatrð   rq   rS   rT   rî   rk   rP   rä   ÚkeysrÕ   )r6   r	  r
  rõ   r¬   r  Úvalid_commandÚsplit_inputr  Únew_generate_flagsÚflagÚexample_nameÚexample_errors   &&&&&&       r/   Ú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×*Ò*ð ",¨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 V¨Y¸Õ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           
   ƒ  óö	  "  € \        V P                  V P                  V P                  R 7      pVP	                  4        \        V P                  4      pVP                  RR7       VP                  V P                  4       V P                  p\        V P                  R7      ;_uu_4       GRj  x€L
 pRp  Ve   TpRpVP                  V4       MVP                  4       pVR8X  d   EMÆVR8X  d(   \        V P                  4      pVP	                  4        Kc  VR8X  d   VP                  4        K|  VP                  R4      '       dÆ   \        VP                  4       4      ^8  d¨   VP                  4       p\        V4      ^8X  d
   V^,          ML\         P"                  P%                  V P&                  V P                  R	\(        P*                  ! R
4       R24      p\-        W‚V P.                  R7       VP1                  RV R2RR7       EKX  VP                  R4      '       do   VR,          P3                  4       p	V	P                  4       p	V	 F#  p
RV
9  g   K  VP1                  RV
 R2RR7        M	  VP4                  ! R,/ \7        V	4      B  EKÝ  VP                  R4      '       dí   \        VP                  4       4      ^8X  dÏ   VP                  4       ^,          pW°P8                  9   dj   VP	                  4        . pVP                  V P8                  V,          R,          4       VP;                  RRRV P8                  V,          R,          /4       M°RV R\=        V P8                  P?                  4       4       R2pVP1                  VRR7       MrVR8X  d   VPA                  VR 7       EKü  VP                  R4      '       d+   VP1                  R!V R"2RR7       VP                  4        EK=  VP;                  RRRV/4       R#VPC                  4       R$V P                  /pVPE                  VRV P                  VR%7      pVPG                  V4      G Rj  x€L
 w  ppVP;                  RR&RV/4       VR'8X  d2   VP1                  R(R)4       VPI                  R*4      '       d   R+pEKõ  EKø  EKû  RRR4      GRj  x€L
  R#  EL Ll  \J         d     K%  i ; i L  + GRj  x€L 
 '       g   i     R# ; i5i)-)r(   r)   r*   T)r�   )r*   Nz!exitr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r   r"  rÝ   rK   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¢   )&r%   r(   rÝ   r*   rg   r*  rÞ   r…   rÑ   r¬   r	   rk   rd   rQ   rÈ   r+  r,  r-  rR   rß   rH   r.  r/  rð   rq   rS   rT   rî   rõ   rP   rä   r0  rÕ   Úto_json_stringÚchat_completionr^   r~   ÚKeyboardInterrupt)r6   r
  r  r¬   ÚclientÚpending_user_inputr	  r2  r  r3  r4  r5  r6  r:  r:   Úmodel_outputrA   s   &                r/   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¨V°YÀ
Ð$KÔLð ,¨V×-BÑ-BÓ-DØ §¡ð"�Jð
 $×3Ñ3ØØ#Ø"Ÿm™mØ#-ð	 4ó �Fð 9B×8OÑ8OÐPVÓ8W×2WÑ/�L -à—K‘K ¨°iÀÐ NÔOà$¨Ô0Ø!×-Ñ-Ð.bÐdlÔmØ$×,Ñ,Ð-C×DÒDØ1ZÐ.Ú$ò Eò 1÷G @×?Ô?ñ~ 3Xøô )ô Úðú÷Q @×?×?Ó?üs   ‚B-S9Â/SÂ0S9Â3SÂ81SÃ)SÃ+,SÄSÄSÄ0SÄ2SÅ	CSÈSÈSÈ%0SÉ6SÊSÊSÊ*DSÎ/SÎ2SÏ	'SÏ0SÏ3A&SÑSÑASÒ&SÒ(	SÒ1S9Ò<SÒ=S9ÓSÓSÓSÓSÓSÓS9ÓS6	Ó"S%Ó#
S6	Ó.S6	Ó0	S9)r*   r¬   rõ   r(   rß   rð   rÞ   rÝ   )r£   r¤   r¥   r¦   Ú__doc__rë   r7   Ústaticmethodrì   r7  rú   r§   r¨   r©   s   @r/   rØ   rØ   ,  s|   ø‡ € Ù2ð Ð+¨JÕ7Ð8¸Ð:OÐPVÕ:WÐ9XÐYð ð
 ØTXØYjØhlð ÷AD'ò D'ðL ñó ð÷ H+ð H+÷Ttð tr2   rØ   c                ó>   € V ^8„  d   QhR\         R,          R\        /# )r'   rá   Nr;   )r,   r   )r-   s   "r/   r0   r0   I  s#   € ÷ 	Cñ 	C¬c°D­jð 	CÔ=Mñ 	Cr2   c                 ó   € V f   \        4       # RV 9   dU   \        P                  P                  V 4      p\        P                  P	                  V 4      p\         P
                  ! W4      # \         P
                  ! V 4      # )Nr  )r   r,  r-  ÚdirnameÚbasenameÚfrom_pretrained)rá   rI  r  s   &  r/   rí   rí   I  se   € ØÒ ÜÓ!Ð!àÐ#Ô#Ü—'‘'—/‘/Ð"3Ó4ˆÜ—7‘7×#Ñ#Ð$5Ó6ˆÜ×/Ò/°ÓBÐBä×/Ò/Ð0AÓBÐBr2   c                óT   € V ^8„  d   QhR\         \        ,          R,          R\        /# )r'   rÜ   Nr;   )rä   r,   r  )r-   s   "r/   r0   r0   U  s#   € ÷ 3$ñ 3$¬¬c­°TÕ)9ð 3$¼dñ 3$r2   c           	     óD  € V e   \        V 4      ^ 8X  d   / # V  Uu/ uF@  pRVP                  R4      ^ ,          ,           R,           VP                  R4      ^,          bKB  	  ppVP                  4        UUu/ uF,  w  r4Y4P                  4       R9   d   VP                  4       MTbK.  	  pppVP                  4        UUu/ uF  w  r4Y4R8X  d   RMTbK  	  pppR R lpVP                  4        UUu/ uF  w  r4Y5! V4      '       g   RV R2MTbK  	  pppR	P	                  VP                  4        UUu. uF  w  r4V R
V 2NK  	  upp4      pRV,           R,           pVP                  RR4      pVP                  RR4      pVP                  RR4      pVP                  RR4      pVP                  RR4      pVP                  RR4      p \        P                  ! V4      pV# u upi u uppi u uppi u uppi u uppi   \        P                   d    \        R4      hi ; i)zUParses the generate flags from the user input into a dictionary of `generate` kwargs.Ú"r  ÚtrueÚfalseÚNoneÚnullc                ó0   € V ^8„  d   QhR\         R\        /# )r'   Úsr;   rv   )r-   s   "r/   r0   Ú*parse_generate_flags.<locals>.__annotate__g  s   € ÷ /ñ /”Sð /œTñ /r2   c                 óf   € V P                  R 4      p V P                  RR^4      P                  4       # )Ú-r%  r@   )ÚremoveprefixÚreplaceÚisdigit)rT  s   &r/   Ú	is_numberÚ'parse_generate_flags.<locals>.is_numberg  s,   € à�N‰N˜3ÓˆØ�y‰y˜˜b !Ó$×,Ñ,Ó.Ð.r2   z, z: Ú{Ú}z"null"z"true"z"false"z"[Ú[z]"rp   r‘   z�Failed to convert `generate_flags` into a valid JSON object.
`generate_flags` = {generate_flags}
Converted JSON string = {generate_flags_string})rO  rP  )
rÈ   r+  rÀ   r{   rR   rY  r‹   rË   ÚJSONDecodeErrorr  )rÜ   r4  Úgenerate_flags_as_dictÚkÚvr[  Úgenerate_flags_stringÚprocessed_generate_flagss   &       r/   rî   rî   U  s<  € àÒ¤ ^Ó!4¸Ô!9Øˆ	ñ
 ^lÓlÑ]kÐUY˜c D§J¡J¨s£O°AÕ$6Õ6¸Õ<¸d¿j¹jÈ»oÈaÕ>PÒPÑ]kÐÐlð
 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õ/ð
 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Ðð 2×9Ñ9¸#¸sÓCÐð
Ü#'§:¢:Ð.CÓ#DÐ ð $Ð#ùòW mùóùó jùó qùó
 '_øô" ×Ñô 
Üð@ó
ð 	
ð
ús*   ›AG!Á62G&Â>G,Ã0!G2Ä2G8
Ç	G> Ç>!Hc                óT   € V ^8„  d   QhR\         R,          R\        \        ,          /# )r'   rÞ   Nr;   ©r,   rä   r  )r-   s   "r/   r0   r0   ‹  s&   € ÷ Sñ S¤C¨$¥Jð S¼$¼t½*ñ Sr2   c                ó$   € V '       d   RRRV /.# . # )z Returns a new chat conversation.r"  ÚsystemrK   r¢   )rÞ   s   &r/   r*  r*  ‹  s   € ç=JˆV�X˜y¨-Ð8Ð9ÐRÐPRÐRr2   c                ó^   € V ^8„  d   QhR\         R\        \        ,          R\        R\         /# )r'   r  r  rð   r;   rg  )r-   s   "r/   r0   r0   �  s,   € ÷ %ñ %œð %¤4¬¥:ð %¼ð %Ä#ñ %r2   c                óD  € \         P                  ! \         P                  P                  V 4      RR7       \	        V R4      ;_uu_ 4       p\
        P                  ! RVRV/V^R7       RRR4       \         P                  P                  V 4      #   + '       g   i     L/; i)z!Saves the chat history to a file.T)Úexist_okÚwrð   Úchat_history)ÚindentN)r,  Úmakedirsr-  rI  rò   r‹   ÚdumpÚabspath)r  r  rð   rü   s   &&& r/   r/  r/  �  sf   € ä‡K‚K”—‘—‘ Ó)°DÕ9Ü	ˆh˜×	Ô	 Ü�	Š	�:˜x¨¸Ð>ÀÈ!ÕL÷ 
ä�7‰7�?‰?˜8Ó$Ð$÷ 
×	ús   Á
BÂB	c                ó$   € V ^8„  d   QhR\         /# ra   r+   )r-   s   "r/   r0   r0   ˜  s   € ÷ 1ñ 1”cñ 1r2   c                 óÆ   € \         P                  ! 4       R8X  d   \        P                  ! 4       # \        P
                  ! \        P                  ! 4       4      P                  # )z)Returns the username of the current user.r   )Úplatformri  r,  ÚgetloginÚpwdÚgetpwuidÚgetuidÚpw_namer¢   r2   r/   rñ   rñ   ˜  s8   € ä‡‚Ó˜IÔ%Ü�{Š{‹}Ðä�|Š|œBŸIšI›KÓ(×0Ñ0Ð0r2   Ú__main__z meta-llama/Llama-3.2-3b-Instruct)r(   r4   )Crø   r‹   r,  ru  rM   ÚstringrH   Úcollections.abcr   r   Útypingr   r   Úurllib.parser   r   r   rÃ   râ   ró   Úhuggingface_hubr	   r
   Útransformersr   Útransformers.utilsr   Úreadliner÷   ri  rw  Ú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ƒ   rR   r0  r„   r%   rØ   rí   rî   r*  r/  rñ   r£   r¢   r2   r/   Ú<module>r�     sÃ  ðó Û Û 	Û Û 	Û Û ß 4ß !ß *ã Û Û Û ß Lå )Ý 0ð	Ûð
 ‡?‚?Ó˜	Ô!Ûá×ÒÝÝ$ÝÝ&ß`Õ`Ýà# [°&¸$Ð?Ð Ù˜×,Ñ,¨v×/@Ñ/@Õ@ÓAÐ ÙØ
×Ñ˜6Ÿ=™=Õ(¨6×+<Ñ+<Õ<Ð?bÕbóÐ ð
 ˆfÐMÐNØ
Øð)ðð �6ÐQÐRØ�ÐNÐOØˆfÐ.Ð/ØˆfÐJÐKØ�Ð?Ð@ðÐ ð 	Ð ð	ð "Ÿ;™;Ð'7×'<Ñ'<Ó'>Ó?Ð@ð Að€÷&ñ ÷DZñ Zõz	Cõ3$÷lSõ
%õ1ð ˆzÔÙÐ4×5ñ øðw ô 	âð	ús   ÁF  Æ F+Æ*F+