Ë
    µŒj2\  ã                  ó(  — d Z ddlmZ ddlZddlZddlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZ ddlmZ ddlmZmZ ddlmZ ddlmZmZmZ dd	lmZ dd
l m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z;m<Z< ddl=m>Z> ddl?m@Z@mAZA  ej„                  eC«      ZD G d„ deE«      ZF	 d"	 	 	 	 	 d#d„ZGd$d„ZH	 d"	 	 	 	 	 	 	 d%d„ZI	 	 	 	 	 	 d&d„ZJd'd„ZKd(d„ZLg d¢ZM eddd¬«       G d „ de«      «       ZNd)d!„ZOy)*uŠ   
Deprecated LiteLLM wrapper.

â­�  Use `pip install langchain-litellm` and import
   `from langchain_litellm import ChatLiteLLM` instead.
é    )ÚannotationsN)ÚAnyÚAsyncIteratorÚCallableÚDictÚIteratorÚListÚLiteralÚMappingÚOptionalÚSequenceÚTupleÚTypeÚUnion)Ú
deprecated)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚLanguageModelInput)ÚBaseChatModelÚagenerate_from_streamÚgenerate_from_stream)Úcreate_base_retry_decorator)Ú	AIMessageÚAIMessageChunkÚBaseMessageÚBaseMessageChunkÚChatMessageÚChatMessageChunkÚFunctionMessageÚFunctionMessageChunkÚHumanMessageÚHumanMessageChunkÚSystemMessageÚSystemMessageChunkÚToolCallÚToolCallChunkÚToolMessage)ÚUsageMetadata)ÚChatGenerationÚChatGenerationChunkÚ
ChatResult)ÚRunnable)ÚBaseTool)Úget_from_dict_or_envÚpre_init)Úconvert_to_openai_tool)Ú	BaseModelÚFieldc                  ó   — e Zd ZdZy)ÚChatLiteLLMExceptionz$Error with the `LiteLLM I/O` libraryN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úq/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/chat_models/litellm.pyr4   r4   H   s   „ Ú.r:   r4   ÚChatLiteLLMc                ó–   — ddl }|j                  |j                  |j                  |j                  g}t        || j                  |¬«      S )zKReturns a tenacity retry decorator, preconfigured to handle PaLM exceptionsr   N)Úerror_typesÚmax_retriesÚrun_manager)ÚlitellmÚTimeoutÚAPIErrorÚAPIConnectionErrorÚRateLimitErrorr   r?   )Úllmr@   rA   Úerrorss       r;   Ú_create_retry_decoratorrH   L   sL   € ó ð 	�‰Ø×ÑØ×"Ñ"Ø×Ñð	€Fô 'Ø¨¯©À[ôð r:   c                óv  — | d   }|dk(  rt        | d   ¬«      S |dk(  r`| j                  dd«      xs d}i }| j                  d«      rt        | d   «      |d<   | j                  d«      r| d   |d<   t        ||¬	«      S |d
k(  rt	        | d   ¬«      S |dk(  rt        | d   | d   ¬«      S t        | d   |¬«      S )NÚroleÚuserÚcontent©rL   Ú	assistantÚ Úfunction_callÚ
tool_calls)rL   Úadditional_kwargsÚsystemÚfunctionÚname©rL   rU   ©rL   rJ   )r!   ÚgetÚdictr   r#   r   r   )Ú_dictrJ   rL   rR   s       r;   Ú_convert_dict_to_messager[   `   sÚ   € Ø�‰=€DØˆv‚~Ü E¨)Ñ$4Ô5Ð5Ø	�Ò	ð —)‘)˜I rÓ*Ò0¨bˆàÐØ�9‰9�_Ô%Ü15°e¸OÑ6LÓ1MÐ˜oÑ.à�9‰9�\Ô"Ø.3°LÑ.AÐ˜lÑ+ä Ð<MÔNÐNØ	�Ò	Ü U¨9Ñ%5Ô6Ð6Ø	�Ò	Ü u¨YÑ'7¸eÀF¹mÔLÐLä 5¨Ñ#3¸$Ô?Ð?r:   c              ‹  ó`   ‡ K  — t        ‰ |¬«      }|dˆ fd„«       } |di |¤Žƒ d{  –—† S 7 Œ­w)z0Use tenacity to retry the async completion call.©r@   c               ›  óX   •K  —  ‰j                   j                  di | ¤Žƒ d {  –—† S 7 Œ­w©Nr9   )ÚclientÚacreate)ÚkwargsrF   s    €r;   Ú_completion_with_retryz6acompletion_with_retry.<locals>._completion_with_retry�   s)   øè ø€ ð (�S—Z‘Z×'Ñ'Ñ1¨&Ñ1×1Ð1Ð1ús   ƒ *£(¤*N©rb   r   Úreturnr   r9   ©rH   )rF   r@   rb   Úretry_decoratorrc   s   `    r;   Úacompletion_with_retryrh   y   s=   øè ø€ ô .¨c¸{ÔK€Oàô2ó ð2ñ (Ñ1¨&Ñ1×1Ð1Ð1ús   ƒ$.§,¨.c           
     óè  — | j                  d«      }| j                  d«      xs d}| j                  d«      rdt        | d   «      i}n| j                  d«      rd| d   i}ni }g }| j                  d«      x}rX||d<   	 |D �cg c]G  }t        |d   j                  d«      |d   j                  d	«      |j                  d
