Ë
    µŒjE  ã                  ó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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)m*Z* dd
l+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1m2Z2m3Z3m4Z4m5Z5  ejl                  e7«      Z8 G d„ de«      Z9dd„Z:dd„Z;	 	 	 	 	 	 dd„Z<dd„Z=dd„Z>y)zChatYuan2 wrapper.é    )ÚannotationsN)ÚAnyÚAsyncIteratorÚCallableÚDictÚIteratorÚListÚMappingÚOptionalÚTupleÚTypeÚUnion)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚBaseChatModelÚagenerate_from_streamÚgenerate_from_stream)Ú	AIMessageÚAIMessageChunkÚBaseMessageÚBaseMessageChunkÚChatMessageÚChatMessageChunkÚFunctionMessageÚHumanMessageÚHumanMessageChunkÚSystemMessageÚSystemMessageChunk)ÚChatGenerationÚChatGenerationChunkÚ
ChatResult)Úget_from_dict_or_envÚget_pydantic_field_namesÚpre_init)Ú	BaseModelÚ
ConfigDictÚFieldÚmodel_validator)Úbefore_sleep_logÚretryÚretry_if_exception_typeÚstop_after_attemptÚwait_exponentialc                  óÂ  — e Zd ZU dZdZded<    edd¬«      Zded<    edd	¬
«      Zded<   	  ee	¬«      Z
ded<   	  edd¬
«      Zded<   	  edd¬
«      Zde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d(gd)¬
«      Zd*ed+<   	 d,Zd ed-<   	 d.Zd&ed/<   	  ed¬0«      ZedBd1„«       ZedCd2„«       Z ed3¬4«      edDd5„«       «       ZedEd6„«       ZedCd7„«       Z dFd8„Z!dGd9„Z"	 	 dH	 	 	 	 	 	 	 	 	 dId:„Z#	 	 dH	 	 	 	 	 	 	 	 	 dJd;„Z$	 	 	 	 	 	 dKd<„Z%dLd=„Z&	 	 dH	 	 	 	 	 	 	 	 	 dMd>„Z'	 	 dH	 	 	 	 	 	 	 	 	 dNd?„Z(edOd@„«       Z)edPdA„«       Z*y)QÚ	ChatYuan2a;  `Yuan2.0` Chat models API.

    To use, you should have the ``openai-python`` package installed, if package
    not installed, using ```pip install openai``` to install it. The
    environment variable ``YUAN2_API_KEY`` set to your API key, if not set,
    everyone can access apis.

    Any parameters that are valid to be passed to the openai.create call can be passed
    in, even if not explicitly saved on this class.

    Example:
        .. code-block:: python

            from langchain_community.chat_models import ChatYuan2

            chat = ChatYuan2()
    Nr   ÚclientT)ÚdefaultÚexcludeÚasync_clientÚyuan2Úmodel)r1   ÚaliasÚstrÚ
model_name)Údefault_factoryúDict[str, Any]Úmodel_kwargsÚEMPTYÚapi_keyzOptional[str]Úyuan2_api_keyzhttp://127.0.0.1:8000/v1Úbase_urlÚyuan2_api_baseÚtimeoutz+Optional[Union[float, Tuple[float, float]]]Úrequest_timeouté   ÚintÚmax_retriesFÚboolÚ	streamingzOptional[int]Ú
max_tokensg      ð?ÚfloatÚtemperaturegÍÌÌÌÌÌì?zOptional[float]Útop_pz<eod>Ústop_sequencesúOptional[List[str]]Ústopé@   Úrepeat_last_ngáz®Gáò?Úrepeat_penalty)Úpopulate_by_namec                ó
   — ddiS )Nr>   ÚYUAN2_API_KEY© ©Úselfs    úo/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/chat_models/yuan2.pyÚ
