§
    šŠtj›;  ã                  ó`  — d dl mZ d dl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 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mZ d dlmZ d d	l m!Z! d d
l"m#Z#m$Z$m%Z%m&Z&m'Z'  ej(        e)¦  «        Z* ed¦  «        Z+d d„Z,d!d„Z-d"d„Z.d"d„Z/d"d„Z0d#d„Z1d$d„Z2 G d„ de¦  «        Z3dS )%é    )ÚannotationsN)ÚAnyÚAsyncIterableÚAsyncIteratorÚCallableÚDictÚIterableÚIteratorÚListÚMappingÚOptionalÚTupleÚTypeVar)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚBaseLLM)Ú
GenerationÚGenerationChunkÚ	LLMResult)Úget_from_dict_or_envÚpre_init)ÚField)Ú	HTTPError)Úbefore_sleep_logÚretryÚretry_if_exception_typeÚstop_after_attemptÚwait_exponentialÚTÚllmÚTongyiÚreturnúCallable[[Any], Any]c           
     óÔ   — d}d}t          dt          | j        ¦  «        t          d||¬¦  «        t	          t
          ¦  «        t          t          t          j	        ¦  «        ¬¦  «        S )Né   é   T)Ú
multiplierÚminÚmax)ÚreraiseÚstopÚwaitr   Úbefore_sleep)
r   r   Úmax_retriesr   r   r   r   ÚloggerÚloggingÚWARNING)r    Úmin_secondsÚmax_secondss      ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/tongyi.pyÚ_create_retry_decoratorr5   *   sa   € Ø€KØ€Kõ ØÝ ¤Ñ0Ô0Ý¨°ÀÐMÑMÔMÝ&¥yÑ1Ô1Ý%¥f­g¬oÑ>Ô>ðñ ô ð ó    Úrespr   c                óð   — | d         dk    r| S | d         dv r3t          d| d         › d| d         › d| d         › d	| d
         › �¦  «        ‚t          d| d         › d| d         › d	| d
         › �| ¬¦  «        ‚)z,Check the response from the completion call.Ústatus_codeéÈ   )i�  i‘  zrequest_id: Ú
request_idz 
 status_code: z	 
 code: Úcodez 
 message: Úmessagez"HTTP error occurred: status_code: )Úresponse)Ú
ValueErrorr   )r7   s    r4   Úcheck_responser@   8   sç   € àˆMÔ˜cÒ!Ð!ØˆØ	ˆmÔ	 
Ð	*Ð	*ÝðB˜4 Ô-ð Bð BØ  Ô/ðBð Bà˜&”\ðBð Bà04°Y´ðBð Bñ
ô 
ð 	
õ ðB°°mÔ1Dð Bð BØ˜&”\ðBð BØ04°Y´ðBð Bàð
ñ 
ô 
ð 	
r6   Úkwargsc                óN   ‡ — t          ‰ ¦  «        }|dˆ fd„¦   «         } |di |¤ŽS )ú*Use tenacity to retry the completion call.Ú_kwargsr   r"   c                 óF   •—  ‰j         j        di | ¤Ž}t          |¦  «        S ©N© ©ÚclientÚcallr@   )rD   r7   r    s     €r4   Ú_generate_with_retryz1generate_with_retry.<locals>._generate_with_retryN   s*   ø€ àˆsŒzŒÐ)Ð) Ð)Ð)ˆÝ˜dÑ#Ô#Ð#r6   ©rD   r   r"   r   rG   ©r5   )r    rA   Úretry_decoratorrK   s   `   r4   Úgenerate_with_retryrO   J   sQ   ø€ å-¨cÑ2Ô2€Oàð$ð $ð $ð $ð $ñ „_ð$ð  ÐÐ)Ð) &Ð)Ð)Ð)r6   c                óN   ‡ — t          ‰ ¦  «        }|dˆ fd„¦   «         } |di |¤ŽS )rC   rD   r   r"   c               ;  ó\   •K  —  ‰j         j        di | ¤Ž}|D ]}t          |¦  «        V — Œd S rF   rH   )rD   Ú	responsesr7   r    s      €r4   Ú_stream_generate_with_retryz?stream_generate_with_retry.<locals>._stream_generate_with_retryZ   sP   øè è € à#�C”J”OÐ.Ð. gÐ.Ð.ˆ	Øð 	'ð 	'ˆDÝ  Ñ&Ô&Ð&Ð&Ð&Ð&ð	'ð 	'r6   rL   rG   rM   )r    rA   rN   rS   s   `   r4   Ústream_generate_with_retryrT   V   sQ   ø€ å-¨cÑ2Ô2€Oàð'ð 'ð 'ð 'ð 'ñ „_ð'ð
 'Ð&Ð0Ð0¨Ð0Ð0Ð0r6   c               óR   K  —  G d„ d¦  «        } || fi |¤Ž2 3 d{V —†}|W V — Œ6 dS )z­Async version of `stream_generate_with_retry`.

    Because the dashscope SDK doesn't provide an async API,
    we wrap `stream_generate_with_retry` with an async generator.c                  ó.   — e Zd Zdd„Zdd„Zdd	„Zdd