«      |d   ¬«      ‘ŒI }}|dk(  s	|t        k(  rt	        |¬«      S |dk(  s	|t
        k(  rt        |||¬«      S |dk(  s	|t        k(  rt        |¬«      S |dk(  s	|t        k(  rt        || d   ¬«      S |s	|t        k(  rt        ||¬«      S  ||¬«      S c c}w # t        $ r Y ŒŸw xY w)NrJ   rL   rO   rP   Úreasoning_contentrQ   rT   rU   Ú	argumentsÚidÚindex)rU   Úargsrl   rm   rK   rM   rN   )rL   rR   Útool_call_chunksrS   rV   rW   )	rX   rY   r&   ÚKeyErrorr"   r   r$   r    r   )rZ   Údefault_classrJ   rL   rR   ro   Úraw_tool_callsÚrtcs           r;   Ú_convert_delta_to_message_chunkrt   ‰   s°  € ð �9‰9�VÓ€DØ�i‰i˜	Ó"Ò( b€GØ‡y�y�Ô!Ø,¬d°5¸Ñ3IÓ.JÐKÑØ	�‰Ð&Ô	'Ø0°%Ð8KÑ2LÐMÑàÐàÐØŸ™ <Ó0Ð0€~Ð0Ø*8Ð˜,Ñ'ð	ñ *ó ñ *�Cô Ø˜Z™×,Ñ,¨VÓ4Ø˜Z™×,Ñ,¨[Ó9Ø—w‘w˜t“}Ø˜g™,ö	ð *ð ð  ð ˆv‚~˜Ô*;Ò;Ü ¨Ô1Ð1Ø	�Ò	 ´Ò ?ÜØØ/Ø-ô
ð 	
ð
 
�Ò	˜]Ô.@Ò@Ü!¨'Ô2Ð2Ø	�Ò	˜}Ô0DÒDÜ#¨G¸%À¹-ÔHÐHÙ	�Ô"2Ò2Ü¨°dÔ;Ð;á WÔ-Ð-ùò7 øô ò 	Ùð	ús%   Á?E% ÂAE ÃE% Å E% Å%	E1Å0E1c                óL   — d| d   | d   t        j                  | d   «      dœdœS )NrT   rl   rU   rn   )rU   rk   )Útyperl   rT   )ÚjsonÚdumps)Ú	tool_calls    r;   Ú!_lc_tool_call_to_openai_tool_callrz   ·   s4   € àØ˜‰oà˜fÑ%ÜŸ™ I¨fÑ$5Ó6ñ
ñð r:   c                óÈ  — d| j                   i}t        | t        «      r| j                  |d<   �nt        | t        «      rd|d<   n÷t        | t
        «      ryd|d<   d| j                  v r| j                  d   |d<   | j                  r'| j                  D �cg c]  }t        |«      ‘Œ c}|d<   n�d| j                  v r�| j                  d   |d<   nnt        | t        «      rd|d<   nXt        | t        «      rd|d<   | j                  |d	<   n3t        | t        «      rd
|d<   | j                  |d<   nt        d| › �«      ‚d	| j                  v r| j                  d	   |d	<   |S c c}w )NrL   rJ   rK   rN   rP   rQ   rS   rT   rU   ÚtoolÚtool_call_idzGot unknown type )rL   Ú
isinstancer   rJ   r!   r   rR   rQ   rz   r#   r   rU   r'   r}   Ú
ValueError)ÚmessageÚmessage_dictÚtcs      r;   Ú_convert_message_to_dictrƒ   Â   sg  € Ø$-¨w¯©Ð#?€LÜ�'œ;Ô'Ø&Ÿ|™|ˆ�VÓÜ	�Gœ\Ô	*Ø%ˆ�VÒÜ	�GœYÔ	'Ø*ˆ�VÑØ˜g×7Ñ7Ñ7Ø,3×,EÑ,EÀoÑ,VˆL˜Ñ)Ø×Òà@G×@RÒ@Ró*Ù@R¸"Ô1°"Õ5Ð@Rñ*ˆL˜Ò&ð ˜W×6Ñ6Ñ6Ø)0×)BÑ)BÀ<Ñ)PˆL˜Ò&Ü	�Gœ]Ô	+Ø'ˆ�VÒÜ	�Gœ_Ô	-Ø)ˆ�VÑØ&Ÿ|™|ˆ�VÒÜ	�Gœ[Ô	)Ø%ˆ�VÑØ'.×';Ñ';ˆ�^Ò$äÐ,¨W¨IÐ6Ó7Ð7Ø�×*Ñ*Ñ*Ø&×8Ñ8¸Ñ@ˆ�VÑØÐùò#*s   ÂE)zo1-miniz
o1-previewzgpt-4o-minizgpt-4o-mini-2024-07-18zgpt-4ozgpt-4o-2024-08-06zgpt-4o-2024-05-13zgpt-4-turbozgpt-4-turbo-previewzgpt-4-0125-previewzgpt-4-1106-previewzgpt-3.5-turbo-1106úgpt-3.5-turbozgpt-3.5-turbo-0301zgpt-3.5-turbo-0613zgpt-3.5-turbo-16kzgpt-3.5-turbo-16k-0613zgpt-4z
gpt-4-0314z
gpt-4-0613z	gpt-4-32kzgpt-4-32k-0314zgpt-4-32k-0613z0.3.24z1.0zlangchain_litellm.ChatLiteLLM)ÚsinceÚremovalÚalternative_importc                  óž  ‡ — e Zd ZU dZdZded<   dZded<   dZded	<   	 dZded
<   dZ	ded<   dZ
ded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   	  ee¬«      Zded<   	 dZded<   	 dZded <   	 dZded!<   	 dZded"<   d#Zd$ed%<   ed3d&„«       Zed3d'„«       Z	 d4	 	 	 	 	 d5d(„Z e!d6d)„«       Z"	 	 	 d7	 	 	 	 	 	 	 	 	 	 	 d8d*„Z#d9d+„Z$	 	 	 	 	 	 d:d,„Z%	 	 d;	 	 	 	 	 	 	 	 	 d<d-„Z&	 	 d;	 	 	 	 	 	 	 	 	 d=d.„Z'	 	 	 d7	 	 	 	 	 	 	 	 	 	 	 d>d/„Z(	 d4	 	 	 	 	 	 	 d?ˆ fd0„Z)ed3d1„«       Z*ed@d2„«       Z+ˆ xZ,S )Ar<   u;   DEPRECATED â€“ use `langchain_litellm.ChatLiteLLM` instead.Nr   r`   r„   ÚstrÚmodelzOptional[str]Ú
model_nameÚopenai_api_keyÚazure_api_keyÚanthropic_api_keyÚreplicate_api_keyÚcohere_api_keyÚopenrouter_api_keyÚapi_keyFÚboolÚ	streamingÚapi_baseÚorganizationÚcustom_llm_providerz+Optional[Union[float, Tuple[float, float]]]Úrequest_timeoutzOptional[float]Útemperature)Údefault_factoryúDict[str, Any]Úmodel_kwargsÚtop_pzOptional[int]Útop_kÚnÚ
max_tokensé   Úintr?   c                óî   — | j                   }| j                  �| j                  }|| j                  | j                  | j                  | j
                  | j                  | j                  dœ| j                  ¥S )z2Get the default parameters for calling OpenAI API.)rŠ   Úforce_timeoutr    ÚstreamrŸ   r™   r—   )	rŠ   r‹   r˜   r    r”   rŸ   r™   r—   rœ   ©ÚselfÚset_model_values     r;   Ú_default_paramszChatLiteLLM._default_params&  sm   € ð Ÿ*™*ˆØ�?‰?Ð&Ø"Ÿo™oˆOà$Ø!×1Ñ1ØŸ/™/Ø—n‘nØ—‘Ø×+Ñ+Ø#'×#;Ñ#;ñ	
