Ë
    µŒj®K  ã                  ó6  — 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jŽ                  eH«      ZI G d„ deJ«      ZK	 d#	 	 	 	 	 d$d„ZLd%d„ZMd&d„ZNd'd„ZO	 	 	 	 	 	 d(d„ZPd)d„ZQ G d„ de«      ZRd*d„ZSd+d „ZTd,d!„ZUd-d"„ZVy).z!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y)ÚChatDeepInfraExceptionz9Exception raised when the DeepInfra API returns an error.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    ús/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/chat_models/deepinfra.pyr7   r7   F   s   „ ÙCàr=   r7   ÚChatDeepInfrac                ón   — t        t        j                  j                  t        g| j
                  |¬«      S )zLReturns a tenacity retry decorator, preconfigured to handle PaLM exceptions.)Úerror_typesÚmax_retriesÚrun_manager)r   ÚrequestsÚ
exceptionsÚConnectTimeoutr7   rB   )ÚllmrC   s     r>   Ú_create_retry_decoratorrH   L   s0   € ô 'Ü×(Ñ(×7Ñ7Ô9OÐPØ—O‘OØôð r=   c                óÐ   — | d   j                  dd«      }	 t        j                  | d   d   «      }| j                  d«      }t        |||¬«      S # t        t        f$ r i }Y Œ2w xY w)zw
    Convert a tool calling response from server to a ToolCall object.
    Args:
        tool_call:

    Returns:

    ÚfunctionÚnameÚ Ú	argumentsÚid)rK   ÚargsrN   )ÚgetÚjsonÚloadsr   Ú	TypeErrorÚcreate_tool_call)r'   rK   rO   rN   s       r>   Ú_parse_tool_callingrU   Z   sr   € ð �ZÑ ×$Ñ$ V¨RÓ0€DðÜ�z‰z˜) JÑ/°Ñ<Ó=ˆð 
�‰�tÓ	€BÜ ¨D°RÔ8Ð8øô œYÐ'ò ØŠðús   —A ÁA%Á$A%c                ód   — dt        j                  | d   «      | d   dœ| j                  d«      dœS )zu
    Convert a ToolCall object to a tool calling request for server.
    Args:
        tool_call:

    Returns:

    rJ   rO   rK   )rM   rK   rN   )ÚtyperJ   rN   )rQ   ÚdumpsrP   r&   s    r>   Ú_convert_to_tool_callingrY   l   s=   € ð äŸ™ I¨fÑ$5Ó6Ø˜fÑ%ñ
ð �m‰m˜DÓ!ñð r=   c                ób  — | d   }|dk(  rt        | d   ¬«      S |dk(  rQ| j                  dd«      xs d}| j                  dg «      xs g }|D �cg c]  }t        |«      ‘Œ }}t        ||¬«      S |d	k(  rt	        | d   ¬«      S |d
k(  rt        | d   | d   ¬«      S t        | d   |¬«      S c c}w )NÚroleÚuserÚcontent©r]   Ú	assistantrL   Ú
tool_calls©r]   r`   ÚsystemrJ   rK   ©r]   rK   ©r]   r[   )r    rP   rU   r   r"   r   r   )Ú_dictr[   r]   Útool_calls_contentr'   r`   s         r>   Ú_convert_dict_to_messagerg      sÔ   € Ø�‰=€DØˆv‚~Ü E¨)Ñ$4Ô5Ð5Ø	�Ò	Ø—)‘)˜I rÓ*Ò0¨bˆØ"ŸY™Y |°RÓ8Ò>¸BÐá<Nó
Ù<N¨yÔ 	Õ*Ð<Nð 	ð 
ô  °ZÔ@Ð@Ø	�Ò	Ü U¨9Ñ%5Ô6Ð6Ø	�Ò	Ü u¨YÑ'7¸eÀF¹mÔLÐLä 5¨Ñ#3¸$Ô?Ð?ùò
s   ÁB,c                óÎ  — | j                  d«      }| j                  d«      xs d}| j                  d«      xs g }|dk(  s	|t        k(  rt        |¬«      S |dk(  s	|t        k(  r%|D �cg c]  }t        |«      ‘Œ }}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 c c}w )Nr[   r]   rL   r`   r\   r^   r_   ra   rb   rJ   rK   rc   rd   )rP   r!   r   rU   r#   r   r   )re   Údefault_classr[   r]   r`   r'   s         r>   Ú_convert_delta_to_message_chunkrj   ’   sí   € ð �9‰9�VÓ€DØ�i‰i˜	Ó"Ò( b€GØ—‘˜<Ó(Ò.¨B€Jàˆv‚~˜Ô*;Ò;Ü ¨Ô1Ð1Ø	�Ò	 ´Ò ?ÙFPÓQÁj¸Ô)¨)Õ4Àjˆ
ÐQÜ g¸*ÔEÐEØ	�Ò	˜]Ô.@Ò@Ü!¨'Ô2Ð2Ø	�Ò	˜}Ô0DÒDÜ#¨G¸%À¹-ÔHÐHÙ	�Ô"2Ò2Ü¨°dÔ;Ð;á WÔ-Ð-ùò Rs   Á(C"c                óˆ  — t        | t        «      r| j                  | j                  dœ}nòt        | t        «      rd| j                  dœ}nÒt        | t
        «      r3| j                  D �cg c]  }t        |«      ‘Œ }}d| j                  |dœ}n�t        | t        «      rd| j                  dœ}not        | t        «      rd| j                  | j                  dœ}nDt        | t        «      r&d| j                  | j                  | j                  d	œ}nt        d