„ZdS )ú8astream_generate_with_retry.<locals>._AioTongyiGeneratorÚ_llmr!   rD   r   c                ó*   — t          |fi |¤Ž| _        d S ©N)rT   Ú	generator)ÚselfrX   rD   s      r4   Ú__init__zAastream_generate_with_retry.<locals>._AioTongyiGenerator.__init__j   s   € Ý7¸ÐHÐHÀÐHÐHˆDŒNˆNˆNr6   r"   úAsyncIterator[Any]c                ó   — | S rZ   rG   ©r\   s    r4   Ú	__aiter__zBastream_generate_with_retry.<locals>._AioTongyiGenerator.__aiter__m   s   € ØˆKr6   c              “  ó€   K  — t          j        ¦   «                              d | j        ¦  «        ƒ d {V —†}|�|S t          ‚rZ   )ÚasyncioÚget_running_loopÚrun_in_executorÚ
_safe_nextÚStopAsyncIteration)r\   Úvalues     r4   Ú	__anext__zBastream_generate_with_retry.<locals>._AioTongyiGenerator.__anext__p   s\   è è € Ý!Ô2Ñ4Ô4×DÒDØ�d”oñô ð ð ð ð ð ð ˆEð Ð Ø�å(Ð(r6   c                óN   — 	 t          | j        ¦  «        S # t          $ r Y d S w xY wrZ   )Únextr[   ÚStopIterationr`   s    r4   rf   zCastream_generate_with_retry.<locals>._AioTongyiGenerator._safe_nexty   s9   € ðÝ˜DœNÑ+Ô+Ð+øÝ ð ð ð Ø�t�tðøøøs   ‚ –
$£$N)rX   r!   rD   r   )r"   r^   )r"   r   )Ú__name__Ú
__module__Ú__qualname__r]   ra   ri   rf   rG   r6   r4   Ú_AioTongyiGeneratorrW   i   sh   € € € € € ð	Ið 	Ið 	Ið 	Ið	ð 	ð 	ð 	ð	)ð 	)ð 	)ð 	)ð	ð 	ð 	ð 	ð 	ð 	r6   rp   NrG   )r    rA   rp   Úchunks       r4   Úastream_generate_with_retryrr   c   sƒ   è è € ðð ð ð ð ñ ô ð ð, +Ð*¨3Ð9Ð9°&Ð9Ð9ð ð ð ð ð ð ð ˆeØˆˆˆˆˆð :Ð9Ð9s   ™&ÚiterableúIterable[T]úIterator[Tuple[T, bool]]c              #  ó’   K  — t          | ¦  «        }	 t          |¦  «        }n# t          $ r Y dS w xY w|D ]
}|dfV — |}Œ|dfV — dS )z[Generate elements from an iterable,
    and a boolean indicating if it is the last element.NFT)Úiterrk   rl   ©rs   ÚiteratorÚitemÚ	next_items       r4   Úgenerate_with_last_element_markr|   ƒ   sƒ   è è € õ �H‰~Œ~€HðÝ�H‰~Œ~ˆˆøÝð ð ð Øˆˆðøøøàð ð ˆ	Ø�EˆkÐÐÐØˆˆØ