ð ×Ñð	
ð 		
r:   c                óº  — | j                   }| j                  �| j                  }| j                  | j                  _        | j                  | j                  _        dD ]8  }t        | |«      x}sŒt        | j                  |j                  dd«      |«       Œ: | j                  | j                  _        || j                  | j                  dœ}i | j                  ¥|¥S )z.Get the parameters used for the openai client.)rŒ   r�   rŽ   r�   r�   r‘   Ú_api_keyÚ_key)rŠ   r¤   r•   )rŠ   r‹   r•   r`   r’   ÚgetattrÚsetattrÚreplacer–   r˜   r©   )r§   r¨   Únamed_api_keyÚapi_key_valueÚcredss        r;   Ú_client_paramszChatLiteLLM._client_params7  sÈ   € ð Ÿ*™*ˆØ�?‰?Ð&Ø"Ÿo™oˆOØ#Ÿ}™}ˆ�‰ÔØ"Ÿl™lˆ�‰Ôó
ˆMô !(¨¨mÓ <Ð<ˆ}Ñ<ÜØ—K‘KØ!×)Ñ)¨*°fÓ=Ø!õð
ð $(×#4Ñ#4ˆ�‰Ô à$Ø!×1Ñ1ØŸ™ñ!
ˆð
 1�$×&Ñ&Ð0¨%Ð0Ð0r:   c                óD   ‡ — t        ‰ |¬«      }|dˆ fd„«       } |di |¤ŽS )z*Use tenacity to retry the completion call.r]   c                 ó<   •—  ‰j                   j                  di | ¤ŽS r_   )r`   Ú
