§
    æ˜ºh^=  ã                  ór  — d Z ddlm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 ddlmZ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% dd	l&m'Z'm(Z(m)Z) dd
l*m+Z+m,Z, ddl-m.Z.  ej/        e0¦  «        Z1 G d„ de2¦  «        Z3	 d%d&d„Z4d'd„Z5	 d%d(d„Z6d)d „Z7d*d#„Z8 G d$„ de¦  «        Z9dS )+z+Wrapper around LiteLLM's model I/O library.é    )ÚannotationsN)ÚAnyÚAsyncIteratorÚCallableÚDictÚIteratorÚListÚMappingÚOptionalÚTupleÚTypeÚUnion)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚBaseChatModelÚagenerate_from_streamÚgenerate_from_stream)Úcreate_base_retry_decorator)Ú	AIMessageÚAIMessageChunkÚBaseMessageÚBaseMessageChunkÚChatMessageÚChatMessageChunkÚFunctionMessageÚFunctionMessageChunkÚHumanMessageÚHumanMessageChunkÚSystemMessageÚSystemMessageChunk)ÚChatGenerationÚChatGenerationChunkÚ
ChatResult)ÚFieldÚroot_validator)Úget_from_dict_or_envc                  ó   — e Zd ZdZdS )ÚChatLiteLLMExceptionz$Error with the `LiteLLM I/O` libraryN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úo/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/chat_models/litellm.pyr(   r(   6   s   € € € € € Ø.Ð.Ð.Ð.r.   r(   ÚllmÚChatLiteLLMÚrun_managerúHOptional[Union[AsyncCallbackManagerForLLMRun, CallbackManagerForLLMRun]]ÚreturnúCallable[[Any], Any]c                ól   — 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_retriesr2   )ÚlitellmÚTimeoutÚAPIErrorÚAPIConnectionErrorÚRateLimitErrorr   r8   )r0   r2   r9   Úerrorss       r/   Ú_create_retry_decoratorr?   :   sO   € ð €N€N€Nð 	ŒØÔØÔ"ØÔð	€Fõ 'Ø¨¬À[ðñ ô ð r.   Ú_dictúMapping[str, Any]r   c                ó²  — | d         }|dk    rt          | d         ¬¦  «        S |dk    rX|                      dd¦  «        pd}|                      d¦  «        rdt          | d         ¦  «        i}ni }t          ||¬¦  «        S |d	k    rt	          | d         ¬¦  «        S |d
k    rt          | d         | d         ¬¦  «        S t          | d         |¬¦  «        S )NÚroleÚuserÚcontent©rE   Ú	assistantÚ Úfunction_call©rE   Úadditional_kwargsÚsystemÚfunctionÚname©rE   rN   ©rE   rC   )r   ÚgetÚdictr   r   r   r   )r@   rC   rE   rK   s       r/   Ú_convert_dict_to_messagerS   N   sø   € Ø�Œ=€DØˆv‚~€~Ý E¨)Ô$4Ð5Ñ5Ô5Ð5Ø	�Ò	Ð	ð —)’)˜I rÑ*Ô*Ð0¨bˆØ�9Š9�_Ñ%Ô%ð 	#Ø!0µ$°u¸_Ô7MÑ2NÔ2NÐ OÐÐà "ÐÝ Ð<MÐNÑNÔNÐNØ	�Ò	Ð	Ý U¨9Ô%5Ð6Ñ6Ô6Ð6Ø	�Ò	Ð	Ý u¨YÔ'7¸eÀF¼mÐLÑLÔLÐLå 5¨Ô#3¸$Ð?Ñ?Ô?Ð?r.   ú'Optional[AsyncCallbackManagerForLLMRun]Úkwargsr   c              ‹  ób   ‡ K  — t          ‰ |¬¦  «        }|dˆ fd„¦   «         } |di |¤Žƒ d{V —†S )	z0Use tenacity to retry the async completion call.©r2   rU   r   r4   c               ›  ó8   •K  —  ‰j         j        di | ¤Žƒ d {V —†S ©Nr-   )ÚclientÚacreate)rU   r0   s    €r/   Ú_completion_with_retryz6acompletion_with_retry.<locals>._completion_with_retryk   s6   øè è € ð (�S”ZÔ'Ð1Ð1¨&Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1r.   N©rU   r   r4   r   r-   ©r?   )r0   r2   rU   Úretry_decoratorr\   s   `    r/   Úacompletion_with_retryr`   c   sn   øè è € õ .¨c¸{ÐKÑKÔK€Oàð2ð 2ð 2ð 2ð 2ñ „_ð2ð (Ð'Ð1Ð1¨&Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1r.   Údefault_classúType[BaseMessageChunk]r   c                ó$  — |                       d¦  «        }|                       d¦  «        pd}|                       d¦  «        rdt          | d         ¦  «        i}n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 )NrC   rE   rH   rI   rD   rF   rG   rJ   rL   rM   rN   rO   rP   )rQ   rR   r   r   r    r   r   )r@   ra   rC   rE   rK   s        r/   Ú_convert_delta_to_message_chunkrd   s   s;  € ð �9Š9�VÑÔ€DØ�iŠi˜	Ñ"Ô"Ð( b€GØ‡y‚y�Ñ!Ô!ð Ø,­d°5¸Ô3IÑ.JÔ.JÐKÐÐàÐàˆv‚~€~˜Õ*;Ò;Ð;Ý ¨Ð1Ñ1Ô1Ð1Ø	�Ò	Ð	 µÒ ?Ð ?Ý gÐARÐSÑSÔSÐSØ	�Ò	Ð	˜]Õ.@Ò@Ð@Ý!¨'Ð2Ñ2Ô2Ð2Ø	�Ò	Ð	˜}Õ0DÒDÐDÝ#¨G¸%À¼-ÐHÑHÔHÐHØ	ð .�Õ"2Ò2Ð2Ý¨°dÐ;Ñ;Ô;Ð;àˆ} WÐ-Ñ-Ô-Ð-r.   ÚmessagerR   c                óä  — t          | t          ¦  «        r| j        | j        dœ}n±t          | t          ¦  «        rd| j        dœ}n‘t          | t
          ¦  «        r$d| j        dœ}d| j        v r| j        d         |d<   nXt          | t          ¦  «        rd| j        dœ}n8t          | t          ¦  «        rd| j        | j	        dœ}nt          d| › �¦  «        ‚d	| j        v r| j        d	         |d	<   |S )
