§
    šŠtj™K  ã                  ó*  — d Z ddlmZ ddlZddl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Zddl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- ddl.m/Z/ ddl.m0Z1 ddl2m3Z3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z?m@Z@mAZAmBZB ddlCmDZD ddlEmFZF  ejG        eH¦  «        ZI G d„ deJ¦  «        ZK	 d=d>d„ZLd?d!„ZMd@d#„ZNdAd'„ZOdBd+„ZPdCd-„ZQ G d.„ de¦  «        ZRdDd2„ZSdEd5„ZTdFd9„ZUdGd<„ZVdS )Hz!deepinfra.com chat models wrapperé    )ÚannotationsN)ÚJSONDecodeError)ÚAnyÚAsyncIteratorÚCallableÚDictÚIteratorÚListÚMappingÚOptionalÚSequenceÚTupleÚTypeÚUnion)Ú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ÚToolMessage)ÚToolCall©Ú	tool_call)ÚChatGenerationÚChatGenerationChunkÚ
ChatResult)ÚRunnable)ÚBaseTool©Úget_from_dict_or_env©Úconvert_to_openai_tool)Ú	BaseModelÚ
ConfigDictÚFieldÚmodel_validator)ÚSelf)ÚRequestsc                  ó   — e Zd ZdZdS )ÚChatDeepInfraExceptionz9Exception raised when the DeepInfra API returns an error.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úg/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/chat_models/deepinfra.pyr8   r8   F   s   € € € € € ØCÐCà€Dr>   r8   ÚllmÚChatDeepInfraÚrun_managerúHOptional[Union[AsyncCallbackManagerForLLMRun, CallbackManagerForLLMRun]]ÚreturnúCallable[[Any], Any]c                ó\   — t          t          j        j        t          g| j        |¬¦  «        S )zLReturns a tenacity retry decorator, preconfigured to handle PaLM exceptions.)Úerror_typesÚmax_retriesrB   )r   ÚrequestsÚ
exceptionsÚConnectTimeoutr8   rH   )r@   rB   s     r?   Ú_create_retry_decoratorrL   L   s2   € õ 'ÝÔ(Ô7Õ9OÐPØ”OØðñ ô ð r>   r'   Údictr%   c                óþ   — | d                               dd¦  «        }	 t          j        | d         d         ¦  «        }n# t          t          f$ r i }Y nw xY w|                       d¦  «        }t          |||¬¦  «        S )zw
    Convert a tool calling response from server to a ToolCall object.
    Args:
        tool_call:

    Returns:

    ÚfunctionÚnameÚ Ú	argumentsÚid)rP   ÚargsrS   )ÚgetÚjsonÚloadsr   Ú	TypeErrorÚcreate_tool_call)r'   rP   rT   rS   s       r?   Ú_parse_tool_callingrZ   Z   s�   € ð �ZÔ ×$Ò$ V¨RÑ0Ô0€DðÝŒz˜) JÔ/°Ô<Ñ=Ô=ˆˆøÝ�YÐ'ð ð ð Øˆˆˆðøøøà	�Š�tÑ	Ô	€BÝ ¨D°RÐ8Ñ8Ô8Ð8s   ž ? ¿AÁAúDict[str, Any]c                óv   — dt          j        | d         ¦  «        | d         dœ|                      d¦  «        dœS )zu
    Convert a ToolCall object to a tool calling request for server.
    Args:
        tool_call:

    Returns:

    rO   rT   rP   )rR   rP   rS   )ÚtyperO   rS   )rV   ÚdumpsrU   r&   s    r?   Ú_convert_to_tool_callingr_   l   sK   € ð åœ I¨fÔ$5Ñ6Ô6Ø˜fÔ%ð