| › �«      ‚d| j                  v r| j                  d   |d<   |S c c}w )N)r[   r]   r\   r_   )r[   r]   r`   rb   rJ   )r[   r]   rK   Útool)r[   r]   rK   Útool_call_idzGot unknown type rK   )Ú
isinstancer   r[   r]   r    r   r`   rY   r"   r   rK   r$   rm   Ú
ValueErrorÚadditional_kwargs)ÚmessageÚmessage_dictr'   r`   s       r>   Ú_convert_message_to_dictrs   ¨   s+  € Ü�'œ;Ô'Ø '§¡¸¿¹ÑI‰Ü	�Gœ\Ô	*Ø &°7·?±?ÑC‰Ü	�GœYÔ	'àAH×ASÒASó
ÙAS°IÔ$ YÕ/ÐASð 	ð 
ð  Ø—‘Ø$ñ
‰ô
 
�Gœ]Ô	+Ø (°W·_±_ÑE‰Ü	�Gœ_Ô	-àØ—‘Ø—L‘Lñ
‰ô
 
�Gœ[Ô	)àØ—‘Ø—L‘LØ#×0Ñ0ñ	
‰ô Ð,¨W¨IÐ6Ó7Ð7Ø�×*Ñ*Ñ*Ø&×8Ñ8¸Ñ@ˆ�VÑØÐùò7
s   Á)D?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d7d!„«       Zed7d"„«       Z	 d8	 	 	 	 	 d9d#„Z	 d8	 	 	 	 	 d:d$„Z ed%¬&«      ed;d'„«       «       Z ed(¬&«      d<d)„«       Z	 	 	 d=	 	 	 	 	 	 	 	 	 	 	 d>d*„Zd?d+„Z	 	 	 	 	 	 d@d,„Z 	 	 dA	 	 	 	 	 	 	 	 	 dBd-„Z!	 	 dA	 	 	 	 	 	 	 	 	 dCd.„Z"	 	 	 d=	 	 	 	 	 	 	 	 	 	 	 dDd/„Z#ed7d0„«       Z$edEd1„«       Z%dFd2„Z&dEd3„Z'dGd4„Z(dHd5„Z)	 	 	 	 	 	 dIˆ fd6„Z*ˆ xZ+S )Jr?   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_factoryúDict[str, Any]Úmodel_kwargsÚtop_pzOptional[int]Útop_kÚintÚné   Ú
max_tokensFÚboolÚ	streamingrB   T)Úpopulate_by_namec                ó¤   — | j                   | j                  | j                  | j                  | j                  | j
                  dœ| j                  ¥S )z2Get the default parameters for calling OpenAI API.)ru   r‰   Ústreamr‡   r€   r~   )ry   r‰   r‹   r‡   r€   r~   rƒ   ©Úselfs    r>   Ú_default_paramszChatDeepInfra._default_paramsî   sL   € ð —_‘_ØŸ/™/Ø—n‘nØ—‘Ø×+Ñ+Ø#×3Ñ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=   c                óD   ‡ — t        ‰ |¬«      }|dˆ fd„«       } |di |¤ŽS )z*Use tenacity to retry the completion call.©rC   c                 óJ  •— 	 | j                  d«      }t        ‰j                  «       ¬«      }|j                  ‰j	                  «       ‰j                  | «      |¬«      }‰j                  |j                  |j                  «       |S # t        $ r}t        d|«       ‚ d }~ww xY w©Nr~   ©Úheaders©rz   Údatar}   ÚEX)Úpopr5   Ú_headersÚpostÚ_urlÚ_bodyÚ_handle_statusÚstatus_codeÚtextÚ	ExceptionÚprint©Úkwargsr~   ÚrequestÚresponseÚer�   s        €r>   Ú_completion_with_retryzCChatDeepInfra.completion_with_retry.<locals>._completion_with_retry  s�   ø€ ð