N)rC   rE   rD   rG   rI   rL   rM   )rC   rE   rN   zGot unknown type rN   )Ú
isinstancer   rC   rE   r   r   rK   r   r   rN   Ú
ValueError)re   Úmessage_dicts     r/   Ú_convert_message_to_dictrj   ‹   s  € Ý�'�;Ñ'Ô'ð 8Ø '¤¸¼ÐIÐIˆˆÝ	�G�\Ñ	*Ô	*ð 8Ø &°7´?ÐCÐCˆˆÝ	�G�YÑ	'Ô	'ð 8Ø +¸¼ÐHÐHˆØ˜gÔ7Ð7Ð7Ø,3Ô,EÀoÔ,VˆL˜Ñ)øÝ	�G�]Ñ	+Ô	+ð 	8Ø (°W´_ÐEÐEˆˆÝ	�G�_Ñ	-Ô	-ð 8àØ”Ø”Lð
ð 
ˆˆõ Ð6¨WÐ6Ð6Ñ7Ô7Ð7Ø�Ô*Ð*Ð*Ø&Ô8¸Ô@ˆ�VÑØÐr.   c                  ó4  — e Zd ZU 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dFd(„¦   «         ZedFd)„¦   «         Z	 dGdHd-„Z e¦   «         dId0„¦   «         Z 	 	 	 dJdKd8„Z!dLd;„Z"dMd=„Z#	 	 dNdOd?„Z$	 	 dNdPdB„Z%	 	 	 dJdQdC„Z&edFdD„¦   «         Z'edRdE„¦   «         Z(dS )Sr1   z'A chat model that uses the LiteLLM API.r   rZ   zgpt-3.5-turboÚstrÚmodelNzOptional[str]Ú
model_nameÚopenai_api_keyÚazure_api_keyÚanthropic_api_keyÚreplicate_api_keyÚcohere_api_keyÚopenrouter_api_keyFÚboolÚ	streamingÚapi_baseÚorganizationÚcustom_llm_providerz+Optional[Union[float, Tuple[float, float]]]Úrequest_timeouté   zOptional[float]Útemperature)Údefault_factoryúDict[str, Any]Úmodel_kwargsÚtop_pzOptional[int]Útop_kÚintÚné   Ú
max_tokensé   r8   r4   c                óŠ   — | j         }| j        �| j        }|| j        | j        | j        | j        | j        | j        dœ| j        ¥S )z2Get the default parameters for calling OpenAI API.N)rm   Úforce_timeoutr…   Ústreamrƒ   r|   ry   )	rm   rn   rz   r…   rv   rƒ   r|   ry   r   ©ÚselfÚset_model_values     r/   Ú_default_paramszChatLiteLLM._default_paramsÆ   sZ   € ð œ*ˆØŒ?Ð&Ø"œoˆOà$Ø!Ô1Øœ/Ø”nØ”ØÔ+Ø#'Ô#;ð	
ð 	
ð Ôð	
ð 		
r.   c                ó¦   — | j         }| j        �| j        }| j        | j        _        | j        | j        _        || j        | j        dœ}i | j        ¥|¥S )z.Get the parameters used for the openai client.N)rm   rˆ   rw   )rm   rn   rw   rZ   rx   rz   r�   )r‹   rŒ   Úcredss      r/   Ú_client_paramszChatLiteLLM._client_params×   sb   € ð œ*ˆØŒ?Ð&Ø"œoˆOØ#œ}ˆŒÔØ#'Ô#4ˆŒÔ à$Ø!Ô1Øœð!
ð !
ˆð
 1�$Ô&Ð0¨%Ð0Ð0r.   r2   ú"Optional[CallbackManagerForLLMRun]rU   c                óR   ‡ — t          ‰ |¬¦  «        }|dˆ fd„¦   «         } |di |¤ŽS )z*Use tenacity to retry the completion call.rW   rU   r   r4   c                 ó(   •—  ‰j         j        di | ¤ŽS rY   )rZ   Ú