completion)rb   r§   s    €r;   rc   zAChatLiteLLM.completion_with_retry.<locals>._completion_with_retry[  s   ø€ à)�4—;‘;×)Ñ)Ñ3¨FÑ3Ð3r:   rd   r9   rf   )r§   r@   rb   rg   rc   s   `    r;   Úcompletion_with_retryz!ChatLiteLLM.completion_with_retryU  s3   ø€ ô 2°$ÀKÔPˆà	ô	4ó 
ð	4ñ &Ñ/¨Ñ/Ð/r:   c                óB  — 	 ddl }t        |ddd¬«      |d<   t        |dd	d¬«      |d<   t        |d
dd¬«      |d
<   t        |ddd¬«      |d<   t        |ddd¬«      |d<   t        |ddd¬«      |d<   t        |ddd¬«      |d<   t        |ddd¬«      |d<   ||d<   |d   �%d|d   cxk  rdk  st	        d«      ‚ t	        d«      ‚|d   �%d|d   cxk  rdk  st	        d«      ‚ t	        d«      ‚|d   �|d   dk  rt	        d«      ‚|S # t        $ r t        d«      ‚w xY w)zGValidate api key, python package exists, temperature, top_p, and top_k.r   NzUCould not import litellm python package. Please install it with `pip install litellm`rŒ   ÚOPENAI_API_KEYrO   )Údefaultr�   ÚAZURE_API_KEYrŽ   ÚANTHROPIC_API_KEYr�   ÚREPLICATE_API_KEYr‘   ÚOPENROUTER_API_KEYr�   ÚCOHERE_API_KEYÚhuggingface_api_keyÚHUGGINGFACE_API_KEYÚtogether_ai_api_keyÚTOGETHERAI_API_KEYr`   r™   r¡   z+temperature must be in the range [0.0, 1.0]r�   z%top_p must be in the range [0.0, 1.0]rž   ztop_k must be positive)rA   ÚImportErrorr4   r.   r   )ÚclsÚvaluesrA   s      r;   Úvalidate_environmentz ChatLiteLLM.validate_environmenta  s¸  € ð	Ûô $8ØÐ$Ð&6Àô$
ˆÐÑ ô #7Ø�O _¸bô#
ˆˆÑô ';ØÐ'Ð)<Àbô'
ˆÐ"Ñ#ô ';ØÐ'Ð)<Àbô'
ˆÐ"Ñ#ô (<ØÐ(Ð*>Èô(
ˆÐ#Ñ$ô $8ØÐ$Ð&6Àô$
ˆÐÑ ô )=ØÐ)Ð+@È"ô)
ˆÐ$Ñ%ô )=ØÐ)Ð+?Èô)
ˆÐ$Ñ%ð #ˆˆxÑà�-Ñ Ð,°Q¸&ÀÑ:OÔ5TÐSTÒ5TÜÐJÓKÐKð 6UÜÐJÓKÐKà�'‰?Ð&¨q°F¸7±OÔ/HÀqÒ/HÜÐDÓEÐEð 0IÜÐDÓEÐEà�'‰?Ð&¨6°'©?¸aÒ+?ÜÐ5Ó6Ð6àˆøôS ò 	Ü&ð?óð ð	ús   ‚D	 Ä	Dc                óê   — |�|n| j                   }|r! | j                  |f||dœ|¤Ž}t        |«      S | j                  ||«      \  }}	i |	¥|¥}	 | j                  d||dœ|	¤Ž}
| j                  |
«      S )N)Ústopr@   ©Úmessagesr@   r9   )r”   Ú_streamr   Ú_create_message_dictsr·   Ú_create_chat_result©r§   rË   rÉ   r@   r¥   rb   Úshould_streamÚstream_iterÚmessage_dictsÚparamsÚresponses              r;   Ú	_generatezChatLiteLLM._generate‘  s¦   € ð #)Ð"4™¸$¿.¹.ˆÙØ&˜$Ÿ,™,ØðØ#°ñØ@FñˆKô (¨Ó4Ð4à $× :Ñ :¸8ÀTÓ JÑˆ�vØ%�FÐ%˜fÐ%ˆØ-�4×-Ñ-ð 
Ø"°ñ
Ø?Eñ
ˆð ×'Ñ'¨Ó1Ð1r:   c           	     ó¶  — g }|j                  di «      }|d   D ]ˆ  }t        |d   «      }t        |t        «      r1d| j                  xs | j
                  i|_        t        |«      |_        t        |t        |j                  d«      ¬«      ¬«      }|j                  |«       ŒŠ | j
                  }| j                  �| j                  }||dœ}t        ||¬	«      S )