lc_secretszChatYuan2.lc_secrets�   s   € à Ð1Ð1ó    c                óv   — i }| j                   r| j                   |d<   | j                  r| j                  |d<   |S )Nr@   r>   )r@   r>   )rW   Ú
attributess     rX   Úlc_attributeszChatYuan2.lc_attributes…   s@   € à%'ˆ
à×ÒØ+/×+>Ñ+>ˆJÐ'Ñ(à×ÒØ*.×*<Ñ*<ˆJ�Ñ'àÐrZ   Úbefore)Úmodec           
     ó`  — t        | «      }|j                  di «      }t        |«      D ]M  }||v rt        d|› d�«      ‚||vsŒt        j                  d|› d|› d|› d�«       |j                  |«      ||<   ŒO |j                  |j                  «       «      }|rt        d|› d	�«      ‚||d<   |S )
z>Build extra kwargs from additional params that were passed in.r;   zFound z supplied twice.z	WARNING! z/ is not default parameter.
                    zJ was transferred to model_kwargs.
                    Please confirm that z is what you intended.zParameters za should be specified explicitly. Instead they were passed in as part of `model_kwargs` parameter.)	r#   ÚgetÚlistÚ
ValueErrorÚloggerÚwarningÚpopÚintersectionÚkeys)ÚclsÚvaluesÚall_required_field_namesÚextraÚ
field_nameÚinvalid_model_kwargss         rX   Úbuild_extrazChatYuan2.build_extra‘   sç   € ô $<¸CÓ#@Ð Ø—
‘
˜>¨2Ó.ˆÜ˜vž,ˆJØ˜UÑ"Ü  6¨*¨Ð5EÐ!FÓGÐGØÐ!9Ò9Ü—‘Ø! * ð .Ø�Lð !)Ø)3¨Ð4JðNôð
 %+§J¡J¨zÓ$:��jÒ!ð 'ð  8×DÑDÀUÇZÁZÃ\ÓRÐÙÜØÐ2Ð3ð 4Sð Tóð ð
 "'ˆˆ~ÑØˆrZ   c                ón  — t        |dd«      |d<   	 ddl}|d   |d   |d   |d   d	œ}|j                  d
«      s) |j                  di |¤Žj
                  j                  |d
<   |j                  d«      s) |j                  di |¤Žj
                  j                  |d<   |S # t        $ r t        d«      ‚w xY w)z?Validate that api key and python package exists in environment.r>   rT   r   NzTCould not import openai python package. Please install it with `pip install openai`.r@   rB   rE   )r=   r?   rA   rE   r0   r3   rU   )r"   ÚopenaiÚImportErrorra   ÚOpenAIÚchatÚcompletionsÚAsyncOpenAI)ri   rj   rq   Úclient_paramss       rX   Úvalidate_environmentzChatYuan2.validate_environment¬   sà   € ô #7Ø�O _ó#
ˆˆÑð	Ûð ˜oÑ.ØÐ/Ñ0ØÐ/Ñ0Ø! -Ñ0ñ	
ˆð �z‰z˜(Ô#Ø,˜vŸ}™}Ñ=¨}Ñ=×BÑB×NÑNˆF�8ÑØ�z‰z˜.Ô)Ø%7 V×%7Ñ%7ñ &Øñ&ç‰d—;‘;ð �>Ñ"ð ˆøô) ò 	Üð?óð ð	ús   ’B ÂB4c                óè   — | j                   | j                  | j                  | j                  dœ| j                  ¥}| j
                  �| j
                  |d<   | j                  �| j                  |d<   |S )z1Get the default parameters for calling yuan2 API.)r5   ÚstreamrJ   rK   rH   rB   )r8   rG   rJ   rK   r;   rH   rB   )rW   Úparamss     rX   Ú_default_paramszChatYuan2._default_paramsÌ   su   € ð —_‘_Ø—n‘nØ×+Ñ+Ø—Z‘Zñ	
ð
 ×Ñð
ˆð �?‰?Ð&Ø#'§?¡?ˆF�<Ñ Ø×ÑÐ+Ø(,×(<Ñ(<ˆFÐ$Ñ%ØˆrZ   c                ó@   ‡ — t        ‰ «      }|dˆ fd„«       } |di |¤ŽS )z*Use tenacity to retry the completion call.c                 ó<   •—  ‰j                   j                  di | ¤ŽS ©NrU   )r0   Úcreate)ÚkwargsrW   s    €rX   Ú_completion_with_retryz?ChatYuan2.completion_with_retry.<locals>._completion_with_retryà   s   ø€ à%�4—;‘;×%Ñ%Ñ/¨Ñ/Ð/rZ   ©r�   r   Úreturnr   rU   ©Ú_create_retry_decorator)rW   r�   Úretry_decoratorr‚   s   `   rX   Úcompletion_with_retryzChatYuan2.completion_with_retryÜ   s/   ø€ ä1°$Ó7ˆà	ô	0ó 
ð	0ñ &Ñ/¨Ñ/Ð/rZ   c                óè   — i }t         j                  dt        |«      › d|› �«       |D ]9  }|€Œ|d   }|j                  «       D ]  \  }}||v r||xx   |z  cc<   Œ|||<   Œ Œ; || j                  dœS )Nztype(llm_outputs): z; llm_outputs: Útoken_usage©rŠ   r8   )rd   ÚdebugÚtypeÚitemsr8   )rW   Úllm_outputsÚoverall_token_usageÚoutputrŠ   ÚkÚvs          rX   Ú_combine_llm_outputszChatYuan2._combine_llm_outputsæ   s”   € Ø$&ÐÜ�‰Ø!¤$ {Ó"3Ð!4°OÀKÀ=ÐQô	
ó "ˆFØˆ~àØ  Ñ/ˆKØ#×)Ñ)Ö+‘��1ØÐ+Ñ+Ø'¨Ó*¨aÑ/Ô*à-.Ð'¨Ò*ñ	 ,ð "ð  3À$Ç/Á/ÑRÐRrZ   c              +  ó6  K  — | j                  ||«      \  }}i |¥|¥ddi¥}t        } | j                  dd|i|¤ŽD ]Ù  }t        |t        «      s|j                  «       }t        |d   «      dk(  rŒ5|d   d   }	t        |	d   |«      }|	j                  d«      }
|
�t	        |
¬«      nd }|j                  }t        ||¬	«      }|rNt        |j                  t        «      r|j                  nt        |j                  «      }|j                  ||¬
«       |–— ŒÛ y ­w)Nrz   TÚmessagesÚchoicesr   ÚdeltaÚfinish_reason©r™   ©ÚmessageÚgeneration_info©ÚchunkrU   )Ú_create_message_dictsr   rˆ   Ú
isinstanceÚdictÚ
model_dumpÚlenÚ_convert_delta_to_message_chunkra   Ú	__class__r    Úcontentr7   Úon_llm_new_token©rW   r–   rN   Úrun_managerr�   Úmessage_dictsr{   Údefault_chunk_classrŸ   Úchoicer™   r�   Úcg_chunkÚtokens                 rX   Ú_streamzChatYuan2._stream÷   s5  è ø€ ð !%× :Ñ :¸8ÀTÓ JÑˆ�vØ5�FÐ5˜fÐ5 h°Ñ5ˆä6DÐØ/�T×/Ñ/ÑQ¸ÐQÈ&ÔQˆEÜ˜e¤TÔ*Ø×(Ñ(Ó*�Ü�5˜Ñ#Ó$¨Ò)ØØ˜9Ñ% aÑ(ˆFÜ3Ø�w‘Ð!4óˆEð #ŸJ™J Ó7ˆMà5BÐ5N” =Õ1ÐTXð ð #(§/¡/ÐÜ*ØØ /ôˆHñ ô " %§-¡-´Ô5ð —M’Mä˜UŸ]™]Ó+ð ð
 ×,Ñ,¨U¸(Ð,ÔCØ‹Nñ3 Rùs   ‚DDc                óÜ   — | j                   r! | j                  d|||dœ|¤Ž}t        |«      S | j                  ||«      \  }}i |¥|¥} | j                  dd|i|¤Ž}| j                  |«      S ©N)r–   rN   rª   r–   rU   )rG   r°   r   r    rˆ   Ú_create_chat_result©	rW   r–   rN   rª   r�   Ústream_iterr«   r{   Úresponses	            rX   Ú	_generatezChatYuan2._generate  s�   € ð �>Š>Ø&˜$Ÿ,™,ð Ø!¨¸+ñØIOñˆKô (¨Ó4Ð4à $× :Ñ :¸8ÀTÓ JÑˆ�vØ%�FÐ%˜fÐ%ˆØ-�4×-Ñ-ÑO°}ÐOÈÑOˆØ×'Ñ'¨Ó1Ð1rZ   c                óš   — t        | j                  «      }|�d|v rt        d«      ‚||d<   |D �cg c]  }t        |«      ‘Œ }}||fS c c}w )NrN   z2`stop` found in both the input and default params.)r¢   Ú_invocation_paramsrc   Ú_convert_message_to_dict)rW   r–   rN   r{   Úmr«   s         rX   r    zChatYuan2._create_message_dicts/  sb   € ô �d×-Ñ-Ó.ˆØÐØ˜ÑÜ Ð!UÓVÐVØ!ˆF�6‰NÙ>FÓG¹h¸Ô1°!Õ4¸hˆÐGØ˜fÐ$Ð$ùò Hs   °Ac                óˆ  — g }t         j                  dt        |«      › d|› �«       t        |t        «      s|j	                  «       }|d   D ]I  }t        |d   «      }t	        |d   ¬«      }d|v r|d   |d<   t        ||¬«      }|j                  |«       ŒK |j                  d	i «      | j                  d