Ø"(§*¡*Ð->Ó"?�Ü"¨4¯=©=«?Ô;�Ø"Ÿ<™<ØŸ	™	›¨$¯*©*°VÓ*<Àoð (ó �ð ×#Ñ# H×$8Ñ$8¸(¿-¹-ÔHØ�øÜò Ü�d˜A”Øûðús   ƒBB Â	B"ÂBÂB"©r¨   r   Úreturnr   r<   ©rH   ©r�   rC   r¨   Úretry_decoratorr¬   s   `    r>   Úcompletion_with_retryz#ChatDeepInfra.completion_with_retry   s3   ø€ ô 2°$ÀKÔPˆà	ô	ó 
ð	ñ &Ñ/¨Ñ/Ð/r=   c              ‹  ó`   ‡ K  — t        ‰ |¬«      }|dˆ fd„«       } |di |¤Žƒ d{  –—† S 7 Œ­w)z0Use tenacity to retry the async completion call.r•   c               ›  ó  •K  — 	 | j                  d«      }t        ‰j                  «       ¬«      }|j                  ‰j	                  «       ‰j                  | «      |¬«      4 ƒd {  –—† }‰j                  |j                  |j                  «       ƒ d {  –—† «       |j                  «       ƒ d {  –—† cd d d «      ƒd {  –—†  S 7 Œ_7 Œ37 Œ7 Œ# 1 ƒd {  –—†7  sw Y   y xY w# t        $ r}t        d|«       ‚ d }~ww xY w­wr—   )r�   r5   rž   Úapostr    r¡   r¢   Ústatusr¤   rQ   r¥   r¦   r§   s        €r>   r¬   zDChatDeepInfra.acompletion_with_retry.<locals>._completion_with_retry  sÐ   øè ø€ ð
Ø"(§*¡*Ð->Ó"?�Ü"¨4¯=©=«?Ô;�Ø"Ÿ=™=ØŸ	™	›¨$¯*©*°VÓ*<Àoð )÷ ô àØ×'Ñ'¨¯©¸x¿}¹}»×9NÔOØ!)§¡£×0÷	÷ ò øð :OøØ0øð	ø÷ ÷ ñ ûô
 ò Ü�d˜A”Øûðüs¡   ƒD …A C" Á%CÁ&C" Á)*CÂCÂCÂ/C	Â0CÂ3C" Â?CÃ C" ÃD ÃC" ÃCÃ	CÃC" ÃCÃCÃCÃC" ÃD ÃC" Ã"	C=Ã+C8Ã8C=Ã=D Nr­   r<   r¯   r°   s   `    r>   Úacompletion_with_retryz$ChatDeepInfra.acompletion_with_retry  s=   øè ø€ ô 2°$ÀKÔPˆà	ô	ó 
ð	ñ ,Ñ5¨fÑ5×5Ð5Ð5ús   ƒ$.§,¨.Úbefore)Úmodec                óH   — 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_KEYrL   )rv   r|   ÚDEEPINFRA_API_TOKENr-   )ÚclsÚvaluesÚapi_keys      r>   Úinit_defaultszChatDeepInfra.init_defaults.  s?   € ô
 'ØØØØô	
