§
    šŠtjÜ;  ã                  ón  — 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*m+Z+ dd
l,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5m6Z6  ej7        e8¦  «        Z9d d„Z:d!d„Z;d"d„Z<d#d„Z=d$d„Z> G d„ de¦  «        Z?dS )%zJinaChat 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)Úconvert_to_secret_strÚget_from_dict_or_envÚget_pydantic_field_namesÚpre_init)Ú
ConfigDictÚFieldÚ	SecretStrÚmodel_validator)Úbefore_sleep_logÚretryÚretry_if_exception_typeÚstop_after_attemptÚwait_exponentialÚllmÚJinaChatÚreturnúCallable[[Any], Any]c           
     ó¶  — dd l }d}d}t          dt          | j        ¦  «        t	          d||¬¦  «        t          |j        j        ¦  «        t          |j        j        ¦  «        z  t          |j        j	        ¦  «        z  t          |j        j
        ¦  «        z  t          |j        j        ¦  «        z  t          t          t          j        ¦  «        ¬¦  «        S ©Nr   é   é<   T)Ú
multiplierÚminÚmax)ÚreraiseÚstopÚwaitr+   Úbefore_sleep©Úopenair+   r-   Úmax_retriesr.   r,   ÚerrorÚTimeoutÚAPIErrorÚAPIConnectionErrorÚRateLimitErrorÚServiceUnavailableErrorr*   ÚloggerÚloggingÚWARNING)r/   r?   Úmin_secondsÚmax_secondss       úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/chat_models/jinachat.pyÚ_create_retry_decoratorrM   =   sÌ   € Ø€M€M€Mà€KØ€Kõ ØÝ ¤Ñ0Ô0Ý¨°ÀÐMÑMÔMå# F¤LÔ$8Ñ9Ô9Ý% f¤lÔ&;Ñ<Ô<ñ=å% f¤lÔ&EÑFÔFñGõ & f¤lÔ&AÑBÔBñCõ & f¤lÔ&JÑKÔKñ	Lõ &¥f­g¬oÑ>Ô>ðñ ô ð ó    Úkwargsr   c              ‹  ó^   ‡ K  — t          ‰ ¦  «        }|dˆ fd„¦   «         } |di |¤Žƒ d{V —†S )z0Use tenacity to retry the async completion call.rO   r   r1   c               ›  ó8   •K  —  ‰j         j        di | ¤Žƒ d {V —†S ©N© )ÚclientÚacreate)rO   r/   s    €rL   Ú_completion_with_retryz6acompletion_with_retry.<locals>._completion_with_retryW   s6   øè è € ð (�S”ZÔ'Ð1Ð1¨&Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1rN   N©rO   r   r1   r   rS   ©rM   )r/   rO   Úretry_decoratorrV   s   `   rL   Úacompletion_with_retryrZ   S   sg   øè è € å-¨cÑ2Ô2€Oàð2ð 2ð 2ð 2ð 2ñ „_ð2ð (Ð'Ð1Ð1¨&Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1rN   Ú_dictúMapping[str, Any]Údefault_classúType[BaseMessageChunk]r   c                ót  — |                       d¦  «        }|                       d¦  «        p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ÚroleÚcontentÚ Úuser©ra   Ú	assistantÚsystem©ra   r`   )Úgetr   r   r   r   )r[   r]   r`   ra   s       rL   Ú_convert_delta_to_message_chunkri   _   sÖ   € ð �9Š9�VÑÔ€DØ�iŠi˜	Ñ"Ô"Ð( b€Gàˆv‚~€~˜Õ*;Ò;Ð;Ý ¨Ð1Ñ1Ô1Ð1Ø	�Ò	Ð	 µÒ ?Ð ?Ý gÐ.Ñ.Ô.Ð.Ø	�Ò	Ð	˜]Õ.@Ò@Ð@Ý!¨'Ð2Ñ2Ô2Ð2Ø	ð .�Õ"2Ò2Ð2Ý¨°dÐ;Ñ;Ô;Ð;àˆ} WÐ-Ñ-Ô-Ð-rN   r   c                óð   — | d         }|dk    rt          | d         ¬¦  «        S |dk    r| d         pd}t          |¬¦  «        S |dk    rt          | d         ¬¦  «        S t          | d         |¬¦  «        S )	Nr`   rc   ra   rd   re   rb   rf   rg   )r   r   r   r   )r[   r`   ra   s      rL   Ú_convert_dict_to_messagerk   q   sŽ   € Ø�Œ=€DØˆv‚~€~Ý E¨)Ô$4Ð5Ñ5Ô5Ð5Ø	�Ò	Ð	Ø˜	Ô"Ð( bˆÝ Ð)Ñ)Ô)Ð)Ø	�Ò	Ð	Ý U¨9Ô%5Ð6Ñ6Ô6Ð6å 5¨Ô#3¸$Ð?Ñ?Ô?Ð?rN   ÚmessageÚdictc                ó²  — t          | t          ¦  «        r| j        | j        dœ}n˜t          | t          ¦  «        rd| j        dœ}nxt          | t
          ¦  «        rd| j        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)r`   ra   rc   re   rf   Úfunction)r`   Únamera   zGot unknown type rp   )Ú