�ˆ*ÐÐÐÐÐs   “# £
1°1úAsyncIterable[T]úAsyncIterator[Tuple[T, bool]]c               óÂ   K  — |                       ¦   «         }	 |                     ¦   «         ƒ d{V —†}n# t          $ r Y dS w xY w|2 3 d{V —†}|dfW V — |}Œ6 |dfW V — dS )zaGenerate elements from an async iterable,
    and a boolean indicating if it is the last element.NFT)ra   ri   rg   rx   s       r4   Ú agenerate_with_last_element_markr€   ‘   sÇ   è è € ð
 ×!Ò!Ñ#Ô#€HðØ×'Ò'Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)ˆˆøÝð ð ð Øˆˆðøøøà#ð ð ð ð ð ð ð ˆiØ�EˆkÐÐÐÐØˆˆð $ð �ˆ*ÐÐÐÐÐÐs   ˜3 ³
AÁ AÁAc                  ó¶  ‡ — e Zd ZU dZed<d„¦   «         ZdZded<    edd	¬
¦  «        Z	ded<   	  ee
¬¦  «        Z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<   	 ed=d„¦   «         Zed>d„¦   «         Zed?d „¦   «         Zed@ˆ fd"„¦   «         Z	 	 dAdBd+„Z	 	 dAdCd-„Z	 	 dAdDd0„Z	 	 dAdEd2„ZdFd3„Ze	 dGdHd7„¦   «         ZedId;„¦   «         Zˆ xZS )Jr!   uP	  Tongyi completion model integration.

    Setup:
        Install ``dashscope`` and set environment variables ``DASHSCOPE_API_KEY``.

        .. code-block:: bash

            pip install dashscope
            export DASHSCOPE_API_KEY="your-api-key"

    Key init args â€” completion params:
        model: str
            Name of Tongyi model to use.
        top_p: float
            Total probability mass of tokens to consider at each step.
        streaming: bool
            Whether to stream the results or not.

    Key init args â€” client params:
        api_key: Optional[str]
            Dashscope API KEY. If not passed in will be read from env var DASHSCOPE_API_KEY.
        max_retries: int
            Maximum number of retries to make when generating.

    See full list of supported init args and their descriptions in the params section.

    Instantiate:
        .. code-block:: python

            from langchain_community.llms import Tongyi

            llm = Tongyi(
                model="qwen-max",
                # top_p="...",
                # api_key="...",
                # other params...
            )

    Invoke:
        .. code-block:: python

            input_text = "ç”¨50ä¸ªå­—å·¦å�³é˜�è¿°ï¼Œç”Ÿå‘½çš„æ„�ä¹‰åœ¨äºŽ"
            llm.invoke(input_text)

        .. code-block:: python

            'æŽ¢ç´¢ã€�æˆ�é•¿ã€�è¿žæŽ¥ä¸Žçˆ±â€”â€”åœ¨æœ‰é™�çš„æ—¶é—´é‡Œï¼Œä¸�æ–­å­¦ä¹ ã€�ä½“éªŒã€�è´¡çŒ®å¹¶å¯»æ‰¾ä¸Žä¸–ç•Œå’Œè°�å…±å­˜ä¹‹é�“ï¼Œè®©æ¯�ä¸€åˆ»å……æ»¡ä»·å€¼ä¸Žæ„�ä¹‰ã€‚'

    Stream:
        .. code-block:: python

            for chunk in llm.stream(input_text):
                print(chunk)

        .. code-block:: python

            æŽ¢ç´¢ | ã€� | æˆ�é•¿ | ã€�è¿žæŽ¥ä¸Žçˆ±ã€‚ | åœ¨æœ‰é™�çš„æ—¶é—´é‡Œï¼Œå¯»æ‰¾ä¸ªäººä»·å€¼ï¼Œ | è´¡çŒ®äºŽä»–äººï¼Œå…±å�Œä½“éªŒä¸–ç•Œçš„ç¾Žå¥½ | ï¼Œè®©ä¸–ç•Œå› è‡ªå·±çš„å­˜åœ¨è€Œæ›´ | æ¸©æš–ã€‚

    Async:
        .. code-block:: python

            await llm.ainvoke(input_text)

            # stream:
            # async for chunk in llm.astream(input_text):
            #    print(chunk)

            # batch:
            # await llm.abatch([input_text])

        .. code-block:: python

            'æŽ¢ç´¢ã€�æˆ�é•¿ã€�è¿žæŽ¥ä¸Žçˆ±ã€‚åœ¨æœ‰é™�çš„æ—¶é—´é‡Œï¼Œå¯»æ‰¾ä¸ªäººä»·å€¼ï¼Œè´¡çŒ®äºŽä»–äººå’Œç¤¾ä¼šï¼Œä½“éªŒä¸°å¯Œå¤šå½©çš„æƒ…æ„Ÿä¸Žç»�åŽ†ï¼Œä¸�æ–­å­¦ä¹ è¿›æ­¥ï¼Œè®©ä¸–ç•Œå› è‡ªå·±çš„å­˜åœ¨è€Œæ›´ç¾Žå¥½ã€‚'

    r"   úDict[str, str]c                ó
   — ddiS )NÚdashscope_api_keyÚDASHSCOPE_API_KEYrG   r`   s    r4   Ú
lc_secretszTongyi.lc_secretsî   s   € à#Ð%8Ð9Ð9r6   Nr   rI   z	qwen-plusÚmodel)ÚdefaultÚaliasÚstrÚ
model_name)Údefault_factoryúDict[str, Any]Úmodel_kwargsgš™™™™™é?ÚfloatÚtop_pÚapi_keyzOptional[str]r„   FÚboolÚ	streamingé
   Úintr.   c                ó   — dS )zReturn type of llm.ÚtongyirG   r`   s    r4   Ú	_llm_typezTongyi._llm_type  s	   € ð ˆxr6   Úvaluesr   c                óÊ   — t          |ddg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.r„   r‘   r…   r   NzZCould not import dashscope python package. Please install it with `pip install dashscope`.rI   z¢`dashscope` has no `Generation` attribute, this is likely due to an old version of the dashscope package. Try upgrading it with `pip install --upgrade dashscope`.)r   Ú	dashscopeÚImportErrorr   ÚAttributeErrorr?   )Úclsr™   r›   s      r4   Úvalidate_environmentzTongyi.validate_environment	  s¼   € õ ';ØÐ(¨)Ð4Ð6Iñ'