œ}t        ||¬«      S )Nztype(response): z; response: r—   rœ   r™   rš   Úlogprobsr›   Úusager‹   )ÚgenerationsÚ
llm_output)rd   rŒ   r�   r¡   r¢   Ú_convert_dict_to_messager   Úappendra   r8   r!   )rW   r¶   r¿   Úresrœ   r�   ÚgenrÀ   s           rX   r³   zChatYuan2._create_chat_result:  sÊ   € ØˆÜ�‰Ð'¬¨X«Ð'7°|ÀHÀ:ÐNÔOÜ˜(¤DÔ)Ø—}‘}“ˆHØ˜IÔ&ˆCÜ.¨s°9©~Ó>ˆGÜ"°°_Ñ1EÔFˆOØ˜SÑ Ø.1°*©o� 
Ñ+Ü ØØ /ôˆCð ×Ñ˜sÕ#ð 'ð $Ÿ<™<¨°Ó4ØŸ/™/ñ
ˆ
ô  k¸jÔIÐIrZ   c               ód  K  — | j                  ||«      \  }}i |¥|¥ddi¥}t        }t        | fd|i|¤Žƒ d {  –—† 2 3 d {  –—† }t        |t        «      s|j                  «       }t        |d   «      dk(  rŒ;|d   d   }	t        |	d   |«      }|	j                  d«      }
|
�t	        |
¬«      nd }|j                  }t        ||¬	«      }|rVt        |j                  t        «      r|j                  nt        |j                  «      }|j                  ||¬
«      ƒ d {  –—†  |­–— Œê7 Œî7 Œç7 Œ6 y ­w)Nrz   Tr–   r—   r   r˜   r™   rš   r›   rž   )r    r   Úacompletion_with_retryr¡   r¢   r£   r¤   r¥   ra   r¦   r    r§   r7   r¨   r©   s                 rX   Ú_astreamzChatYuan2._astreamO  sa  è ø€ ð !%× :Ñ :¸8ÀTÓ JÑˆ�vØ5�FÐ5˜fÐ5 h°Ñ5ˆä6DÐÜ!7Øñ"
Ø(ð"
Ø,2ñ"
÷ 
ð 
÷ 	�%ô ˜e¤TÔ*Ø×(Ñ(Ó*�Ü�5˜Ñ#Ó$¨Ò)ØØ˜9Ñ% aÑ(ˆFÜ3Ø�w‘Ð!4óˆEð #ŸJ™J Ó7ˆMà5BÐ5N” =Õ1ÐTXð ð #(§/¡/ÐÜ*ØØ /ôˆHñ ô " %§-¡-´Ô5ð —M’Mä˜UŸ]™]Ó+ð ð
 "×2Ñ2°5ÀÐ2ÓI×IÐIØŒNð7
øð 	øð4 Jøñ5
ùsE   ‚7D0¹D(ºD0¾D.ÁD*ÁD.ÁCD0ÄD,ÄD0Ä*D.Ä,D0Ä.D0c              ‹  ó   K  — | j                   r) | j                  d|||dœ|¤Ž}t        |«      ƒ d {  –—† S | j                  ||«      \  }}i |¥|¥}t	        | fd|i|¤Žƒ d {  –—† }| j                  |«      S 7 ŒF7 Œ­wr²   )rG   rÇ   r   r    rÆ   r³   r´   s	            rX   Ú
_ageneratezChatYuan2._ageneratew  sž   è ø€ ð �>Š>Ø'˜$Ÿ-™-ð Ø!¨¸+ñØIOñˆKô /¨{Ó;×;Ð;à $× :Ñ :¸8ÀTÓ JÑˆ�vØ%�FÐ%˜fÐ%ˆÜ/°ÑW¸}ÐWÐPVÑW×WˆØ×'Ñ'¨Ó1Ð1ð <øð Xús!   ‚1A>³A:´0A>Á$A<Á%A>Á<A>c                ó>   — d| j                   i}i |¥| j                  ¥S )z,Get the parameters used to invoke the model.r5   )r8   r|   )rW   Úyuan2_credss     rX   r¹   zChatYuan2._invocation_params‰  s,   € ð �T—_‘_ð'
ˆð 7�+Ð6 ×!5Ñ!5Ð6Ð6rZ   c                 ó   — y)zReturn type of chat model.z
chat-yuan2rU   rV   s    rX   Ú	_llm_typezChatYuan2._llm_type‘  s   € ð rZ   )r„   zDict[str, str])r„   r:   )rj   r:   r„   r   )rj   r   r„   r   rƒ   )r�   zList[Optional[dict]]r„   r¢   )NN)
r–   úList[BaseMessage]rN   rM   rª   ú"Optional[CallbackManagerForLLMRun]r�   r   r„   zIterator[ChatGenerationChunk])
r–   rÎ   rN   rM   rª   rÏ   r�   r   r„   r!   )r–   rÎ   rN   rM   r„   z+Tuple[List[Dict[str, Any]], Dict[str, Any]])r¶   zUnion[dict, BaseModel]r„   r!   )
r–   rÎ   rN   rM   rª   ú'Optional[AsyncCallbackManagerForLLMRun]r�   r   r„   z"AsyncIterator[ChatGenerationChunk])
r–   rÎ   rN   rM   rª   rÐ   r�   r   r„   r!   )r„   úMapping[str, Any])r„   r7   )+Ú__name__Ú
__module__Ú__qualname__Ú__doc__r0   Ú__annotations__r'   r3   r8   r¢   r;   r>   r@   rB   rE   rG   rH   rJ   rK   rN   rP   rQ   r&   Úmodel_configÚpropertyrY   r]   r(   Úclassmethodro   r$   rx   r|   rˆ   r”   r°   r·   r    r³   rÇ   rÉ   r¹   rÍ   rU   rZ   rX   r/   r/   <   sÕ  … ñð$ €FˆCÓÙ d°DÔ9€L�#Ó9á G°7Ô;€J�Ó;Øá#(¸Ô#>€L�.Ó>ØVá#(°À	Ô#J€M�=ÓJØNá$)Ø*°*ô%€N�Mó ð KáCHØ˜IôD€OÐ@ó ð Pà€K�ÓØ<à€IˆtÓØ/à $€J�Ó$Ø/à€K�ÓØ+à €Eˆ?Ó Ø.á %¨w¨iÐ?OÔ P€DÐ
ÓPØ@à#%€M�=Ó%Øà&*€N�OÓ*Ø2áØô€Lð ò2ó ð2ð ò	ó ð	ñ ˜(Ô#Øòó ó $ðð2 òó ðð> òó ðó0óSð( %)Ø:>ð	$à#ð$ð "ð$ð 8ð	$ð
 ð$ð 