NÚusageÚchoicesr€   r‹   Úfinish_reason)rÙ   )r€   Úgeneration_info)Útoken_usagerŠ   )ÚgenerationsÚ
llm_output)rX   r[   r~   r   r‹   rŠ   Úresponse_metadataÚ_create_usage_metadataÚusage_metadatar)   rY   Úappendr+   )	r§   rÔ   rÜ   rÛ   Úresr€   Úgenr¨   rÝ   s	            r;   rÎ   zChatLiteLLM._create_chat_result§  sÍ   € ØˆØ—l‘l 7¨BÓ/ˆØ˜IÔ&ˆCÜ.¨s°9©~Ó>ˆGÜ˜'¤9Ô-à  $§/¡/Ò"?°T·Z±Zð-�Ô)ô *@ÀÓ)L�Ô&Ü ØÜ $°3·7±7¸?Ó3KÔ LôˆCð ×Ñ˜sÕ#ð 'ð Ÿ*™*ˆØ�?‰?Ð&Ø"Ÿo™oˆOØ%0¸?ÑKˆ
Ü k¸jÔIÐIr:   c                óˆ   — | j                   }|�d|v rt        d«      ‚||d<   |D �cg c]  }t        |«      ‘Œ }}||fS c c}w )NrÉ   z2`stop` found in both the input and default params.)r³   r   rƒ   )r§   rË   rÉ   rÓ   ÚmrÒ   s         r;   rÍ   z!ChatLiteLLM._create_message_dicts¼  s]   € ð ×$Ñ$ˆØÐØ˜ÑÜ Ð!UÓVÐVØ!ˆF�6‰NÙ>FÓG¹h¸Ô1°!Õ4¸hˆÐGØ˜fÐ$Ð$ùò Hs   §?c              +  óV  K  — | j                  ||«      \  }}i |¥|¥ddi¥}t        }d} | j                  d||dœ|¤ŽD ]æ  }	t        |	t        «      s|	j                  «       }	t        |	d   «      dk(  rŒ5|	d   d   d   }
|	j                  di «      }t        |
|«      }	t        |	t        «      r5|s#d	| j                  xs | j                  i|	_        d}t        |«      |	_        |	j                  }t        |	¬
«      }|r&|j!                  t#        |	j$                  «      |¬«       |–— Œè y ­w)Nr¥   TFrÊ   rØ   r   Údeltar×   r‹   ©r€   ©Úchunkr9   )rÍ   r   r·   r~   rY   Ú
model_dumpÚlenrX   rt   r‹   rŠ   rÞ   rß   rà   Ú	__class__r*   Úon_llm_new_tokenr‰   rL   ©r§   rË   rÉ   r@   rb   rÒ   rÓ   Údefault_chunk_classÚadded_model_namerê   rç   r×   Úcg_chunks                r;   rÌ   zChatLiteLLM._streamÇ  s@  è ø€ ð !%× :Ñ :¸8ÀTÓ JÑˆ�vØ5�FÐ5˜fÐ5 h°Ñ5ˆä6DÐØ ÐØ/�T×/Ñ/ð 
Ø"°ñ
Ø?Eô
ˆEô ˜e¤TÔ*Ø×(Ñ(Ó*�Ü�5˜Ñ#Ó$¨Ò)ØØ˜)Ñ$ QÑ'¨Ñ0ˆEØ—I‘I˜g rÓ*ˆEÜ3°EÐ;NÓOˆEÜ˜%¤Ô0Ù'à$ d§o¡oÒ&C¸¿¹ð/�EÔ+ð (,Ð$Ü'=¸eÓ'D�Ô$Ø"'§/¡/ÐÜ*°5Ô9ˆHÙØ×,Ñ,¬S°·±Ó-?ÀxÐ,ÔPØ‹Nñ+
ùs   ‚D'D)c               ó„  K  — | j                  ||«      \  }}i |¥|¥ddi¥}t        }d}t        | f||dœ|¤Žƒ d {  –—† 2 3 d {  –—† }	t        |	t        «      s|	j                  «       }	t        |	d   «      dk(  rŒ;|	d   d   d   }
|	j                  di «      }t        |
|«      }	t        |	t        «      r5|s#d	| j                  xs | j                  i|	_        d}t        |«      |	_        |	j                  }t        |	¬
«      }|r.|j!                  t#        |	j$                  «      |¬«      ƒ d {  –—†  |­–— Œ÷7 Œû7 Œô7 Œ6 y ­w)Nr¥   TFrÊ   rØ   r   rç   r×   r‹   rè   ré   )rÍ   r   rh   r~   rY   rë   rì   rX   rt   r‹   rŠ   rÞ   rß   rà   rí   r*   rî   r‰   rL   rï   s                r;   Ú_astreamzChatLiteLLM._astreamê  sc  è ø€ ð !%× :Ñ :¸8ÀTÓ JÑˆ�vØ5�FÐ5˜fÐ5 h°Ñ5ˆä6DÐØ ÐÜ!7Øð"
Ø(°kñ"
ØEKñ"
÷ 
ð 
÷ 	�%ô ˜e¤TÔ*Ø×(Ñ(Ó*�Ü�5˜Ñ#Ó$¨Ò)ØØ˜)Ñ$ QÑ'¨Ñ0ˆEØ—I‘I˜g rÓ*ˆEÜ3°EÐ;NÓOˆEÜ˜%¤Ô0Ù'à$ d§o¡oÒ&C¸¿¹ð/�EÔ+ð (,Ð$Ü'=¸eÓ'D�Ô$Ø"'§/¡/ÐÜ*°5Ô9ˆHÙØ!×2Ñ2´3°u·}±}Ó3EÈXÐ2ÓV×VÐVØŒNð+
øð 	øð( Wøñ)
ùsF   ‚:E ¼D8½E ÁD>ÁD:ÁD>Á	C$E Ä-D<Ä.E Ä:D>Ä<E Ä>E c              ‹  ó  K  — |�|n| j                   }|r) | j                  d|||dœ|¤Ž}t        |«      ƒ d {  –—† S | j                  ||«      \  }}	i |	¥|¥}	t	        | f||dœ|	¤Žƒ d {  –—† }
| j                  |
«      S 7 ŒG7 Œ­w)N)rË   rÉ   r@   rÊ   r9   )r”   rô   r   rÍ   rh   rÎ   rÏ   s              r;   Ú
_ageneratezChatLiteLLM._agenerate  s·   è ø€ ð #)Ð"4™¸$¿.¹.ˆÙØ'˜$Ÿ-™-ð Ø!¨¸+ñØIOñˆKô /¨{Ó;×;Ð;à $× :Ñ :¸8ÀTÓ JÑˆ�vØ%�FÐ%˜fÐ%ˆÜ/Øð
Ø(°kñ
ØEKñ
÷ 
ˆð ×'Ñ'¨Ó1Ð1ð <øð
ús!   ‚7B¹Bº1BÁ+BÁ,BÂBc                ó:  •‡— |D �cg c]  }t        |«      ‘Œ }}| j                  �d| j                  v sV| j                  �d| j                  v s<| j                  �| j                  t        v s| j                  �*| j                  t        v r‰dk(  st	        ‰t
        «      rdŠn^t	        ‰t
        «      rdŠnKt	        ‰t        «      r;|D �cg c]
  }|d   d   ‘Œ }}t        ˆfd„|D «       «      st        d‰› d|› d	�«      ‚t        ‰| �(  d|‰d
œ|¤ŽS c c}w c c}w )aŽ  Bind tool-like objects to this chat model.

        LiteLLM expects tools argument in OpenAI format.

        Args:
            tools: A list of tool definitions to bind to this chat model.
                Can be  a dictionary, pydantic model, callable, or BaseTool. Pydantic
                models, callables, and BaseTools will be automatically converted to
                their schema dictionary representation.
            tool_choice: Which tool to require the model to call. Options are:
                - str of the form ``"<<tool_name>>"``: calls <<tool_name>> tool.
                - ``"auto"``:
                    automatically selects a tool (including no tool).
                - ``"none"``:
                    does not call a tool.
                - ``"any"`` or ``"required"`` or ``True``:
                    forces least one tool to be called.
                - dict of the form:
                ``{"type": "function", "function": {"name": <<tool_name>>}}``
                - ``False`` or ``None``: no effect
            **kwargs: Any additional parameters to pass to the
                :class:`~langchain.runnable.Runnable` constructor.
        ÚazureÚanyÚrequiredrT   rU   c              3  ó4   •K  — | ]  }|‰d    d   k(  –— Œ y­w)rT   rU   Nr9   )Ú.0Ú	tool_nameÚtool_choices     €r;   Ú	<genexpr>z)ChatLiteLLM.bind_tools.<locals>.<genexpr>U  s$   øè ø€ ð ÙNXÀ�	˜[¨Ñ4°VÑ<Õ<Éjùs   ƒzTool choice z1 was specified, but the only provided tools were Ú.)Útoolsrþ   r9   )r0   rŠ   r‹   Ú_OPENAI_MODELSr~   r“   rY   rù   r   ÚsuperÚbind)	r§   r  rþ   rb   r|   Úformatted_toolsÚformatted_toolÚ