isinstancer   r`   ra   r   r   r   r   rp   Ú
ValueErrorÚadditional_kwargs)rl   Úmessage_dicts     rL   Ú_convert_message_to_dictru   ~   sü   € Ý�'�;Ñ'Ô'ð 8Ø '¤¸¼ÐIÐIˆˆÝ	�G�\Ñ	*Ô	*ð 8Ø &°7´?ÐCÐCˆˆÝ	�G�YÑ	'Ô	'ð 8Ø +¸¼ÐHÐHˆˆÝ	�G�]Ñ	+Ô	+ð 	8Ø (°W´_ÐEÐEˆˆÝ	�G�_Ñ	-Ô	-ð 8àØ”LØ”ð
ð 
ˆˆõ Ð6¨WÐ6Ð6Ñ7Ô7Ð7Ø�Ô*Ð*Ð*Ø&Ô8¸Ô@ˆ�VÑØÐrN   c                  óê  — e Zd ZU dZedBd„¦   «         ZedCd„¦   «         Z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d¬¦  «        Z ed¬¦  «        edDd „¦   «         ¦   «         ZedEd"„¦   «         ZedFd#„¦   «         ZdGd%„ZdHd'„ZdId+„Z	 	 dJdKd3„Z	 	 dJdLd5„ZdMd7„ZdNd:„Z 	 	 dJdOd=„Z!	 	 dJdPd>„Z"edQd?„¦   «         Z#edRdA„¦   «         Z$dS )Sr0   a  `Jina AI` Chat models API.

    To use, you should have the ``openai`` python package installed, and the
    environment variable ``JINACHAT_API_KEY`` set to your API key, which you
    can generate at https://chat.jina.ai/api.

    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 JinaChat
            chat = JinaChat()
    r1   úDict[str, str]c                ó
   — ddiS )NÚjinachat_api_keyÚJINACHAT_API_KEYrS   ©Úselfs    rL   Ú
lc_secretszJinaChat.lc_secrets¥   s   € à"Ð$6Ð7Ð7rN   Úboolc                ó   — dS )z9Return whether this model can be serialized by Langchain.FrS   )Úclss    rL   Úis_lc_serializablezJinaChat.is_lc_serializable©   s	   € ð ˆurN   Nr   rT   gffffffæ?ÚfloatÚtemperature)Údefault_factoryúDict[str, Any]Úmodel_kwargszOptional[SecretStr]ry   z+Optional[Union[float, Tuple[float, float]]]Úrequest_timeouté   Úintr@   FÚ	streamingzOptional[int]Ú
max_tokensT)Úpopulate_by_nameÚbefore)ÚmodeÚvaluesc           
     ó¤  — t          | ¦  «        }|                     di ¦  «        }t          |¦  «        D ]Y}||v rt          d|› d�¦  «        ‚||vr<t                               d|› d|› d|› d�¦  «         |                     |¦  «        ||<   ŒZ|                     |                     ¦   «         ¦  «        }|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$   rh   Úlistrr   rG   ÚwarningÚpopÚintersectionÚkeys)r€   r�   Úall_required_field_namesÚextraÚ
field_nameÚinvalid_model_kwargss         rL   Úbuild_extrazJinaChat.build_extraÃ   s4  € õ $<¸CÑ#@Ô#@Ð Ø—
’
˜>¨2Ñ.Ô.ˆÝ˜v™,œ,ð 		;ð 		;ˆJØ˜UÐ"Ð"Ý Ð!F¨*Ð!FÐ!FÐ!FÑGÔGÐGØÐ!9Ð9Ð9Ý—’ðN *ð Nð NØðNð Nà)3ðNð Nð Nñô ð ð
 %+§J¢J¨zÑ$:Ô$:��jÑ!øà7×DÒDÀUÇZÂZÁ\Ä\ÑRÔRÐØð 	ÝðTÐ2ð Tð Tð Tñô ð ð
 "'ˆˆ~ÑØˆrN   r   c                óà   — t          t          |dd¦  «        ¦  «        |d<   	 ddl}n# t          $ r t          d¦  «        ‚w xY w	 |j        |d<   n# t
          $ r t          d¦  «        ‚w xY w|S )z?Validate that api key and python package exists in environment.ry   rz   r   NzTCould not import openai python package. Please install it with `pip install openai`.rT   z�`openai` has no `ChatCompletion` attribute, this is likely due to an old version of the openai package. Try upgrading it with `pip install --upgrade openai`.)r"   r#   r?   ÚImportErrorÚChatCompletionÚAttributeErrorrr   )r€   r�   r?   s      rL   Úvalidate_environmentzJinaChat.validate_environmentÞ   sº   € õ &;Ý  Ð);Ð=OÑPÔPñ&
ô &
ˆÐ!Ñ"ð	ØˆMˆMˆMˆMøåð 	ð 	ð 	Ýð?ñô ð ð	øøøð
	Ø%Ô4ˆF�8ÑÐøÝð 	ð 	ð 	Ýð7ñô ð ð	øøøð ˆs   £( ¨AÁ
A ÁA+c                óF   — | j         | j        | j        | j        dœ| j        ¥S )z4Get the default parameters for calling JinaChat API.)r‡   r‹   Ústreamrƒ   )r‡   r‹   rŠ   rƒ   r†   r{   s    rL   Ú_default_paramszJinaChat._default_paramsö   s6   € ð  $Ô3Øœ/Ø”nØÔ+ð	
ð 
ð
 Ôð
ð 	
rN   r2   c           
     ó¶  — dd l }d}d}t          dt          | j        ¦  «        t	          d||¬¦  «        t          |j        j        ¦  «        t          |j        j        ¦  «        z  t          |j        j	        ¦  «        z  t          |j        j
        ¦  «        z  t          |j        j        ¦  «        z  t          t          t          j        ¦  «        ¬¦  «        S r4   r>   )r|   r?   rJ   rK   s       rL   rM   z JinaChat._create_retry_decorator  sÎ   € ØˆˆˆàˆØˆõ ØÝ# DÔ$4Ñ5Ô5Ý!¨Q°KÀ[ÐQÑQÔQå'¨¬Ô(<Ñ=Ô=Ý)¨&¬,Ô*?Ñ@Ô@ñAå)¨&¬,Ô*IÑJÔJñKõ *¨&¬,Ô*EÑFÔFñGõ *¨&¬,Ô*NÑOÔOñ	Põ *­&µ'´/ÑBÔBð
ñ 
ô 
ð 	
rN   rO   c                óX   ‡ — ‰                       ¦   «         }|dˆ fd„¦   «         } |di |¤ŽS )z*Use tenacity to retry the completion call.rO   r   r1   c                 ó(   •—  ‰j         j        di | ¤ŽS rR   )rT   Úcreate)rO   r|   s    €rL   rV   z>JinaChat.completion_with_retry.<locals>._completion_with_retry  s   ø€ à%�4”;Ô%Ð/Ð/¨Ð/Ð/Ð/rN   rW   rS   rX   )r|   rO   rY   rV   s   `   rL   Úcompletion_with_retryzJinaChat.completion_with_retry  sU   ø€ à×6Ò6Ñ8Ô8ˆà	ð	0ð 	0ð 	0ð 	0ð 	0ñ 
Œð	0ð &Ð%Ð/Ð/¨Ð/Ð/Ð/rN   Úllm_outputsúList[Optional[dict]]rm   c                ó–   — i }|D ]A}|€Œ|d         }|                      ¦   «         D ]\  }}||v r||xx         |z  cc<   Œ|||<   Œ ŒBd|iS )NÚtoken_usage)Úitems)r|   r¨   Úoverall_token_usageÚoutputr«   ÚkÚvs          rL   Ú_combine_llm_outputszJinaChat._combine_llm_outputs   s”   € Ø$&ÐØ!ð 		/ð 		/ˆFØˆ~àØ  Ô/ˆKØ#×)Ò)Ñ+Ô+ð /ð /‘��1ØÐ+Ð+Ð+Ø'¨Ð*Ð*Ô*¨aÑ/Ð*Ð*Ñ*Ð*à-.Ð'¨Ñ*Ð*ð	/ð
 Ð2Ð3Ð3rN   ÚmessagesúList[BaseMessage]r;   úOptional[List[str]]Úrun_managerú"Optional[CallbackManagerForLLMRun]úIterator[ChatGenerationChunk]c              +  óV  K  — |                       ||¦  «        \  }}i |¥|¥ddi¥}t          } | j        d	d|i|¤ŽD ]l}|d         d         d         }	t          |	|¦  «        }|j        }t          |¬¦  «        }