ˆô )=ØØ!Ø!Øô	)
ˆÐ$Ñ%ð ˆr=   Úafterc                ó2  — | j                   �,d| j                   cxk  rdk  st        d«      ‚ t        d«      ‚| j                  �,d| j                  cxk  rdk  st        d«      ‚ 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€   ro   r„   r…   r�   s    r>   Úvalidate_environmentz"ChatDeepInfra.validate_environmentA  sš   € à×ÑÐ'°°T×5EÑ5EÔ0JÈÒ0JÜÐJÓKÐKð 1KÜÐJÓKÐKà�:‰:Ð!¨!¨t¯z©zÔ*>¸QÒ*>ÜÐDÓEÐEð +?ÜÐDÓEÐEà�:‰:Ð! d§j¡j°A¢oÜÐ5Ó6Ð6àˆr=   c                ó  — |�|n| j                   }|r! | j                  |f||dœ|¤Ž}t        |«      S | j                  ||«      \  }}	i |	¥|¥}	 | j                  d||dœ|	¤Ž}
| j                  |
j                  «       «      S )N©ÚstoprC   ©ÚmessagesrC   r<   )r‹   Ú_streamr   Ú_create_message_dictsr²   Ú_create_chat_resultrQ   )r�   rÉ   rÇ   rC   rŽ   r¨   Úshould_streamÚstream_iterÚmessage_dictsÚparamsrª   s              r>   Ú	_generatezChatDeepInfra._generateN  s¬   € ð #)Ð"4™¸$¿.¹.ˆÙØ&˜$Ÿ,™,ØðØ#°ñØ@FñˆKô (¨Ó4Ð4à $× :Ñ :¸8ÀTÓ JÑˆ�vØ%�FÐ%˜fÐ%ˆØ-�4×-Ñ-ð 
Ø"°ñ
Ø?Eñ
ˆð ×'Ñ'¨¯©«Ó8Ð8r=   c           	     ó  — g }|d   D ]G  }t        |d   «      }t        |t        |j                  d«      ¬«      ¬«      }|j	                  |«       ŒI |j                  di «      }|| j
                  dœ}t        ||¬«      }|S )	NÚchoicesrq   Úfinish_reason)rÔ   ©rq   Úgeneration_infoÚusage)Útoken_usageru   )ÚgenerationsÚ