completion)rU   r‹   s    €r/   r\   zAChatLiteLLM.completion_with_retry.<locals>._completion_with_retryì   s   ø€ à)�4”;Ô)Ð3Ð3¨FÐ3Ð3Ð3r.   r]   r-   r^   )r‹   r2   rU   r_   r\   s   `    r/   Úcompletion_with_retryz!ChatLiteLLM.completion_with_retryæ   sX   ø€ õ 2°$ÀKÐPÑPÔPˆà	ð	4ð 	4ð 	4ð 	4ð 	4ñ 
Œð	4ð &Ð%Ð/Ð/¨Ð/Ð/Ð/r.   Úvaluesr   c                ó¬  — 	 ddl }n# t          $ r t          d¦  «        ‚w xY w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n t	          d¦  «        ‚|d         �$d|d         cxk    rdk    sn t	          d¦  «        ‚|d         �|d         dk    rt	          d¦  «        ‚|S )zGValidate api key, python package exists, temperature, top_p, and top_k.r   NzmCould not import google.generativeai python package. Please install it with `pip install google-generativeai`ro   ÚOPENAI_API_KEYrH   )Údefaultrp   ÚAZURE_API_KEYrq   ÚANTHROPIC_API_KEYrr   ÚREPLICATE_API_KEYrt   ÚOPENROUTER_API_KEYrs   ÚCOHERE_API_KEYÚhuggingface_api_keyÚHUGGINGFACE_API_KEYÚtogether_ai_api_keyÚTOGETHERAI_API_KEYrZ   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)r9   ÚImportErrorr(   r&   rh   )Úclsr–   r9   s      r/   Úvalidate_environmentz ChatLiteLLM.validate_environmentò   s+  € ð	ØˆNˆNˆNˆNøÝð 	ð 	ð 	Ý&ðKñô ð ð	øøøõ $8ØÐ$Ð&6Àð$
ñ $
ô $
ˆÐÑ õ #7Ø�O _¸bð#
ñ #
ô #
ˆˆÑõ ';ØÐ'Ð)<Àbð'
ñ '
ô '
ˆÐ"Ñ#õ ';ØÐ'Ð)<Àbð'
ñ '
ô '
ˆÐ"Ñ#õ (<ØÐ(Ð*>Èð(
ñ (
ô (
ˆÐ#Ñ$õ $8ØÐ$Ð&6Àð$
ñ $
ô $
ˆÐÑ õ )=ØÐ)Ð+@È"ð)
ñ )
ô )
ˆÐ$Ñ%õ )=ØÐ)Ð+?Èð)
ñ )
ô )
ˆÐ$Ñ%ð #ˆˆxÑà�-Ô Ð,°Q¸&ÀÔ:OÐ5TÐ5TÒ5TÐ5TÐSTÒ5TÐ5TÐ5TÐ5TÝÐJÑKÔKÐKà�'Œ?Ð&¨q°F¸7´OÐ/HÐ/HÒ/HÐ/HÀqÒ/HÐ/HÐ/HÐ/HÝÐDÑEÔEÐEà�'Œ?Ð&¨6°'¬?¸aÒ+?Ð+?ÝÐ5Ñ6Ô6Ð6àˆs   ‚ ‡!ÚmessagesúList[BaseMessage]ÚstopúOptional[List[str]]r‰   úOptional[bool]r#   c                óä   — |�|n| j         }|r  | j        |f||dœ|¤Ž}t          |¦  «        S |                      ||¦  «        \  }}	i |	¥|¥}	 | j        d||dœ|	¤Ž}
|                      |
¦  «        S )N)r¨   r2   ©r¦   r2   r-   )rv   Ú_streamr   Ú_create_message_dictsr•   Ú_create_chat_result©r‹   r¦   r¨   r2   r‰   rU   Úshould_streamÚstream_iterÚmessage_dictsÚparamsÚresponses              r/   Ú	_generatezChatLiteLLM._generate"  sÃ   € ð #)Ð"4˜˜¸$¼.ˆØð 	5Ø&˜$œ,ØðØ#°ðð Ø@Fðð ˆKõ (¨Ñ4Ô4Ð4à $× :Ò :¸8ÀTÑ JÔ JÑˆ�vØ%�FÐ%˜fÐ%ˆØ-�4Ô-ð 
Ø"°ð
ð 
Ø?Eð
ð 
ˆð ×'Ò'¨Ñ1Ô1Ð1r.   rµ   rA   c           	     óV  — g }|d         D ]^}t          |d         ¦  «        }t          |t          |                     d¦  «        ¬¦  «        ¬¦  «        }|                     |¦  «         Œ_|                     di ¦  «        }| j        }| j        �| j        }||dœ}t          ||¬¦  «        S )	NÚchoicesre   Úfinish_reason)r¹   )re   Úgeneration_infoÚusage)Útoken_usagerm   )ÚgenerationsÚ
llm_output)rS   r!   rR   rQ   Úappendrm   rn   r#   )	r‹   rµ   r½   Úresre   Úgenr¼   rŒ   r¾   s	            r/   r¯   zChatLiteLLM._create_chat_result8  s¿   € ØˆØ˜IÔ&ð 	$ð 	$ˆCÝ.¨s°9¬~Ñ>Ô>ˆGÝ ØÝ $°3·7²7¸?Ñ3KÔ3KÐ LÑ LÔ Lðñ ô ˆCð ×Ò˜sÑ#Ô#Ð#Ð#Ø—l’l 7¨BÑ/Ô/ˆØœ*ˆØŒ?Ð&Ø"œoˆOØ%0¸?ÐKÐKˆ
Ý k¸jÐIÑIÔIÐIr.   ú+Tuple[List[Dict[str, Any]], Dict[str, Any]]c                ód   — | j         }|�d|v rt          d¦  «        ‚||d<   d„ |D ¦   «         }||fS )Nr¨   z2`stop` found in both the input and default params.c                ó,   — g | ]}t          |¦  «        ‘ŒS r-   )rj   )Ú.0Úms     r/   ú
<listcomp>z5ChatLiteLLM._create_message_dicts.<locals>.<listcomp>P  s!   € ÐGÐGÐG¸Õ1°!Ñ4Ô4ÐGÐGÐGr.   )r�   rh   )r‹   r¦   r¨   r´   r³   s        r/   r®   z!ChatLiteLLM._create_message_dictsH  sS   € ð Ô$ˆØÐØ˜ÐÐÝ Ð!UÑVÔVÐVØ!ˆF�6‰NØGÐG¸hÐGÑGÔGˆØ˜fÐ$Ð$r.   úIterator[ChatGenerationChunk]c              +  ój  K  — |                       ||¦  «        \  }}i |¥|¥ddi¥}t          } | j        d||dœ|¤ŽD ]u}t          |d         ¦  «        dk    rŒ|d         d         d         }	t	          |	|¦  «        }|j        }t          |¬¦  «        V — |r|                     |j        ¦  «         Œvd S )	Nr‰   Tr¬   r¸   r   Údelta©re   r-   )	r®   r   r•   Úlenrd   Ú	__class__r"   Úon_llm_new_tokenrE   ©
r‹   r¦   r¨   r2   rU   r³   r´   Údefault_chunk_classÚchunkrÊ   s
             r/   r­   zChatLiteLLM._streamS  sÿ   è è € ð !%× :Ò :¸8ÀTÑ JÔ JÑˆ�vØ5�FÐ5˜fÐ5 h°Ð5Ð5ˆå,ÐØ/�TÔ/ð 
Ø"°ð
ð 
Ø?Eð
ð 
ð 
	<ð 
	<ˆEõ �5˜Ô#Ñ$Ô$¨Ò)Ð)ØØ˜)Ô$ QÔ'¨Ô0ˆEÝ3°EÐ;NÑOÔOˆEØ"'¤/ÐÝ%¨eÐ4Ñ4Ô4Ð4Ð4Ð4Øð <Ø×,Ò,¨U¬]Ñ;Ô;Ð;øð
	<ð 
	<r.   rT   ú"AsyncIterator[ChatGenerationChunk]c               ó�  K  — |                       ||¦  «        \  }}i |¥|¥ddi¥}t          }t          | f||dœ|¤Žƒ d {V —†2 3 d {V —†}t          |d         ¦  «        dk    rŒ!|d         d         d         }	t	          |	|¦  «        }|j        }t          |¬¦  «        W V — |r |                     |j        ¦  «        ƒ d {V —† Œ‚6 d S )Nr‰   Tr¬   r¸   r   rÊ   rË   )	r®   r   r`   rÌ   rd   rÍ   r"   rÎ   rE   rÏ   s
             r/   Ú_astreamzChatLiteLLM._astreamj  sV  è è € ð !%× :Ò :¸8ÀTÑ JÔ JÑˆ�vØ5�FÐ5˜fÐ5 h°Ð5Ð5ˆå,ÐÝ!7Øð"