|r)|                     t          |j        ¦  «        |
¬¦  «         |
V — Œmd S )
Nr¡   Tr²   Úchoicesr   Údelta©rl   ©ÚchunkrS   )	Ú_create_message_dictsr   r§   ri   Ú	__class__r    Úon_llm_new_tokenÚstrra   ©r|   r²   r;   rµ   rO   Úmessage_dictsÚparamsÚdefault_chunk_classr½   rº   Úcg_chunks              rL   Ú_streamzJinaChat._stream.  så   è è € ð !%× :Ò :¸8ÀTÑ JÔ JÑˆ�vØ5�FÐ5˜fÐ5 h°Ð5Ð5ˆå6DÐØ/�TÔ/ÐQÐQ¸ÐQÈ&ÐQÐQð 	ð 	ˆEØ˜)Ô$ QÔ'¨Ô0ˆEÝ3°EÐ;NÑOÔOˆEØ"'¤/ÐÝ*°5Ð9Ñ9Ô9ˆHØð QØ×,Ò,­S°´Ñ-?Ô-?ÀxÐ,ÑPÔPÐPØˆNˆNˆNˆNð	ð 	rN   r!   c                óÖ   — | j         r  | j        d|||dœ|¤Ž}t          |¦  «        S |                      ||¦  «        \  }}i |¥|¥} | j        dd|i|¤Ž}|                      |¦  «        S ©N)r²   r;   rµ   r²   rS   )rŠ   rÇ   r   r¾   r§   Ú_create_chat_result©	r|   r²   r;   rµ   rO   Ústream_iterrÃ   rÄ   Úresponses	            rL   Ú	_generatezJinaChat._generateB  s¤   € ð Œ>ð 	5Ø&˜$œ,ð Ø!¨¸+ðð ØIOðð ˆKõ (¨Ñ4Ô4Ð4à $× :Ò :¸8ÀTÑ JÔ JÑˆ�vØ%�FÐ%˜fÐ%ˆØ-�4Ô-ÐOÐO°}ÐOÈÐOÐOˆØ×'Ò'¨Ñ1Ô1Ð1rN   ú+Tuple[List[Dict[str, Any]], Dict[str, Any]]c                ó~   — t          | 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 rS   )ru   )Ú.0Úms     rL   ú
<listcomp>z2JinaChat._create_message_dicts.<locals>.<listcomp>\  s!   € ÐGÐGÐG¸Õ1°!Ñ4Ô4ÐGÐGÐGrN   )rm   Ú_invocation_paramsrr   )r|   r²   r;   rÄ   rÃ   s        rL   r¾   zJinaChat._create_message_dictsT  s[   € õ �dÔ-Ñ.Ô.ˆØÐØ˜ÐÐÝ Ð!UÑVÔVÐVØ!ˆF�6‰NØGÐG¸hÐGÑGÔGˆØ˜fÐ$Ð$rN   rÍ   r\   c                óÆ   — g }|d         D ]<}t          |d         ¦  «        }t          |¬¦  «        }|                     |¦  «         Œ=d|d         i}t          ||¬¦  «        S )Nr¹   rl   r»   r«   Úusage)ÚgenerationsÚ
llm_output)rk   r   Úappendr!   )r|   rÍ   rØ   Úresrl   ÚgenrÙ   s          rL   rÊ   zJinaChat._create_chat_result_  su   € ØˆØ˜IÔ&ð 	$ð 	$ˆCÝ.¨s°9¬~Ñ>Ô>ˆGÝ ¨Ð1Ñ1Ô1ˆCØ×Ò˜sÑ#Ô#Ð#Ð#Ø# X¨gÔ%6Ð7ˆ
Ý k¸jÐIÑIÔIÐIrN   ú'Optional[AsyncCallbackManagerForLLMRun]ú"AsyncIterator[ChatGenerationChunk]c               ó|  K  — |                       ||¦  «        \  }}i |¥|¥ddi¥}t          }t          | fd|i|¤Žƒ d {V —†2 3 d {V —†}|d         d         d         }	t          |	|¦  «        }|j        }t          |¬¦  «        }
|r/|                     t          |j        ¦  «        |
¬¦  «        ƒ d {V —† |
W V — Œy6 d S )	Nr¡   Tr²   r¹   r   rº   r»   r¼   )	r¾   r   rZ   ri   r¿   r    rÀ   rÁ   ra   rÂ   s              rL   Ú_astreamzJinaChat._astreamh  sA  è è € ð !%× :Ò :¸8ÀTÑ JÔ JÑˆ�vØ5�FÐ5˜fÐ5 h°Ð5Ð5ˆå6DÐÝ!7Øð"
ð "
Ø(ð"
Ø,2ð"
ð "
ð 
ð 
ð 
ð 
ð 
ð 
ð 		ð 		ð 		ð 		ð 		ð 		ð 		�%ð ˜)Ô$ QÔ'¨Ô0ˆEÝ3°EÐ;NÑOÔOˆEØ"'¤/ÐÝ*°5Ð9Ñ9Ô9ˆHØð WØ!×2Ò2µ3°u´}Ñ3EÔ3EÈXÐ2ÑVÔVÐVÐVÐVÐVÐVÐVÐVØˆNˆNˆNˆNˆNð
ð 
ð 
s   ÁB;c              ‹  óò   K  — | j         r& | j        d|||dœ|¤Ž}t          |¦  «        ƒ d {V —†S |                      ||¦  «        \  }}i |¥|¥}t	          | fd|i|¤Žƒ d {V —†}|                      |¦  «        S rÉ   )rŠ   rà   r   r¾   rZ   rÊ   rË   s	            rL   Ú
_ageneratezJinaChat._agenerate~  sÊ   è è € ð Œ>ð 	<Ø'˜$œ-ð Ø!¨¸+ðð ØIOðð ˆKõ /¨{Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;à $× :Ò :¸8ÀTÑ JÔ JÑˆ�vØ%�FÐ%˜fÐ%ˆÝ/°ÐWÐW¸}ÐWÐPVÐWÐWÐWÐWÐWÐWÐWÐWˆØ×'Ò'¨Ñ1Ô1Ð1rN   c                ó`   — | j         o| j                              ¦   «         dddœ}i |¥| j        ¥S )z,Get the parameters used to invoke the model.zhttps://api.chat.jina.ai/v1Újinachat)Úapi_keyÚapi_baseÚmodel)ry   Úget_secret_valuer¢   )r|   Újinachat_credss     rL   rÕ   zJinaChat._invocation_params�  sH   € ð Ô,ð 9ØÔ%×6Ò6Ñ8Ô8Ø5Øð	*
ð *
ˆð :�.Ð9 DÔ$8Ð9Ð9rN   rÁ   c                ó   — dS )zReturn type of chat model.rä   rS   r{   s    rL   Ú	_llm_typezJinaChat._llm_type›  s	   € ð ˆzrN   )r1   rw   )r1   r~   )r�   r…   r1   r   )r�   r   r1   r   )r1   r…   )r1   r2   rW   )r¨   r©   r1   rm   )NN)
r²   r³   r;   r´   rµ   r¶   rO   r   r1   r·   )
r²   r³   r;   r´   rµ   r¶   rO   r   r1   r!   )r²   r³   r;   r´   r1   rÏ   )rÍ   r\   r1   r!   )
r²   r³   r;   r´   rµ   rÝ   rO   r   r1   rÞ   )
r²   r³   r;   r´   rµ   rÝ   rO   r   r1   r!   )r1   r\   )r1   rÁ   )%Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr}   Úclassmethodr�   rT   Ú__annotations__rƒ   r'   rm   r†   ry   r‡   r@   rŠ   r‹   r&   Úmodel_configr)   rš   r%   rŸ   r¢   rM   r§   r±   rÇ   rÎ   r¾   rÊ   rà   râ   rÕ   rë   rS   rN   rL   r0   r0   ”   sÌ  € € € € € € ðð ð  ð8ð 8ð 8ñ „Xð8ð ðð ð ñ „[ðð €FÐÐÐÑØ€KÐÐÐÑØ+Ø#( 5¸Ð#>Ñ#>Ô#>€LÐ>Ð>Ð>Ñ>ØVØ,0ÐÐ0Ð0Ð0Ñ0ð=àCG€OÐGÐGÐGÑGØRØ€KÐÐÐÑØ<Ø€IÐÐÐÑØ/Ø $€JÐ$Ð$Ð$Ñ$Ø/à�:Øðñ ô €Lð €_˜(Ð#Ñ#Ô#Øðð ð ñ „[ñ $Ô#ðð2 ðð ð ñ „Xðð. ð
ð 
ð 
ñ „Xð
ð
ð 
ð 
ð 
ð*0ð 0ð 0ð 0ð4ð 4ð 4ð 4ð" %)Ø:>ð	ð ð ð ð ð. %)Ø:>ð	2ð 2ð 2ð 2ð 2ð$	%ð 	%ð 	%ð 	%ðJð Jð Jð Jð %)Ø?Cð	ð ð ð ð ð2 %)Ø?Cð	2ð 2ð 2ð 2ð 2ð$ ð:ð :ð :ñ „Xð:ð ðð ð ñ „Xðð ð rN   )r/   r0   r1   r2   )r/   r0   rO   r   r1   r   )r[   r\   r]   r^   r1   r   )r[   r\   r1   r   )rl   r   r1   rm   )@rï   Ú
__future__r   rH   Ú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$   r%   Úpydanticr&   r'   r(   r)   Útenacityr*   r+   r,   r-   r.   Ú	getLoggerrì   rG   rM   rZ   ri   rk   ru   r0   rS   rN   rL   ú<module>rþ      s  ðØ Ð à "Ð "Ð "Ð "Ð "Ð "à €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð SÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ Rðð ð ð ð ð ð ð ð ð ð ð ð CÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bðð ð ð ð ð ð ð ð ð ð ð ð ð ð 
ˆÔ	˜8Ñ	$Ô	$€ðð ð ð ð,	2ð 	2ð 	2ð 	2ð.ð .ð .ð .ð$
@ð 
@ð 
@ð 
@ðð ð ð ð,Jð Jð Jð Jð Jˆ}ñ Jô Jð Jð Jð JrN   