ð 
ð �mŠm˜DÑ!Ô!ðð ð r>   Ú_dictúMapping[str, Any]r   c                óœ  — | d         }|dk    rt          | d         ¬¦  «        S |dk    rM|                      dd¦  «        pd}|                      dg ¦  «        pg }d„ |D ¦   «         }t          ||¬	¦  «        S |d
k    rt          | d         ¬¦  «        S |dk    rt	          | d         | d         ¬¦  «        S t          | d         |¬¦  «        S )NÚroleÚuserÚcontent©re   Ú	assistantrQ   Ú
tool_callsc                ó,   — g | ]}t          |¦  «        ‘ŒS r=   ©rZ   ©Ú.0r'   s     r?   ú
<listcomp>z,_convert_dict_to_message.<locals>.<listcomp>†   s.   € ð 
ð 
ð 
Ø/8Õ 	Ñ*Ô*ð
ð 
ð 
r>   ©re   rh   ÚsystemrO   rP   ©re   rP   ©re   rc   )r    rU   r   r"   r   r   )r`   rc   re   Útool_calls_contentrh   s        r?   Ú_convert_dict_to_messagers      sù   € Ø�Œ=€DØˆv‚~€~Ý E¨)Ô$4Ð5Ñ5Ô5Ð5Ø	�Ò	Ð	Ø—)’)˜I rÑ*Ô*Ð0¨bˆØ"ŸYšY |°RÑ8Ô8Ð>¸BÐð
ð 
Ø<Nð
ñ 
ô 
ˆ
õ  °ZÐ@Ñ@Ô@Ð@Ø	�Ò	Ð	Ý U¨9Ô%5Ð6Ñ6Ô6Ð6Ø	�Ò	Ð	Ý u¨YÔ'7¸eÀF¼mÐLÑLÔLÐLå 5¨Ô#3¸$Ð?Ñ?Ô?Ð?r>   Údefault_classúType[BaseMessageChunk]r   c                ó  — |                       d¦  «        }|                       d¦  «        pd}|                       d¦  «        pg }|dk    s|t          k    rt          |¬¦  «        S |dk    s|t          k    rd„ |D ¦   «         }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   rQ   rh   rd   rf   rg   c                ó,   — g | ]}t          |¦  «        ‘ŒS r=   rj   rk   s     r?   rm   z3_convert_delta_to_message_chunk.<locals>.<listcomp>œ   s!   € ÐQÐQÐQ¸Õ)¨)Ñ4Ô4ÐQÐQÐQr>   rn   ro   rO   rP   rp   rq   )rU   r!   r   r#   r   r   )r`   rt   rc   re   rh   s        r?   Ú_convert_delta_to_message_chunkrx   ’   s.  € ð �9Š9�VÑÔ€DØ�iŠi˜	Ñ"Ô"Ð( b€GØ—’˜<Ñ(Ô(Ð.¨B€Jàˆv‚~€~˜Õ*;Ò;Ð;Ý ¨Ð1Ñ1Ô1Ð1Ø	�Ò	Ð	 µÒ ?Ð ?ØQÐQÀjÐQÑQÔQˆ
Ý g¸*ÐEÑEÔEÐEØ	�Ò	Ð	˜]Õ.@Ò@Ð@Ý!¨'Ð2Ñ2Ô2Ð2Ø	�Ò	Ð	˜}Õ0DÒDÐDÝ#¨G¸%À¼-ÐHÑHÔHÐHØ	ð .�Õ"2Ò2Ð2Ý¨°dÐ;Ñ;Ô;Ð;àˆ} WÐ-Ñ-Ô-Ð-r>   Úmessagec                ó.  — t          | t          ¦  «        r| j        | j        dœ}nÖt          | t          ¦  «        rd| j        dœ}n¶t          | t
          ¦  «        rd„ | j        D ¦   «         }d| j        |dœ}n„t          | t          ¦  «        rd| j        dœ}ndt          | t          ¦  «        rd| j        | j	        dœ}n>t          | t          ¦  «        rd	| j        | j	        | j        d
œ}nt          d| › �¦  «        ‚d| j        v r| j        d         |d<   |S )N)rc   re   rd   c                ó,   — g | ]}t          |¦  «        ‘ŒS r=   )r_   rk   s     r?   rm   z,_convert_message_to_dict.<locals>.<listcomp>®   s.   € ð 
ð 
ð 
Ø4=Õ$ YÑ/Ô/ð
ð 
ð 
r>   rg   )rc   re   rh   ro   rO   )rc   re   rP   Útool)rc   re   rP   Útool_call_idzGot unknown type rP   )Ú
isinstancer   rc   re   r    r   rh   r"   r   rP   r$   r}   Ú
ValueErrorÚadditional_kwargs)ry   Úmessage_dictrh   s      r?   Ú_convert_message_to_dictr‚   ¨   s^  € Ý�'�;Ñ'Ô'ð 8Ø '¤¸¼ÐIÐIˆˆÝ	�G�\Ñ	*Ô	*ð 8Ø &°7´?ÐCÐCˆˆÝ	�G�YÑ	'Ô	'ð 8ð
ð 
ØAHÔASð
ñ 
ô 
ˆ
ð  Ø”Ø$ð
ð 
ˆˆõ
 