ô '
ˆÐ"Ñ#ð	ØÐÐÐÐøÝð 	ð 	ð 	ÝðBñô ð ð	øøøð
	Ø(Ô3ˆF�8ÑÐøÝð 	ð 	ð 	Ýð:ñô ð ð	øøøð ˆs   ˜ �7»
A ÁA c                óB   — | j         | j        | j        dœ}i |¥| j        ¥S )z7Get the default parameters for calling Tongyi Qwen API.)r‡   r�   r‘   )r‹   r�   r„   rŽ   )r\   Únormal_paramss     r4   Ú_default_paramszTongyi._default_params!  s5   € ð ”_Ø”ZØÔ-ð
ð 
ˆð 6�-Ð5 4Ô#4Ð5Ð5r6   úMapping[str, Any]c                ó<   •— d| j         it          ¦   «         j        ¥S )Nr‹   )r‹   ÚsuperÚ_identifying_params)r\   Ú	__class__s    €r4   r¦   zTongyi._identifying_params,  s   ø€ à˜dœoÐMµ±´Ô1LÐMÐMr6   Úpromptsú	List[str]r+   úOptional[List[str]]Úrun_managerú"Optional[CallbackManagerForLLMRun]rA   r   c           
     óÚ  — g }| j         rut          |¦  «        dk    rt          d¦  «        ‚d } | j        |d         ||fi |¤ŽD ]}|€|}Œ||z  }Œ|€J ‚|                     |                      |¦  «        g¦  «         nV | j        dd|i|¤Ž}|D ]D}	t          | fd|	i|¤Ž}