'ó$ðR %)Ø:>ð	2à#ð2ð "ð2ð 8ð	2ð
 ð2ð 
ó2ð$	%Ø)ð	%Ø1Dð	%à	4ó	%óJð0 %)Ø?Cð	&à#ð&ð "ð&ð =ð	&ð
 ð&ð 
,ó&ðV %)Ø?Cð	2à#ð2ð "ð2ð =ð	2ð
 ð2ð 
ó2ð$ ò7ó ð7ð òó ñrZ   r/   c           
     ó~  — dd l }d}d}t        dt        | j                  «      t	        d||¬«      t        |j                  «      t        |j                  «      z  t        |j                  «      z  t        |j                  «      z  t        |j                  «      z  t        t        t        j                  «      ¬«      S )Nr   é   é<   T)Ú
multiplierÚminÚmax)ÚreraiserN   Úwaitr*   Úbefore_sleep)rq   r*   r,   rE   r-   r+   ÚAPITimeoutErrorÚAPIErrorÚAPIConnectionErrorÚRateLimitErrorÚInternalServerErrorr)   rd   ÚloggingÚWARNING)Úllmrq   Úmin_secondsÚmax_secondss       rX   r†   r†   —  s§   € Ûà€KØ€Kô ØÜ §¡Ó0Ü¨°ÀÔMä# F×$:Ñ$:Ó;Ü% f§o¡oÓ6ñ7ä% f×&?Ñ&?Ó@ñAô & f×&;Ñ&;Ó<ñ=ô & f×&@Ñ&@ÓAñ	Bô &¤f¬g¯o©oÓ>ôð rZ   c              ‹  ó\   ‡ K  — t        ‰ «      }|dˆ fd„«       } |di |¤Žƒ d{  –—† S 7 Œ­w)z0Use tenacity to retry the async completion call.c               ›  óX   •K  —  ‰j                   j                  di | ¤Žƒ d {  –—† S 7 Œ­wr   )r3   r€   )r�   rê   s    €rX   r‚   z6acompletion_with_retry.<locals>._completion_with_retry±  s+   øè ø€ ð -�S×%Ñ%×,Ñ,Ñ6¨vÑ6×6Ð6Ð6ús   ƒ *£(¤*Nrƒ   rU   r…   )rê   r�   r‡   r‚   s   `   rX   rÆ   rÆ   ­  s9   øè ø€ ä-¨cÓ2€Oàô7ó ð7ñ (Ñ1¨&Ñ1×1Ð1Ð1ús   ƒ",¥*¦,c                ó,  — | j                  d«      }| j                  d«      xs d}|dk(  s	|t        k(  rt        |¬«      S |dk(  s	|t        k(  rt        |¬«      S |dk(  s	|t        k(  rt        |¬«      S |s	|t        k(  rt	        ||¬«      S  ||¬«      S )	NÚroler§   Ú Úuser©r§   Ú	assistantÚsystem©r§   rð   )ra   r   r   r   r   )Ú_dictÚdefault_classrð   r§   s       rX   r¥   r¥   ¹  s—   € ð �9‰9�VÓ€DØ�i‰i˜	Ó"Ò( b€Gàˆv‚~˜Ô*;Ò;Ü ¨Ô1Ð1Ø	�Ò	 ´Ò ?Ü gÔ.Ð.Ø	�Ò	˜]Ô.@Ò@Ü!¨'Ô2Ð2Ù	�Ô"2Ò2Ü¨°dÔ;Ð;á WÔ-Ð-rZ   c                ó$  — | j                  d«      }|dk(  rt        | j                  dd«      ¬«      S |dk(  rt        | j                  dd«      ¬«      S |dk(  rt        | j                  dd«      ¬«      S t	        | j                  dd«      |¬«      S )	Nrð   rò   r§   rñ   ró   rô   rõ   rö   )ra   r   r   r   r   )r÷   rð   s     rX   rÁ   rÁ   Ë  s�   € Ø�9‰9�VÓ€DØˆv‚~Ü E§I¡I¨i¸Ó$<Ô=Ð=Ø	�Ò	Ü §¡¨9°bÓ!9Ô:Ð:Ø	�Ò	Ü U§Y¡Y¨y¸"Ó%=Ô>Ð>ä 5§9¡9¨Y¸Ó#;À$ÔGÐGrZ   c                óÌ  — t        | t        «      r| j                  | j                  dœ}n™t        | t        «      rd| j                  dœ}nyt        | t
        «      rd| j                  dœ}nYt        | t        «      rd| j                  dœ}n9t        | t        «      rd| j                  | j                  dœ}nt        d| › �«      ‚d| j                  v r| j                  d   |d<   |S )	zŠConvert a LangChain message to a dictionary.

    Args:
        message: The LangChain message.

    Returns:
        The dictionary.
    )rð   r§   rò   rô   rõ   Úfunction)rð   Únamer§   zGot unknown type rü   )r¡   r   rð   r§   r   r   r   r   rü   rc   Úadditional_kwargs)rœ   Úmessage_dicts     rX   rº   rº   ×  sÈ   € ô �'œ;Ô'Ø '§¡¸¿¹ÑI‰Ü	�Gœ\Ô	*Ø &°7·?±?ÑC‰Ü	�GœYÔ	'Ø +¸¿¹ÑH‰Ü	�Gœ]Ô	+Ø (°W·_±_ÑE‰Ü	�Gœ_Ô	-àØ—L‘LØ—‘ñ
‰ô Ð,¨W¨IÐ6Ó7Ð7Ø�×*Ñ*Ñ*Ø&×8Ñ8¸Ñ@ˆ�VÑØÐrZ   )rê   r/   r„   zCallable[[Any], Any])rê   r/   r�   r   r„   r   )r÷   rÑ   rø   zType[BaseMessageChunk]r„   r   )r÷   rÑ   r„   r   )rœ   r   r„   r¢   )?rÕ   Ú
__future__r   rè   Ú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.messagesr   r   r   r   r   r   r   r   r   r   r   Úlangchain_core.outputsr   r    r!   Úlangchain_core.utilsr"   r#   r$   Úpydanticr%   r&   r'   r(   Útenacityr)   r*   r+   r,   r-   Ú	getLoggerrÒ   rd   r/   r†   rÆ   r¥   rÁ   rº   rU   rZ   rX   Ú<module>r	     sÀ   ðÙ å "ã ÷÷ ÷ ñ ÷÷ñ ÷
÷ ÷ ñ ÷ SÑ R÷ñ ÷
 CÓ B÷õ ð 
ˆ×	Ñ	˜8Ó	$€ôX�ô Xóv
ó,	2ð.Øð.Ø-Cð.àó.ó$	HôrZ   