�G�]Ñ	+Ô	+ð 8Ø (°W´_ÐEÐEˆˆÝ	�G�_Ñ	-Ô	-ð 8àØ”Ø”Lð
ð 
ˆˆõ
 
�G�[Ñ	)Ô	)ð 8àØ”Ø”LØ#Ô0ð	
ð 
ˆˆõ Ð6¨WÐ6Ð6Ñ7Ô7Ð7Ø�Ô*Ð*Ð*Ø&Ô8¸Ô@ˆ�VÑØÐr>   c                  ó€  ‡ — e Zd ZU dZ edd¬¦  «        Zded<   	 dZded<   	 d	Zd
e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<   dZded<    ed¬ ¦  «        ZedRd"„¦   «         ZedRd#„¦   «         Z	 dSdTd(„Z	 dSdUd*„Z ed+¬,¦  «        edVd/„¦   «         ¦   «         Z ed0¬,¦  «        dWd2„¦   «         Z	 	 	 dXdYd:„ZdZd=„Zd[d?„Z 	 	 d\d]dA„Z!	 	 d\d^dC„Z"	 	 	 dXd_dD„Z#edRdE„¦   «         Z$ed`dF„¦   «         Z%dadJ„Z&d`dK„Z'dbdL„Z(dcdM„Z)ddˆ fdQ„Z*ˆ xZ+S )erA   z)A chat model that uses the DeepInfra API.zmeta-llama/Llama-2-70b-chat-hfÚmodel)ÚdefaultÚaliasÚstrÚ
model_namez4https://api.deepinfra.com/v1/openai/chat/completionsÚurlNúOptional[str]Údeepinfra_api_tokenÚtimeoutzOptional[float]Úrequest_timeouté   Útemperature)Údefault_factoryr[   Úmodel_kwargsÚtop_pzOptional[int]Útop_kÚintÚné   Ú
max_tokensFÚboolÚ	streamingrH   T)Úpopulate_by_namerD   c                ó^   — | j         | j        | j        | j        | j        | j        dœ| j        ¥S )z2Get the default parameters for calling OpenAI API.)r„   r—   Ústreamr•   r�   r�   )rˆ   r—   r™   r•   r�   r�   r‘   ©Úselfs    r?   Ú_default_paramszChatDeepInfra._default_paramsî   s@   € ð ”_Øœ/Ø”nØ”ØÔ+Ø#Ô3ð
ð 
ð Ôð
ð 	
r>   c                ó   — i | j         ¥S )z.Get the parameters used for the openai client.)rŸ   r�   s    r?   Ú_client_paramszChatDeepInfra._client_paramsû   s   € ð (�$Ô&Ð'Ð'r>   rB   ú"Optional[CallbackManagerForLLMRun]Úkwargsr   c                óR   ‡ — t          ‰ |¬¦  «        }|dˆ fd„¦   «         } |di |¤ŽS )z*Use tenacity to retry the completion call.©rB   r£   r   rD   c                 óx  •— 	 |                       d¦  «        }t          ‰                     ¦   «         ¬¦  «        }|                     ‰                     ¦   «         ‰                     | ¦  «        |¬¦  «        }‰                     |j        |j        ¦  «         |S # t          $ r}t          d|¦  «         ‚ d }~ww xY w©Nr�   ©Úheaders©r‰   ÚdatarŒ   ÚEX)Úpopr6   Ú_headersÚpostÚ_urlÚ_bodyÚ_handle_statusÚstatus_codeÚtextÚ	ExceptionÚprint©r£   r�   ÚrequestÚresponseÚerž   s        €r?   Ú_completion_with_retryzCChatDeepInfra.completion_with_retry.<locals>._completion_with_retry  s¶   ø€ ð
Ø"(§*¢*Ð->Ñ"?Ô"?�Ý"¨4¯=ª=©?¬?Ð;Ñ;Ô;�Ø"Ÿ<š<ØŸ	š	™œ¨$¯*ª*°VÑ*<Ô*<Àoð (ñ ô �ð ×#Ò# HÔ$8¸(¼-ÑHÔHÐHØ�øÝð ð ð Ý�d˜A‘”�Øøøøøðøøøs   ƒBB Â
B9Â#B4Â4B9©r£   r   rD   r   r=   ©rL   ©rž   rB   r£   Úretry_decoratorr»   s   `    r?   Úcompletion_with_retryz#ChatDeepInfra.completion_with_retry   sX   ø€ õ 2°$ÀKÐPÑPÔPˆà	ð	ð 	ð 	ð 	ð 	ñ 
Œð	ð &Ð%Ð/Ð/¨Ð/Ð/Ð/r>   ú'Optional[AsyncCallbackManagerForLLMRun]c              ‹  ób   ‡ K  — t          ‰ |¬¦  «        }|dˆ fd„¦   «         } |di |¤Žƒ d{V —†S )	z0Use tenacity to retry the async completion call.r¥   r£   r   rD   c               ›  ó,  •K  — 	 |                       d¦  «        }t          ‰                     ¦   «         ¬¦  «        }|                     ‰                     ¦   «         ‰                     | ¦  «        |¬¦  «        4 ƒd {V —†	 }‰                     |j        |                     ¦   «         ƒ d {V —†¦  «         | 	                    ¦   «         ƒ d {V —†cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S # t          $ r}t          d|¦  «         ‚ d }~ww xY wr§   )r­   r6   r®   Úapostr°   r±   r²   Ústatusr´   rV   rµ   r¶   r·   s        €r?   r»   zDChatDeepInfra.acompletion_with_retry.<locals>._completion_with_retry  s«  øè è € ð
Ø"(§*¢*Ð->Ñ"?Ô"?�Ý"¨4¯=ª=©?¬?Ð;Ñ;Ô;�Ø"Ÿ=š=ØŸ	š	™œ¨$¯*ª*°VÑ*<Ô*<Àoð )ñ ô ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1àØ×'Ò'¨¬¸x¿}º}¹¼Ð9NÐ9NÐ9NÐ9NÐ9NÐ9NÑOÔOÐOØ!)§¢¡¤Ð0Ð0Ð0Ð0Ð0Ð0ð	1ð 1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð 1ð 1øõ
 ð ð ð Ý�d˜A‘”�Øøøøøðøøøs=   …A:C3 Â AC ÃC3 Ã 
C*Ã*C3 Ã-C*Ã.C3 Ã3
DÃ=DÄDNr¼   r=   r½   r¾   s   `    r?   Úacompletion_with_retryz$ChatDeepInfra.acompletion_with_retry  sn   øè è € õ 2°$ÀKÐPÑPÔPˆà	ð	ð 	ð 	ð 	ð 	ñ 
Œð	ð ,Ð+Ð5Ð5¨fÐ5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5r>   Úbefore)ÚmodeÚvaluesr   c                óX   — t          |ddd¬¦  «        }t          |dd|¬¦  «        |d<   |S )zGValidate api key, python package exists, temperature, top_p, and top_k.Údeepinfra_api_keyÚDEEPINFRA_API_KEYrQ   )r…   r‹   ÚDEEPINFRA_API_TOKENr-   )ÚclsrÉ   Úapi_keys      r?   Úinit_defaultszChatDeepInfra.init_defaults.  sS   € õ
 'ØØØØð	
ñ 
ô 
ˆõ )=ØØ!Ø!Øð	)
ñ )
ô )
ˆÐ$Ñ%ð ˆr>   Úafterr5   c                óð   — | j         �#d| j         cxk    rdk    sn t          d¦  «        ‚| j        �#d| j        cxk    rdk    sn t          d¦  «        ‚| j        �| j        dk    rt          d¦  «        ‚| S )Nr   rŽ   z+temperature must be in the range [0.0, 1.0]z%top_p must be in the range [0.0, 1.0]ztop_k must be positive)r�   r   r’   r“   r�   s    r?   Úvalidate_environmentz"ChatDeepInfra.validate_environmentA  s˜   € àÔÐ'°°TÔ5EÐ0JÐ0JÒ0JÐ0JÈÒ0JÐ0JÐ0JÐ0JÝÐJÑKÔKÐKàŒ:Ð!¨!¨t¬zÐ*>Ð*>Ò*>Ð*>¸QÒ*>Ð*>Ð*>Ð*>ÝÐDÑEÔEÐEàŒ:Ð! d¤j°A¢o oÝÐ5Ñ6Ô6Ð6àˆr>   Ú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Ö   rB   ©rÔ   rB   r=   )r™   Ú_streamr   Ú_create_message_dictsrÀ   Ú_create_chat_resultrV   )rž   rÔ   rÖ   rB   rœ   r£   Úshould_streamÚstream_iterÚmessage_dictsÚparamsr¹   s              r?   Ú	_generatezChatDeepInfra._generateN  sË   € ð #)Ð"4˜˜¸$¼.ˆØð 	5Ø&˜$œ,ØðØ#°ðð Ø@Fðð ˆKõ (¨Ñ4Ô4Ð4à $× :Ò :¸8ÀTÑ JÔ JÑˆ�vØ%�FÐ%˜fÐ%ˆØ-�4Ô-ð 
Ø"°ð
ð 
Ø?Eð
ð 
ˆð ×'Ò'¨¯ª©¬Ñ8Ô8Ð8r>   r¹   ra   c           	     ó:  — g }|d         D ]^}t          |d         ¦  «        }t          |t          |                     d¦  «        ¬¦  «        ¬¦  «        }|                     |¦  «         Œ_|                     di ¦  «        }|| j        dœ}t          ||¬¦  «        }|S )	NÚchoicesry   Úfinish_reason)ræ   ©ry   Úgeneration_infoÚusage)Útoken_usager„   )ÚgenerationsÚ
llm_output)rs   r(   rM   rU   Úappendrˆ   r*   )rž   r¹   rë   Úresry   Úgenrê   rì   s           r?   rÞ   z!ChatDeepInfra._create_chat_resultd  s¯   € ØˆØ˜IÔ&ð 	$ð 	$ˆCÝ.¨s°9¬~Ñ>Ô>ˆGÝ ØÝ $°3·7²7¸?Ñ3KÔ3KÐ LÑ LÔ Lðñ ô ˆCð ×Ò˜sÑ#Ô#Ð#Ð#Ø—l’l 7¨BÑ/Ô/ˆØ%0¸4¼?ÐKÐKˆ
Ý [¸ZÐHÑHÔHˆØˆ
r>   ú+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=   )r‚   )rl   Úms     r?   rm   z7ChatDeepInfra._create_message_dicts.<locals>.<listcomp>z  s!   € ÐGÐGÐG¸Õ1°!Ñ4Ô4ÐGÐGÐGr>   )r¡   r   )rž   rÔ   rÖ   râ   rá   s        r?   rÝ   z#ChatDeepInfra._create_message_dictsr  sS   € ð Ô$ˆØÐØ˜ÐÐÝ Ð!UÑVÔVÐVØ!ˆF�6‰NØGÐG¸hÐGÑGÔGˆØ˜fÐ$Ð$r>   úIterator[ChatGenerationChunk]c              +  óZ  K  — |                       ||¦  «        \  }}i |¥|¥ddi¥} | j        d||dœ|¤Ž}t          |                     ¦   «         ¦  «        D ]S}t	          |¦  «        }	|	r@t          |	d ¬¦  «        }
|r)|                     t          |	j        ¦  «        |
¬¦  «         |
V — ŒTd S )Nrœ   TrÛ   rç   ©Úchunkr=   )	rÝ   rÀ   Ú_parse_streamÚ
iter_linesÚ_handle_sse_liner)   Úon_llm_new_tokenr‡   re   )rž   rÔ   rÖ   rB   r£   rá   râ   r¹   Úliner÷   Úcg_chunks              r?   rÜ   zChatDeepInfra._stream}  sò   è è € ð !%× :Ò :¸8ÀTÑ JÔ JÑˆ�vØ5�FÐ5˜fÐ5 h°Ð5Ð5ˆà-�4Ô-ð 
Ø"°ð
ð 
Ø?Eð
ð 
ˆõ " (×"5Ò"5Ñ"7Ô"7Ñ8Ô8ð 	ð 	ˆDÝ$ TÑ*Ô*ˆEØð Ý.°uÈdÐSÑSÔS�Øð UØ×0Ò0µ°U´]Ñ1CÔ1CÈ8Ð0ÑTÔTÐTØ���øð	ð 	r>   ú"AsyncIterator[ChatGenerationChunk]c               óz  K  — |                       ||¦  «        \  }}|ddœ|¥|¥}|                     d¦  «        }t          |                      ¦   «         ¬¦  «        }|                     |                      ¦   «         |                      |¦  «        |¬¦  «        4 ƒd {V —†	 }	t          |	j        ¦  «        2 3 d {V —†}
t          |
¦  «        }|rGt          |d ¬¦  «        }|r/|                     t          |j        ¦  «        |¬¦  «        ƒ d {V —† |W V — Œ`6 	 d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S )NT)rÔ   rœ   r�   r¨   rª   rç   rö   )rÝ   r­   r6   r®   rÄ   r°   r±   Ú_parse_stream_asyncre   rú   r)   rû   r‡   )rž   rÔ   rÖ   rB   r£   rá   râ   r�   r¸   r¹   rü   r÷   rý   s                r?   Ú_astreamzChatDeepInfra._astream’  s  è è € ð !%× :Ò :¸8ÀTÑ JÔ JÑˆ�vØ+°tÐPÐP¸vÐPÈÐPˆà Ÿ*š*Ð%6Ñ7Ô7ˆÝ 4§=¢=¡?¤?Ð3Ñ3Ô3ˆØ—=’=Ø—	’	‘” $§*¢*¨VÑ"4Ô"4¸oð !ñ 
ô 
ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#àÝ1°(Ô2BÑCÔCð #ð #ð #ð #ð #ð #ð #�dÝ(¨Ñ.Ô.�Øð #Ý2¸5ÐRVÐWÑWÔW�HØ"ð Ø)×:Ò:Ý ¤Ñ.Ô.°hð ;ñ ô ð ð ð ð ð ð ð ð #�N�N�N�Nøð DÐCð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#s   Â D*Â5DÂ;AD*Ä*
D4Ä7D4c              ‹  ó  K  — |�|n| j         }|r& | j        |f||dœ|¤Ž}t          |¦  «        ƒ d {V —†S |                      ||¦  «        \  }}	d|i|	¥|¥}	 | j        dd|i|	¤Žƒ d {V —†}
|                      |
¦  «        S )NrÚ   rÔ   rB   r=   )r™   r  r   rÝ   rÆ   rÞ   )rž   rÔ   rÖ   rB   rœ   r£   rß   rà   rá   râ   rî   s              r?   Ú
_ageneratezChatDeepInfra._agenerate«  sà   è è € ð #)Ð"4˜˜¸$¼.ˆØð 	<Ø'˜$œ-ØðØ#°ðð Ø@Fðð ˆKõ /¨{Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;à $× :Ò :¸8ÀTÑ JÔ JÑˆ�vØ˜mÐ@¨vÐ@¸Ð@ˆà/�DÔ/ÐRÐR¸KÐRÈ6ÐRÐRÐRÐRÐRÐRÐRÐRˆØ×'Ò'¨Ñ,Ô,Ð,r>   c                óD   — | j         | j        | j        | j        | j        dœS )zGet the identifying parameters.)r„   r�   r’   r“   r•   )rˆ   r�   r’   r“   r•   r�   s    r?   Ú_identifying_paramsz!ChatDeepInfra._identifying_paramsÀ  s-   € ð ”_ØÔ+Ø”ZØ”ZØ”ð
ð 
ð 	
r>   c                ó   — dS )Nzdeepinfra-chatr=   r�   s    r?   Ú	_llm_typezChatDeepInfra._llm_typeË  s   € àÐr>   Úcoder´   ÚNonec                ó¢   — |dk    rt          d|› d|› �¦  «        ‚|dk    rt          d|› �¦  «        ‚|dk    rt          d|› d|› �¦  «        ‚d S )Niô  zDeepInfra Server error status z: i�  z'DeepInfra received an invalid payload: éÈ   z6DeepInfra returned an unexpected response with status )r8   r   rµ   )rž   r  r´   s      r?   r²   zChatDeepInfra._handle_statusÏ  sˆ   € Ø�3Š;ˆ;Ý(Ø?°Ð?Ð?¸Ð?Ð?ñô ð ð �SŠ[ˆ[ÝÐMÀtÐMÐMÑNÔNÐNØ�SŠ[ˆ[ÝØWÈÐWÐWÐQUÐWÐWñô ð ð ˆ[r>   c                ó   — | j         S ©N)r‰   r�   s    r?   r°   zChatDeepInfra._urlÛ  s	   € ØŒxˆr>   c                ó   — d| j         › �ddœS )Nzbearer zapplication/json)ÚAuthorizationzContent-Type)r‹   r�   s    r?   r®   zChatDeepInfra._headersÞ  s"   € àA tÔ'?ÐAÐAØ.ð
ð 
ð 	
r>   c                ó   — |S r  r=   )rž   r£   s     r?   r±   zChatDeepInfra._bodyä  s   € Øˆr>   ÚtoolsúDSequence[Union[Dict[str, Any], Type[BaseModel], Callable, BaseTool]]ú'Runnable[LanguageModelInput, AIMessage]c                óR   •— d„ |D ¦   «         } t          ¦   «         j        dd|i|¤ŽS )a3  Bind tool-like objects to this chat model.

        Assumes model is compatible with OpenAI tool-calling API.

        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.
            **kwargs: Any additional parameters to pass to the
                :class:`~langchain.runnable.Runnable` constructor.
        c                ó,   — g | ]}t          |¦  «        ‘ŒS r=   r/   )rl   r|   s     r?   rm   z,ChatDeepInfra.bind_tools.<locals>.<listcomp>ù  s!   € ÐJÐJÐJ¸DÕ1°$Ñ7Ô7ÐJÐJÐJr>   r  r=   )ÚsuperÚbind)rž   r  r£   Úformatted_toolsÚ	__class__s       €r?   Ú