|                     t          di |  	                    |
¦  «        ¤Žg¦  «         ŒEt          |d| j        i¬¦  «        S )	Nr%   ú,Cannot stream results with multiple prompts.r   r+   Úpromptr‹   ©ÚgenerationsÚ
llm_outputrG   )r“   Úlenr?   Ú_streamÚappendÚ_chunk_to_generationÚ_invocation_paramsrO   r   Ú_generation_from_qwen_respr   r‹   ©r\   r¨   r+   r«   rA   r±   Ú
generationrq   Úparamsr¯   Ú
completions              r4   Ú	_generatezTongyi._generate0  s]  € ð ˆØŒ>ð 	Ý�7‰|Œ|˜aÒÐÝ Ð!OÑPÔPÐPØ48ˆJØ%˜œ g¨a¤j°$¸ÐNÐNÀvÐNÐNð (ð (�ØÐ%Ø!&�J�Jà %Ñ'�J�JØÐ)Ð)Ð)Ø×Ò × 9Ò 9¸*Ñ EÔ EÐFÑGÔGÐGÐGà%< TÔ%<Ð%QÐ%QÀ$Ð%QÈ&Ð%QÐ%QˆFØ!ð ð �Ý0°ÐOÐO¸fÐOÈÐOÐO�
Ø×"Ò"ÝÐNÐN $×"AÒ"AÀ*Ñ"MÔ"MÐNÐNÐOñô ð ð õ Ø#à˜dœoðð
ñ 
ô 
ð 	
r6   ú'Optional[AsyncCallbackManagerForLLMRun]c              ‹  óZ  K  — g }| j         r{t          |¦  «        dk    rt          d¦  «        ‚d } | j        |d         ||fi |¤Ž2 3 d {V —†}|€|}Œ||z  }Œ6 |€J ‚|                     |                      |¦  «        g¦  «         nŽ | j        dd|i|¤Ž}|D ]|}	t          j        ¦   «          	                    d t          j        t          fi | |	dœ|¥¤Ž¦  «        ƒ d {V —†}
|                     t          di |                      |
¦  «        ¤Žg¦  «         Œ}t          |d| j        i¬¦  «        S )	Nr%   r®   r   r+   )r    r¯   r‹   r°   rG   )r“   r³   r?   Ú_astreamrµ   r¶   r·   rc   rd   re   Ú	functoolsÚpartialrO   r   r¸   r   r‹   r¹   s              r4   Ú
_ageneratezTongyi._agenerateQ  s×  è è € ð ˆØŒ>ð 	Ý�7‰|Œ|˜aÒÐÝ Ð!OÑPÔPÐPØ48ˆJØ,˜tœ}¨W°Q¬Z¸¸{ÐUÐUÈfÐUÐUð (ð (ð (ð (ð (ð (ð (�eØÐ%Ø!&�J�Jà %Ñ'�J�Jð	  Vð
 Ð)Ð)Ð)Ø×Ò × 9Ò 9¸*Ñ EÔ EÐFÑGÔGÐGÐGà%< TÔ%<Ð%QÐ%QÀ$Ð%QÈ&Ð%QÐ%QˆFØ!ð 	ð 	�Ý#*Ô#;Ñ#=Ô#=×#MÒ#MØÝÔ%Ý+ðð Ø7;ÀvÐ/XÐ/XÐQWÐ/Xðð ñ$ô $ð ð ð ð ð ð �
ð ×"Ò"ÝÐNÐN $×"AÒ"AÀ*Ñ"MÔ"MÐNÐNÐOñô ð ð õ Ø#à˜dœoðð
ñ 
ô 
ð 	
s   ÁAr¯   úIterator[GenerationChunk]c           	   +  óþ   K  —  | j         d|ddœ|¤Ž}t          t          | fd|i|¤Ž¦  «        D ]M\  }}t          di |                      ||¦  «        ¤Ž}|r"|                     |j        || j        ¬¦  «         |V — ŒNd S ©NT)r+   Ústreamr¯   )rq   ÚverboserG   )r·   r|   rT   r   r¸   Úon_llm_new_tokenÚtextrÈ   ©	r\   r¯   r+   r«   rA   r»   Ústream_respÚis_last_chunkrq   s	            r4   r´   zTongyi._streamw  så   è è € ð "9 Ô!8ð "
Ø˜dð"
ð "
Ø&,ð"
ð "
ˆõ +JÝ& tÐEÐE°FÐE¸fÐEÐEñ+
ô +
ð 	ð 	Ñ&ˆK˜õ $ð ð Ø×1Ò1°+¸}ÑMÔMðð ˆEð ð Ø×,Ò,Ø”JØØ œLð -ñ ô ð ð
 ˆKˆKˆKˆKð	ð 	r6   úAsyncIterator[GenerationChunk]c           	    ó  K  —  | j         d|ddœ|¤Ž}t          t          | fd|i|¤Ž¦  «        2 3 d {V —†\  }}t          di |                      ||¦  «        ¤Ž}|r(|                     |j        || j        ¬¦  «        ƒ d {V —† |W V — ŒZ6 d S rÆ   )r·   r€   rr   r   r¸   rÉ   rÊ   rÈ   rË   s	            r4   rÀ   zTongyi._astream�  s#  è è € ð "9 Ô!8ð "
Ø˜dð"
ð "
Ø&,ð"
ð "
ˆõ 1QÝ'¨ÐFÐF°VÐF¸vÐFÐFñ1
ô 1
ð 	ð 	ð 	ð 	ð 	ð 	ð 	Ñ,�+˜}õ $ð ð Ø×1Ò1°+¸}ÑMÔMðð ˆEð ð Ø!×2Ò2Ø”JØØ œLð 3ñ ô ð ð ð ð ð ð ð ð
 ˆKˆKˆKˆKˆKð1