llm_output)rg   r(   ÚdictrP   Úappendry   r*   )r�   rª   rÙ   Úresrq   ÚgenrØ   rÚ   s           r>   rÌ   z!ChatDeepInfra._create_chat_resultd  sƒ   € ØˆØ˜IÔ&ˆCÜ.¨s°9©~Ó>ˆGÜ ØÜ $°3·7±7¸?Ó3KÔ LôˆCð ×Ñ˜sÕ#ð 'ð —l‘l 7¨BÓ/ˆØ%0¸4¿?¹?ÑKˆ
Ü [¸ZÔHˆØˆ
r=   c                óˆ   — | j                   }|�d|v rt        d«      ‚||d<   |D �cg c]  }t        |«      ‘Œ }}||fS c c}w )NrÇ   z2`stop` found in both the input and default params.)r“   ro   rs   )r�   rÉ   rÇ   rÐ   ÚmrÏ   s         r>   rË   z#ChatDeepInfra._create_message_dictsr  s]   € ð ×$Ñ$ˆØÐØ˜ÑÜ Ð!UÓVÐVØ!ˆF�6‰NÙ>FÓG¹h¸Ô1°!Õ4¸hˆÐGØ˜fÐ$Ð$ùò Hs   §?c              +  ó>  K  — | j                  ||«      \  }}i |¥|¥ddi¥} | j                  d||dœ|¤Ž}t        |j                  «       «      D ]I  }t	        |«      }	|	sŒt        |	d ¬«      }
|r&|j                  t        |	j                  «      |
¬«       |
–— ŒK y ­w)NrŽ   TrÈ   rÕ   ©Úchunkr<   )	rË   r²   Ú_parse_streamÚ
iter_linesÚ_handle_sse_liner)   Úon_llm_new_tokenrx   r]   )r�   rÉ   rÇ   rC   r¨   rÏ   rÐ   rª   Úlinerã   Úcg_chunks              r>   rÊ   zChatDeepInfra._stream}  s°   è ø€ ð !%× :Ñ :¸8ÀTÓ JÑˆ�vØ5�FÐ5˜fÐ5 h°Ñ5ˆà-�4×-Ñ-ð 
Ø"°ñ
Ø?Eñ
ˆô " (×"5Ñ"5Ó"7Ö8ˆDÜ$ TÓ*ˆEÚÜ.°uÈdÔS�ÙØ×0Ñ0´°U·]±]Ó1CÈ8Ð0ÔTØ“ñ 9ùs   ‚ABÁ!<Bc               óJ  K  — | j                  ||«      \  }}|ddœ|¥|¥}|j                  d«      }t        | j                  «       ¬«      }|j	                  | j                  «       | j                  |«      |¬«      4 ƒd {  –—† }	t        |	j                  «      2 3 d {  –—† }
t        |
«      }|sŒt        |d ¬«      }|r.|j                  t        |j                  «      |¬«      ƒ d {  –—†  |­–— ŒZ7 Œs7 ŒW7 Œ6 d d d «      ƒd {  –—†7   y # 1 ƒd {  –—†7  sw Y   y xY w­w)NT)rÉ   rŽ   r~   r˜   rš   rÕ   râ   )rË   r�   r5   rž   rµ   r    r¡   Ú_parse_stream_asyncr]   ræ   r)   rç   rx   )r�   rÉ   rÇ   rC   r¨   rÏ   rÐ   r~   r©   rª   rè   rã   ré   s                r>   Ú_astreamzChatDeepInfra._astream’  s  è ø€ ð !%× :Ñ :¸8ÀTÓ JÑˆ�vØ+°tÑP¸vÐPÈÐPˆà Ÿ*™*Ð%6Ó7ˆÜ 4§=¡=£?Ô3ˆØ—=‘=Ø—	‘	“ $§*¡*¨VÓ"4¸oð !÷ 
ô 
àÜ1°(×2BÑ2BÔC÷ #�dÜ(¨Ó.�ÚÜ2¸5ÐRVÔW�HÙ"Ø)×:Ñ:Ü §¡Ó.°hð ;ó ÷ ð ð #”Nð
øð#øð
øð D÷
÷ 
÷ 
÷ 
ó 
üs„   ‚A?D#ÂC5ÂD#ÂDÂC;ÂC7Â C;Â#DÂ28DÃ*C9Ã+
DÃ5D#Ã7C;Ã9DÃ;DÃ<D#ÄD
ÄD#ÄD ÄDÄD ÄD#c              ‹  ó  K  — |�|n| j                   }|r) | j                  |f||dœ|¤Ž}t        |«      ƒ d {  –—† S | j                  ||«      \  }}	d|i|	¥|¥}	 | j                  dd|i|	¤Žƒ d {  –—† }
| j                  |
«      S 7 ŒN7 Œ­w)NrÆ   rÉ   rC   r<   )r‹   rì   r   rË   r·   rÌ   )r�   rÉ   rÇ   rC   rŽ   r¨   rÍ   rÎ   rÏ   rÐ   rÝ   s              r>   Ú
_ageneratezChatDeepInfra._agenerate«  sµ   è ø€ ð #)Ð"4™¸$¿.¹.ˆÙØ'˜$Ÿ-™-ØðØ#°ñØ@FñˆKô /¨{Ó;×;Ð;à $× :Ñ :¸8ÀTÓ JÑˆ�vØ˜mÐ@¨vÐ@¸Ð@ˆà/�D×/Ñ/ÑR¸KÐRÈ6ÑR×RˆØ×'Ñ'¨Ó,Ð,ð <øð
 Sús!   ‚7B¹Bº8BÁ2B