tool_namesrí   s	     `     €r;   Ú
bind_toolszChatLiteLLM.bind_tools#  s1  ù€ ñ@ EJÓJÁE¸DÔ1°$Õ7ÀEˆÐJð
 �Z‰ZÐ#¨°4·:±:Ñ(=Ø—‘Ð+°¸4¿?¹?Ñ0JØ—
‘
Ð&¨4¯:©:¼Ñ+GØ—‘Ð+°·±Ä>Ñ0QØ˜eÒ#¤z°+¼tÔ'DØ$‰Kä˜¤TÔ*Ø‰KÜ˜¤TÔ*áIXóÙIX°~�˜zÑ*¨6Ó2Èð ð ô ó ÙNXóô ô !Ø" ; -ð 0+Ø+5¨,°að9óð ô ‰w‰|ÐU /¸{ÑUÈfÑUÐUùò3 Kùòs   ‡DÃ
Dc                óª   — | j                   }| j                  �| j                  }|| j                  | j                  | j                  | j
                  dœS )zGet the identifying parameters.)rŠ   r™   r�   rž   rŸ   )rŠ   r‹   r™   r�   rž   rŸ   r¦   s     r;   Ú_identifying_paramszChatLiteLLM._identifying_params^  sK   € ð Ÿ*™*ˆØ�?‰?Ð&Ø"Ÿo™oˆOà$Ø×+Ñ+Ø—Z‘ZØ—Z‘ZØ—‘ñ
ð 	
r:   c                 ó   — y)Nzlitellm-chatr9   )r§   s    r;   Ú	_llm_typezChatLiteLLM._llm_typel  s   € àr:   )re   r›   ©N)r@   ú"Optional[CallbackManagerForLLMRun]rb   r   re   r   )rÆ   r   re   r   )NNN)rË   úList[BaseMessage]rÉ   úOptional[List[str]]r@   r  r¥   úOptional[bool]rb   r   re   r+   )rÔ   úMapping[str, Any]re   r+   )rË   r  rÉ   r  re   z+Tuple[List[Dict[str, Any]], Dict[str, Any]])NN)
rË   r  rÉ   r  r@   r  rb   r   re   zIterator[ChatGenerationChunk])
rË   r  rÉ   r  r@   ú'Optional[AsyncCallbackManagerForLLMRun]rb   r   re   z"AsyncIterator[ChatGenerationChunk])rË   r  rÉ   r  r@   r  r¥   r  rb   r   re   r+   )r  zDSequence[Union[Dict[str, Any], Type[BaseModel], Callable, BaseTool]]rþ   zLOptional[Union[dict, str, Literal['auto', 'none', 'required', 'any'], bool]]rb   r   re   z)Runnable[LanguageModelInput, BaseMessage])re   r‰   )-r5   r6   r7   r8   r`   Ú__annotations__rŠ   r‹   rŒ   r�   rŽ   r�   r�   r‘   r’   r”   r•   r–   r—   r˜   r™   r2   rY   rœ   r�   rž   rŸ   r    r?   Úpropertyr©   r³   r·   r/   rÇ   rÕ   rÎ   rÍ   rÌ   rô   rö   r  r
  r  Ú__classcell__)rí   s   @r;   r<   r<   ü   sû  ø… ñ Fà€FˆCÓØ €Eˆ3Ó Ø $€J�Ó$ØØ$(€N�MÓ(Ø#'€M�=Ó'Ø'+Ð�}Ó+Ø'+Ð�}Ó+Ø$(€N�MÓ(Ø(,Ð˜Ó,Ø!€Gˆ]Ó!Ø€IˆtÓØ"€HˆmÓ"Ø"&€L�-Ó&Ø)-Ð˜Ó-ØCG€OÐ@ÓGØ#'€K�Ó'ðá#(¸Ô#>€L�.Ó>ØQØ!€Eˆ?Ó!ðXà€Eˆ=Óðà€A€}ÓðIà $€J�Ó$à€K�Óàò
ó ð
ð  ò1ó ð1ð< AEð
0Ø=ð
0ØPSð
0à	ó
0ð ò-ó ð-ðd %)Ø:>Ø!%ð2à#ð2ð "ð2ð 8ð	2ð
 ð2ð ð2ð 
ó2ó,Jð*	%Ø)ð	%Ø1Dð	%à	4ó	%ð %)Ø:>ð	!à#ð!ð "ð!ð 8ð	!ð
 ð!ð 