bind_toolszChatDeepInfra.bind_toolsç  s:   ø€ ð$ KÐJÀEÐJÑJÔJˆØ�u‰wŒwŒ|Ð<Ð< /Ð<°VÐ<Ð<Ð<r>   )rD   r[   r  )rB   r¢   r£   r   rD   r   )rB   rÁ   r£   r   rD   r   )rÉ   r   rD   r   )rD   r5   )NNN)rÔ   rÕ   rÖ   r×   rB   r¢   rœ   rØ   r£   r   rD   r*   )r¹   ra   rD   r*   )rÔ   rÕ   rÖ   r×   rD   rð   )NN)
rÔ   rÕ   rÖ   r×   rB   r¢   r£   r   rD   rô   )
rÔ   rÕ   rÖ   r×   rB   rÁ   r£   r   rD   rþ   )rÔ   rÕ   rÖ   r×   rB   rÁ   rœ   rØ   r£   r   rD   r*   )rD   r‡   )r  r”   r´   r   rD   r	  )rD   r   )r£   r   rD   r   )r  r  r£   r   rD   r  ),r9   r:   r;   r<   r3   rˆ   Ú__annotations__r‰   r‹   r�   r�   rM   r‘   r’   r“   r•   r—   r™   rH   r2   Úmodel_configÚpropertyrŸ   r¡   rÀ   rÆ   r4   ÚclassmethodrÐ   rÓ   rã   rÞ   rÝ   rÜ   r  r  r  r  r²   r°   r®   r±   r  Ú__classcell__)r  s   @r?   rA   rA   Ì   sœ  ø€ € € € € € Ø3Ð3ð �eÐ$DÈGÐTÑTÔT€JÐTÐTÐTÑTØàE€CÐEÐEÐEÑEØ&à)-ÐÐ-Ð-Ð-Ñ-Ø', u°TÀÐ'KÑ'KÔ'K€OÐKÐKÐKÑKØ#$€KÐ$Ð$Ð$Ñ$ðà#( 5¸Ð#>Ñ#>Ô#>€LÐ>Ð>Ð>Ñ>ØQØ!€EÐ!Ð!Ð!Ñ!ðXà€EÐÐÐÑðà€A€J€J€J�JðIà€JÐÐÐÑØ€IÐÐÐÑØ€KÐÐÐÑà�:Øðñ ô €Lð ð