Á3BÂ
Bc                óv   — | j                   | j                  | j                  | j                  | j                  dœS )zGet the identifying parameters.)ru   r€   r„   r…   r‡   )ry   r€   r„   r…   r‡   r�   s    r>   Ú_identifying_paramsz!ChatDeepInfra._identifying_paramsÀ  s3   € ð —_‘_Ø×+Ñ+Ø—Z‘ZØ—Z‘ZØ—‘ñ
ð 	
r=   c                 ó   — y)Nzdeepinfra-chatr<   r�   s    r>   Ú	_llm_typezChatDeepInfra._llm_typeË  s   € àr=   c                ó‚   — |dk\  rt        d|› d|› �«      ‚|dk\  rt        d|› �«      ‚|dk7  rt        d|› d|› �«      ‚y )Niô  zDeepInfra Server error status z: i�  z'DeepInfra received an invalid payload: éÈ   z6DeepInfra returned an unexpected response with status )r7   ro   r¥   )r�   Úcoder¤   s      r>   r¢   zChatDeepInfra._handle_statusÏ  sm   € Ø�3Š;Ü(Ø0°°°b¸¸Ð?óð ð �SŠ[ÜÐFÀtÀfÐMÓNÐNØ�SŠ[ÜØHÈÈÈbÐQUÐPVÐWóð ð r=   c                ó   — | j                   S ©N)rz   r�   s    r>   r    zChatDeepInfra._urlÛ  s   € Ø�x‰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    € à& t×'?Ñ'?Ð&@ÐAØ.ñ
ð 	
r=   c                ó   — |S r÷   r<   )r�   r¨   s     r>   r¡   zChatDeepInfra._bodyä  s   € Øˆr=   c                ó`   •— |D �cg c]  }t        |«      ‘Œ }}t        ‰| �  dd|i|¤ŽS c c}w )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.
        Útoolsr<   )r/   ÚsuperÚbind)r�   rü   r¨   rl   Úformatted_toolsÚ	__class__s        €r>   Ú
bind_toolszChatDeepInfra.bind_toolsç  s>   ø€ ñ$ EJÓJÁE¸DÔ1°$Õ7ÀEˆÐJÜ‰w‰|Ñ< /Ð<°VÑ<Ð<ùò Ks   †+)r®   r‚   r÷   )rC   ú"Optional[CallbackManagerForLLMRun]r¨   r   r®   r   )rC   ú'Optional[AsyncCallbackManagerForLLMRun]r¨   r   r®   r   )r¿   r   r®   r   )r®   r4   )NNN)rÉ   úList[BaseMessage]rÇ   úOptional[List[str]]rC   r  rŽ   úOptional[bool]r¨   r   r®   r*   )rª   úMapping[str, Any]r®   r*   )rÉ   r  rÇ   r  r®   z+Tuple[List[Dict[str, Any]], Dict[str, Any]])NN)
rÉ   r  rÇ   r  rC   r  r¨   r   r®   zIterator[ChatGenerationChunk])
rÉ   r  rÇ   r  rC   r  r¨   r   r®   z"AsyncIterator[ChatGenerationChunk])rÉ   r  rÇ   r  rC   r  rŽ   r  r¨   r   r®   r*   )r®   rx   )rõ   r†   r¤   r   r®   ÚNone)r®   r   )r¨   r   r®   r   )rü   zDSequence[Union[Dict[str, Any], Type[BaseModel], Callable, BaseTool]]r¨   r   r®   z)Runnable[LanguageModelInput, BaseMessage]),r8   r9   r:   r;   r2   ry   Ú__annotations__rz   r|   r~   r€   rÛ   rƒ   r„   r…   r‡   r‰   r‹   rB   r1   Úmodel_configÚpropertyr‘   r“   r²   r·   r3   ÚclassmethodrÁ   rÄ   rÑ   rÌ   rË   rÊ   rì   rî   rð   rò   r¢   r    rž   r¡   r  Ú__classcell__)r   s   @r>   r?   r?   Ì   s   ø… Ù3ñ Ð$DÈGÔT€J�ÓTØàE€CˆÓEØ&à)-Ð˜Ó-Ù',°TÀÔ'K€O�_ÓKØ#$€K�Ó$ðá#(¸Ô#>€L�.Ó>ØQØ!€Eˆ?Ó!ðXà€Eˆ=Óðà€A€sƒJðIà€J�ÓØ€IˆtÓØ€K�ÓáØô€Lð ò

ó ð

ð ò(ó ð(ð
 AEð0Ø=ð0ØPSð0à	ó0ð0 @Dð6à<ð6ð ð6ð 
ó	6ñ0 ˜(Ô#Øòó ó $ðñ" ˜'Ô"ò
ó #ð
ð %)Ø:>Ø!%ð9à#ð9ð "ð9ð 8ð	9ð
 ð9ð ð9ð 
ó9ó,ð	%Ø)ð	%Ø1Dð	%à	4ó	%ð %)Ø:>ð	à#ðð "ðð 8ð	ð
 ðð 
'óð0 %)Ø?Cð	#à#ð#ð "ð#ð =ð	#ð
 ð#ð 
,ó#ð8 %)Ø?CØ!%ð-à#ð-ð "ð-ð =ð	-ð
 ð-ð ð-ð 
ó-ð* ò
ó ð
ð ò ó ð ó
óó
óð=àSð=ð ð=ð 
3÷	=ñ =r=   c              #  ó>   K  — | D ]  }t        |«      }|€Œ|–— Œ y ­wr÷   ©Ú_parse_stream_helper©Úrbodyrè   Ú_lines      r>   rä   rä   ý  s%   è ø€ ÛˆÜ$ TÓ*ˆØÑØ‹Kñ ùs   ‚–c               óP   K  — | 2 3 d {  –—† }t        |«      }|€Œ|­–— Œ7 Œ6 y ­wr÷   r  r  s      r>   rë   rë     s-   è ø€ Ù÷ ˆdÜ$ TÓ*ˆØÑØŒKðø‘eùs    ‚&…$‰"Š$�&œ&¢$¤&c                óÐ   — | rd| j                  d«      rS| j                  d«      r| t        d«      d  } n| t        d«      d  } | j                  «       dk(  ry | j                  d«      S y )Ns   data:s   data: s   [DONE]zutf-8)Ú
startswithÚlenÚstripÚdecode)rè   s    r>   r  r    sb   € Ù�—‘ Ô)Ø�?‰?˜9Ô%àœ˜I›Ð(Ð)‰Dàœ˜H›˜Ð(ˆDØ�:‰:‹<˜9Ò$ð à—;‘;˜wÓ'Ð'Ør=   c                ó¼   — 	 t        j                  | «      }t        }|j                  di g«      d   j                  di «      }t	        ||«      S # t
        $ r Y y w xY w)NrÓ   r   Údelta)rQ   rR   r   rP   rj   r¥   )rè   ÚobjÚdefault_chunk_classr  s       r>   ræ   ræ     s_   € ðÜ�j‰j˜ÓˆÜ,ÐØ—‘˜	 B 4Ó(¨Ñ+×/Ñ/°¸Ó<ˆÜ.¨uÐ6IÓJÐJøÜò Ùðús   ‚AA Á	AÁAr÷   )rG   r?   rC   zHOptional[Union[AsyncCallbackManagerForLLMRun, CallbackManagerForLLMRun]]r®   zCallable[[Any], Any])r'   rÛ   r®   r%   )r'   r%   r®   r‚   )re   r  r®   r   )re   r  ri   zType[BaseMessageChunk]r®   r   )rq   r   r®   rÛ   )r  zIterator[bytes]r®   zIterator[str])r  zaiohttp.StreamReaderr®   zAsyncIterator[str])rè   Úbytesr®   r{   )rè   rx   r®   zOptional[BaseMessageChunk])Wr;   Ú
__future__r   rQ   Úloggingr   Útypingr   r   r   r   r	   r
   r   r   r   r   r   r   ÚaiohttprD   Ú 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'   rT   Úlangchain_core.outputsr(   r)   r*   Úlangchain_core.runnablesr+   Úlangchain_core.toolsr,   Úlangchain_core.utilsr.   Ú%langchain_core.utils.function_callingr/   Úpydanticr0   r1   r2   r3   Útyping_extensionsr4   Ú&langchain_community.utilities.requestsr5   Ú	getLoggerr8   Úloggerr¥   r7   rH   rU   rY   rg   rj   rs   r?   rä   rë   r  ræ   r<   r=   r>   Ú<module>r3     s$  ðÙ 'å "ã Û Ý  ÷÷ ÷ ó ó Û ÷õ >÷ñ õ
 L÷÷ ÷ õ õ 2Ý F÷ñ õ
 .Ý )Ý 5Ý Hß BÓ BÝ "å ;à	ˆ×	Ñ	˜8Ó	$€ô	˜Yô 	ð 	ð	Ø	ðððð
 óó9ó$ó&@ð&.Øð.Ø-Cð.àó.ó,!ôHn=�Mô n=ób	óóô r=   