'ó!ðL %)Ø?Cð	!à#ð!ð "ð!ð =ð	!ð
 ð!ð 
,ó!ðL %)Ø?CØ!%ð2à#ð2ð "ð2ð =ð	2ð
 ð2ð ð2ð 
ó2ð6 ð9VàSð9Vð
ð9Vð ð9Vð 
3õ9Vðv ò
ó ð
ð òó ôr:   c                ól   — | j                  dd«      }| j                  dd«      }t        ||||z   ¬«      S )NÚprompt_tokensr   Úcompletion_tokens)Úinput_tokensÚoutput_tokensÚtotal_tokens)rX   r(   )rÛ   r  r  s      r;   rß   rß   q  s>   € Ø—?‘? ?°AÓ6€LØ—O‘OÐ$7¸Ó;€MÜØ!Ø#Ø! MÑ1ôð r:   r  )rF   r<   r@   zHOptional[Union[AsyncCallbackManagerForLLMRun, CallbackManagerForLLMRun]]re   zCallable[[Any], Any])rZ   r  re   r   )rF   r<   r@   r  rb   r   re   r   )rZ   r  rq   zType[BaseMessageChunk]re   r   )ry   r%   re   rY   )r€   r   re   rY   )rÛ   r  re   r(   )Pr8   Ú
__future__r   rw   ÚloggingÚtypingr   r   r   r   r   r	   r
   r   r   r   r   r   r   Úlangchain_core._api.deprecationr   Úlangchain_core.callbacksr   r   Úlangchain_core.language_modelsr   Ú*langchain_core.language_models.chat_modelsr   r   r   Ú#langchain_core.language_models.llmsr   Úlangchain_core.messagesr   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   Úlangchain_core.messages.air(   Úlangchain_core.outputsr)   r*   r+   Úlangchain_core.runnablesr,   Úlangchain_core.toolsr-   Úlangchain_core.utilsr.   r/   Ú%langchain_core.utils.function_callingr0   Úpydanticr1   r2   Ú	getLoggerr5   ÚloggerÚ	Exceptionr4   rH   r[   rh   rt   rz   rƒ   r  r<   rß   r9   r:   r;   Ú<module>r0     s[  ðñõ #ã Û ÷÷ ÷ õ õ  7÷õ >÷ñ õ
 L÷÷ ÷ ÷ ñ õ" 5÷ñ õ
 .Ý )ß ?Ý Hß %à	ˆ×	Ñ	˜8Ó	$€ô/˜9ô /ð 	ð	Ø	ðððð
 óó(@ð6 <@ð2Ø	ð2à8ð2ð ð2ð 	ó	2ð +.Øð+.Ø-Cð+.àó+.ó\óò>€ñ6 Ø
ØØ6ôô
m�-ó móð
mô`r:   