Ø(°kð"
ð "
ØEKð"
ð "
ð 
ð 
ð 
ð 
ð 
ð 
ð 
	Bð 
	Bð 
	Bð 
	Bð 
	Bð 
	Bð 
	B�%õ �5˜Ô#Ñ$Ô$¨Ò)Ð)ØØ˜)Ô$ QÔ'¨Ô0ˆEÝ3°EÐ;NÑOÔOˆEØ"'¤/ÐÝ%¨eÐ4Ñ4Ô4Ð4Ð4Ð4Ð4Øð BØ!×2Ò2°5´=ÑAÔAÐAÐAÐAÐAÐAÐAÐAøð
ð 
ð 
s   ÁCc              ‹  ó   K  — |�|n| j         }|r& | j        d|||dœ|¤Ž}t          |¦  «        ƒ d {V —†S |                      ||¦  «        \  }}	i |	¥|¥}	t	          | f||dœ|	¤Žƒ d {V —†}
|                      |
¦  «        S )N)r¦   r¨   r2   r¬   r-   )rv   rÔ   r   r®   r`   r¯   r°   s              r/   Ú
_ageneratezChatLiteLLM._agenerate�  sô   è è € ð #)Ð"4˜˜¸$¼.ˆØð 	<Ø'˜$œ-ð Ø!¨¸+ðð ØIOðð ˆKõ /¨{Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;à $× :Ò :¸8ÀTÑ JÔ JÑˆ�vØ%�FÐ%˜fÐ%ˆÝ/Øð
Ø(°kð
ð 
ØEKð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ˆð ×'Ò'¨Ñ1Ô1Ð1r.   c                ód   — | j         }| j        �| j        }|| j        | j        | j        | j        dœS )zGet the identifying parameters.N)rm   r|   r€   r�   rƒ   )rm   rn   r|   r€   r�   rƒ   rŠ   s     r/   Ú_identifying_paramszChatLiteLLM._identifying_params—  sA   € ð œ*ˆØŒ?Ð&Ø"œoˆOà$ØÔ+Ø”ZØ”ZØ”ð
ð 
ð 	
r.   c                ó   — dS )Nzlitellm-chatr-   )r‹   s    r/   Ú	_llm_typezChatLiteLLM._llm_type¥  s   € àˆ~r.   )r4   r~   ©N)r2   r‘   rU   r   r4   r   )r–   r   r4   r   )NNN)r¦   r§   r¨   r©   r2   r‘   r‰   rª   rU   r   r4   r#   )rµ   rA   r4   r#   )r¦   r§   r¨   r©   r4   rÂ   )NN)
r¦   r§   r¨   r©   r2   r‘   rU   r   r4   rÈ   )
r¦   r§   r¨   r©   r2   rT   rU   r   r4   rÒ   )r¦   r§   r¨   r©   r2   rT   r‰   rª   rU   r   r4   r#   )r4   rl   ))r)   r*   r+   r,   Ú__annotations__rm   rn   ro   rp   rq   rr   rs   rt   rv   rw   rx   ry   rz   r|   r$   rR   r   r€   r�   rƒ   r…   r8   Úpropertyr�   r�   r•   r%   r¥   r¶   r¯   r®   r­   rÔ   rÖ   rØ   rÚ   r-   r.   r/   r1   r1   £   s"  € € € € € € Ø1Ð1à€K€K�KØ €EÐ Ð Ð Ñ Ø $€JÐ$Ð$Ð$Ñ$ØØ$(€NÐ(Ð(Ð(Ñ(Ø#'€MÐ'Ð'Ð'Ñ'Ø'+ÐÐ+Ð+Ð+Ñ+Ø'+ÐÐ+Ð+Ð+Ñ+Ø$(€NÐ(Ð(Ð(Ñ(Ø(,ÐÐ,Ð,Ð,Ñ,Ø€IÐÐÐÑØ"€HÐ"Ð"Ð"Ñ"Ø"&€LÐ&Ð&Ð&Ñ&Ø)-ÐÐ-Ð-Ð-Ñ-ØCG€OÐGÐGÐGÑGØ#$€KÐ$Ð$Ð$Ñ$Ø#( 5¸Ð#>Ñ#>Ô#>€LÐ>Ð>Ð>Ñ>ðà!€EÐ!Ð!Ð!Ñ!ðXà€EÐÐÐÑðà€A€J€J€J�JðIà€JÐÐÐÑà€KÐÐÐÑàð
ð 
ð 
ñ „Xð
ð  ð1ð 1ð 1ñ „Xð1ð AEð
0ð 
0ð 
0ð 
0ð 
0ð €^ÑÔð-ð -ð -ñ Ôð-ðd %)Ø:>Ø!%ð2ð 2ð 2ð 2ð 2ð,Jð Jð Jð Jð 	%ð 	%ð 	%ð 	%ð %)Ø:>ð	<ð <ð <ð <ð <ð4 %)Ø?Cð	Bð Bð Bð Bð Bð4 %)Ø?CØ!%ð2ð 2ð 2ð 2ð 2ð, ð
ð 
ð 
ñ „Xð
ð ðð ð ñ „Xðð ð r.   rÛ   )r0   r1   r2   r3   r4   r5   )r@   rA   r4   r   )r0   r1   r2   rT   rU   r   r4   r   )r@   rA   ra   rb   r4   r   )re   r   r4   rR   ):r,   Ú
__future__r   ÚloggingÚtypingr   r   r   r   r   r	   r
   r   r   r   r   Úlangchain_core.callbacksr   r   Ú*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    Úlangchain_core.outputsr!   r"   r#   Úlangchain_core.pydantic_v1r$   r%   Úlangchain_core.utilsr&   Ú	getLoggerr)   ÚloggerÚ	Exceptionr(   r?   rS   r`   rd   rj   r1   r-   r.   r/   ú<module>rë      sø  ðØ 1Ð 1Ø "Ð "Ð "Ð "Ð "Ð "à €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
 LÐ KÐ KÐ KÐ KÐ Kðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
 =Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5à	ˆÔ	˜8Ñ	$Ô	$€ð/ð /ð /ð /ð /˜9ñ /ô /ð /ð 	ð	ð ð ð ð ð(@ð @ð @ð @ð. <@ð2ð 2ð 2ð 2ð 2ð .ð .ð .ð .ð0ð ð ð ð0Dð Dð Dð Dð D�-ñ Dô Dð Dð Dð Dr.   