ð 1
ð 1
s   ¯B	c                ó^   — i | j         ¥|¥}|�||d<   |                     d¦  «        rd|d<   |S )Nr+   rÇ   TÚincremental_output)r¢   Úget)r\   r+   rA   r»   s       r4   r·   zTongyi._invocation_params§  sQ   € ð
ØÔ"ð
àð
ˆð ÐØ!ˆF�6‰NØ�:Š:�hÑÔð 	0Ø+/ˆFÐ'Ñ(Øˆr6   Tr7   rÍ   c                óâ   — |rRt          | d         d         t          | d         d         | d         t          | d         ¦  «        ¬¦  «        ¬¦  «        S t          | d         d         ¬¦  «        S )	NÚoutputrÊ   Úfinish_reasonr;   Úusage)rÕ   r;   Útoken_usage©rÊ   Úgeneration_info)rÊ   )Údict)r7   rÍ   s     r4   r¸   z!Tongyi._generation_from_qwen_resp²  s€   € ð ð 
	5ÝØ˜(”^ FÔ+Ý $Ø"& x¤.°Ô"AØ# LÔ1Ý $ T¨'¤]Ñ 3Ô 3ð!ñ !ô !ðñ ô ð õ ˜T (œ^¨FÔ3Ð4Ñ4Ô4Ð4r6   rq   r   r   c                ó8   — t          | j        | j        ¬¦  «        S )NrØ   )r   rÊ   rÙ   )rq   s    r4   r¶   zTongyi._chunk_to_generationÉ  s$   € åØ”Ø!Ô1ð
ñ 
ô 
ð 	
r6   )r"   r‚   )r"   rŠ   )r™   r   r"   r   )r"   r�   )r"   r£   )NN)
r¨   r©   r+   rª   r«   r¬   rA   r   r"   r   )
r¨   r©   r+   rª   r«   r¾   rA   r   r"   r   )
r¯   rŠ   r+   rª   r«   r¬   rA   r   r"   rÄ   )
r¯   rŠ   r+   rª   r«   r¾   rA   r   r"   rÎ   )r+   r   rA   r   r"   r�   )T)r7   r   rÍ   r’   r"   r�   )rq   r   r"   r   )rm   rn   ro   Ú__doc__Úpropertyr†   rI   Ú__annotations__r   r‹   rÚ   rŽ   r�   r„   r“   r.   r˜   r   rŸ   r¢   r¦   r½   rÃ   r´   rÀ   r·   Ústaticmethodr¸   r¶   Ú__classcell__)r§   s   @r4   r!   r!   ¡   sr  ø€ € € € € € ðJð JðX ð:ð :ð :ñ „Xð:ð €FÐÐÐÑØ�e K°wÐ?Ñ?Ô?€JÐ?Ð?Ð?Ñ?àØ#( 5¸Ð#>Ñ#>Ô#>€LÐ>Ð>Ð>Ñ>à€EÐÐÐÑØDà', u°TÀÐ'KÑ'KÔ'KÐÐKÐKÐKÑKØ5à€IÐÐÐÑØ/à€KÐÐÐÑØ<àðð ð ñ „Xðð ðð ð ñ „Xðð. ð6ð 6ð 6ñ „Xð6ð ðNð Nð Nð Nð Nñ „XðNð %)Ø:>ð	
ð 
ð 
ð 
ð 
ðH %)Ø?Cð	$
ð $
ð $
ð $
ð $
ðR %)Ø:>ð	ð ð ð ð ð6 %)Ø?Cð	ð ð ð ð ð0	ð 	ð 	ð 	ð à)-ð5ð 5ð 5ð 5ñ „\ð5ð, ð
ð 
ð 
ñ „\ð
ð 
ð 
ð 
ð 
r6   )r    r!   r"   r#   )r7   r   r"   r   )r    r!   rA   r   r"   r   )rs   rt   r"   ru   )rs   r}   r"   r~   )4Ú
__future__r   rc   rÁ   r0   Útypingr   r   r   r   r   r	   r
   r   r   r   r   r   Úlangchain_core.callbacksr   r   Ú#langchain_core.language_models.llmsr   Úlangchain_core.outputsr   r   r   Úlangchain_core.utilsr   r   Úpydanticr   Úrequests.exceptionsr   Útenacityr   r   r   r   r   Ú	getLoggerrm   r/   r   r5   r@   rO   rT   rr   r|   r€   r!   rG   r6   r4   ú<module>rë      s‰  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )ðð ð ð ð ð ð ð ð ð ð ð ð ð ð 
ˆÔ	˜8Ñ	$Ô	$€Ø€GˆC�L„L€ðð ð ð ð
ð 
ð 
ð 
ð$	*ð 	*ð 	*ð 	*ð
1ð 
1ð 
1ð 
1ðð ð ð ð@ð ð ð ðð ð ð ð m
ð m
ð m
ð m
ð m
ˆWñ m
ô m
ð m
ð m
ð m
r6   