ð 

ð 

ñ „Xð

ð ð(ð (ð (ñ „Xð(ð
 AEð0ð 0ð 0ð 0ð 0ð0 @Dð6ð 6ð 6ð 6ð 6ð0 €_˜(Ð#Ñ#Ô#Øðð ð ñ „[ñ $Ô#ðð" €_˜'Ð"Ñ"Ô"ð
ð 
ð 
ñ #Ô"ð
ð %)Ø:>Ø!%ð9ð 9ð 9ð 9ð 9ð,ð ð ð ð	%ð 	%ð 	%ð 	%ð %)Ø:>ð	ð ð ð ð ð0 %)Ø?Cð	#ð #ð #ð #ð #ð8 %)Ø?CØ!%ð-ð -ð -ð -ð -ð* ð
ð 
ð 
ñ „Xð
ð ð ð  ð  ñ „Xð ð
ð 
ð 
ð 
ðð ð ð ð
ð 
ð 
ð 
ðð ð ð ð=ð =ð =ð =ð =ð =ð =ð =ð =ð =r>   ÚrbodyúIterator[bytes]úIterator[str]c              #  ó>   K  — | D ]}t          |¦  «        }|�|V — Œd S r  ©Ú_parse_stream_helper©r   rü   Ú_lines      r?   rø   rø   ý  s<   è è € Øð ð ˆÝ$ TÑ*Ô*ˆØÐØˆKˆKˆKøðð r>   úaiohttp.StreamReaderúAsyncIterator[str]c               óL   K  — | 2 3 d {V —†}t          |¦  «        }|�|W V — Œ6 d S r  r$  r&  s      r?   r   r     sV   è è € Øð ð ð ð ð ð ð ˆdÝ$ TÑ*Ô*ˆØÐØˆKˆKˆKˆKøð �e�es   …#rü   ÚbytesrŠ   c                ó  — | rˆ|                       d¦  «        rs|                       d¦  «        r| t          d¦  «        d …         } n| t          d¦  «        d …         } |                      ¦   «         dk    rd S |                      d¦  «        S d S )Ns   data:s   data: s   [DONE]zutf-8)Ú
startswithÚlenÚstripÚdecode)rü   s    r?   r%  r%    sŽ   € Øð (�—’ Ñ)Ô)ð (Ø�?Š?˜9Ñ%Ô%ð 	)à�˜I™œÐ(Ð(Ô)ˆDˆDà�˜H™œ˜˜Ô(ˆDØ�:Š:‰<Œ<˜9Ò$Ð$ð �4à—;’;˜wÑ'Ô'Ð'Øˆ4r>   r‡   úOptional[BaseMessageChunk]c                óÞ   — 	 t          j        | ¦  «        }t          }|                     di g¦  «        d                              di ¦  «        }t	          ||¦  «        S # t
          $ r Y d S w xY w)Nrå   r   Údelta)rV   rW   r   rU   rx   rµ   )rü   ÚobjÚdefault_chunk_classr3  s       r?   rú   rú     sy   € ðÝŒj˜ÑÔˆÝ,ÐØ—’˜	 B 4Ñ(Ô(¨Ô+×/Ò/°¸Ñ<Ô<ˆÝ.¨uÐ6IÑJÔJÐJøÝð ð ð Øˆtˆtðøøøs   ‚AA Á
A,Á+A,r  )r@   rA   rB   rC   rD   rE   )r'   rM   rD   r%   )r'   r%   rD   r[   )r`   ra   rD   r   )r`   ra   rt   ru   rD   r   )ry   r   rD   rM   )r   r!  rD   r"  )r   r(  rD   r)  )rü   r+  rD   rŠ   )rü   r‡   rD   r1  )Wr<   Ú
__future__r   rV   Úloggingr   Útypingr   r   r   r   r	   r
   r   r   r   r   r   r   ÚaiohttprI   Ú langchain_core.callbacks.managerr   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$   Úlangchain_core.messages.toolr%   r'   rY   Úlangchain_core.outputsr(   r)   r*   Úlangchain_core.runnablesr+   Úlangchain_core.toolsr,   Úlangchain_core.utilsr.   Ú%langchain_core.utils.function_callingr0   Úpydanticr1   r2   r3   r4   Útyping_extensionsr5   Ú&langchain_community.utilities.requestsr6   Ú	getLoggerr9   Úloggerrµ   r8   rL   rZ   r_   rs   rx   r‚   rA   rø   r   r%  rú   r=   r>   r?   ú<module>rJ     s4  ðØ 'Ð 'à "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø  Ð  Ð  Ð  Ð  Ð  ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð €€€Ø €€€ðð ð ð ð ð ð ð ð >Ð =Ð =Ð =Ð =Ð =ðð ð ð ð ð ð ð ð ð ð
 LÐ KÐ KÐ KÐ KÐ Kðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 2Ð 1Ð 1Ð 1Ð 1Ð 1Ø FÐ FÐ FÐ FÐ FÐ Fðð ð ð ð ð ð ð ð ð ð
 .Ð -Ð -Ð -Ð -Ð -Ø )Ð )Ð )Ð )Ð )Ð )Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø HÐ HÐ HÐ HÐ HÐ HØ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ "Ð "Ð "Ð "Ð "Ð "à ;Ð ;Ð ;Ð ;Ð ;Ð ;à	ˆÔ	˜8Ñ	$Ô	$€ð	ð 	ð 	ð 	ð 	˜Yñ 	ô 	ð 	ð 	ð	ð ð ð ð ð9ð 9ð 9ð 9ð$ð ð ð ð&@ð @ð @ð @ð&.ð .ð .ð .ð,!ð !ð !ð !ðHn=ð n=ð n=ð n=ð n=�Mñ n=ô n=ð n=ðb	ð ð ð ðð ð ð ðð ð ð ð ð ð ð ð ð r>   