§
    šŠtjèV  ã                   óš  — 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mZ d dl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m Z m!Z!m"Z"m#Z#m$Z$m%Z% d d	l&m'Z( d d
l&m)Z* d dl&m+Z, d dl-m.Z. d dl/m0Z0m1Z1 d dl2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9 d dl:m;Z; d dl<m=Z=m>Z>m?Z? d dl@mAZA d dlBmCZC d dlDmEZEmFZFmGZGmHZH d dlImJZJ de5de4fd„ZKdeLdeLfd„ZMde
e          dee
eeLef                  e
e          f         fd„ZNde
e          deeLef         fd„ZOde de
fd„ZPd eeLef         dee
e$         e
e"         f         fd!„ZQ G d"„ d#e¦  «        ZRdS )$é    N)Ú
itemgetter)ÚAnyÚAsyncIteratorÚCallableÚDictÚIteratorÚListÚLiteralÚOptionalÚSequenceÚTupleÚTypeÚUnionÚcast)ÚClientSession)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚLanguageModelInput)ÚBaseChatModelÚagenerate_from_streamÚgenerate_from_stream)Ú	AIMessageÚAIMessageChunkÚBaseMessageÚHumanMessageÚInvalidToolCallÚSystemMessageÚToolCallÚToolMessage)Úinvalid_tool_call)Ú	tool_call)Útool_call_chunk)ÚOutputParserLike)ÚJsonOutputKeyToolsParserÚPydanticToolsParser)ÚChatGenerationÚChatGenerationChunkÚ
ChatResult)ÚRunnableÚRunnableMapÚRunnablePassthrough)ÚBaseTool)Úconvert_to_secret_strÚget_from_dict_or_envÚpre_init©Úconvert_to_openai_tool)Úis_basemodel_subclass)Ú	BaseModelÚ
ConfigDictÚFieldÚ	SecretStr)ÚRequestsÚgenerated_resultÚreturnc                 ó&  — | j         d         j        }t          |t          ¦  «        rK|j        �Dd„ t          |j        ¦  «        D ¦   «         }t          |j        |¬¦  «        }t          |¬¦  «        S t          t          | j         d         ¦  «        S )Nr   c           	      ó‚   — g | ]<\  }}t          |d          t          j        |d         ¦  «        |d         |¬¦  «        ‘Œ=S )ÚnameÚargsÚid)r<   r=   r>   Úindex)Úcreate_tool_call_chunkÚjsonÚdumps)Ú.0Úidxr!   s      úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/chat_models/edenai.pyú
<listcomp>z._result_to_chunked_message.<locals>.<listcomp>D   sa   € ð 
ð 
ð 
ñ ��Yõ #Ø˜vÔ&Ý”Z 	¨&Ô 1Ñ2Ô2Ø˜T”?Øð	ñ ô ð
ð 
ð 
ó    )ÚcontentÚtool_call_chunks©Úmessage)
ÚgenerationsrK   Ú
isinstancer   Ú
tool_callsÚ	enumerater   rH   r'   r   )r8   rK   rI   Úmessage_chunks       rE   Ú_result_to_chunked_messagerQ   A   s¤   € ØÔ*¨1Ô-Ô5€GÝ�'�9Ñ%Ô%ð J¨'Ô*<Ð*Hð
ð 
õ #,¨GÔ,>Ñ"?Ô"?ð
ñ 
ô 
Ðõ 'Ø”OØ-ð
ñ 
ô 
ˆõ #¨=Ð9Ñ9Ô9Ð9åÕ'Ð)9Ô)EÀaÔ)HÑIÔIÐIrG   Útypec                 óL   — dddddœ}| |v r||          S t          d| › �¦  «        ‚)NÚ	assistantÚuser)ÚaiÚhumanÚchatr   zUnknown type: )Ú
ValueError)rR   Úrole_mappings     rE   Ú_message_roler[   V   sI   € àØØØ%ð	ð €Lð ˆ|ÐÐØ˜DÔ!Ð!åÐ0¨$Ð0Ð0Ñ1Ô1Ð1rG   Úmessagesc                 ó¾   — g }| dd…         }t          | ¦  «        D ]>}t          |t          ¦  «        r'|j        |j        dœg|¢}|                     ¦   «          Œ> ||fS )z¤
    Get the last langchain tools messages to transform them into edenai tool_results
    Returns tool_results and messages without the extracted tool messages
    N)r>   Úresult)ÚreversedrM   r   Útool_call_idrH   Úpop)r\   Útool_resultsÚother_messagesÚmsgs       rE   Ú*_extract_edenai_tool_results_from_messagesre   d   sƒ   € ð *,€LØ˜a˜a˜a”[€NÝ˜Ñ!Ô!ð ð ˆÝ�c�;Ñ'Ô'ð 	àÔ'°3´;Ð?Ð?ðàðˆLð ×ÒÑ Ô Ð Ð àØ˜Ð'Ð'rG   c                 ó(  — d }g }t          t          d„ | ¦  «        ¦  «        }|r|d         nd}t          | ¦  «        \  }}t          |¦  «        D ]­\  }}t	          |t
          ¦  «        r|dk    rt          d¦  «        ‚|j        }Œ7t	          |t          ¦  «        r| 	                    d|j        dœ¦  «         Œj||k    r=| 	                    t          |j        ¦  «        |j        t          |¦  «        dœ¦  «         Œ®t          |d	d¦  «        |||d
œS )Nc                 ó,   — t          | t          ¦  «        S ©N)rM   r   )rd   s    rE   ú<lambda>z)_format_edenai_messages.<locals>.<lambda>}   s   € ­Z¸½\Ñ-JÔ-J€ rG   éÿÿÿÿÚ r   z4System message must be at beginning of message list.Útool)ÚrolerK   )rm   rK   rN   rH   )ÚtextÚprevious_historyÚchatbot_global_actionrb   )ÚlistÚfilterre   rO   rM   r   rY   rH   r   Úappendr[   rR   Ú'_format_tool_calls_to_edenai_tool_callsÚgetattr)	r\   ÚsystemÚformatted_messagesÚhuman_messagesÚlast_human_messagerb   rc   ÚirK   s	            rE   Ú_format_edenai_messagesr{   y   sF  € Ø€FØÐå�&Ð!JÐ!JÈHÑUÔUÑVÔV€NØ/=ÐE˜¨Ô+Ð+À2Ðå#MÈhÑ#WÔ#WÑ €L�.Ý Ñ/Ô/ð ð ‰
ˆˆ7Ý�g�}Ñ-Ô-ð 	Ø�AŠvˆvÝ Ð!WÑXÔXÐXØ”_ˆFˆFÝ˜¥Ñ-Ô-ð 		Ø×%Ò%¨vÀ'Ä/Ð&RÐ&RÑSÔSÐSÐSØÐ*Ò*Ð*Ø×%Ò%å)¨'¬,Ñ7Ô7Ø&œÝ"IÈ'Ñ"RÔ"Rðð ñô ð øõ Ð*¨I°rÑ:Ô:Ø.Ø!'Ø$ð	ð ð rG   rK   c                 óæ  — t          | dg ¦  «        }t          | dg ¦  «        }g }|D ]T}|                     |                     d¦  «        |                     d¦  «        |                     d¦  «        dœ¦  «         ŒU|D ]r}|                     di ¦  «        }	 t          j        |¦  «        }n# t
          $ r t          |¦  «        }Y nw xY w|                     ||d         |d         dœ¦  «         Œs|S )NrN   Úinvalid_tool_callsr=   r>   r<   )Ú	argumentsr>   r<   )ru   rs   ÚgetrA   rB   Ú	TypeErrorÚstr)rK   rN   r}   Úedenai_tool_callsr    r!   Ú	tool_argsr~   s           rE   rt   rt   ™   s;  € Ý˜ ,°Ñ3Ô3€JÝ  Ð*>ÀÑCÔCÐØÐà/ð 
ð 
ÐØ× Ò à.×2Ò2°6Ñ:Ô:Ø'×+Ò+¨DÑ1Ô1Ø)×-Ò-¨fÑ5Ô5ðð ñ	
ô 	
ð 	
ð 	
ð  ð 
ð 
ˆ	Ø—M’M &¨"Ñ-Ô-ˆ	ð	'Ýœ
 9Ñ-Ô-ˆIˆIøÝð 	'ð 	'ð 	'Ý˜I™œˆIˆIˆIð	'øøøà× Ò à&Ø ”oØ! &Ô)ðð ñ	
ô 	
ð 	
ð 	
ð Ðs   ÂB,Â,CÃCÚprovider_responsec                 ó  — g }g }|                       di ¦  «        d         }|                      d¦  «        x}rÍ|D ]Ê}	 |                     t          |d         t          j        |d         ¦  «        |d         ¬¦  «        ¦  «         ŒM# t          j        $ rl}|                     t          |                      d¦  «        |                      d¦  «        |                      d¦  «        d|› �¬	¦  «        ¦  «         Y d }~ŒÃd }~ww xY w||fS )
NrK   é   rN   r<   r~   r>   )r<   r=   r>   zReceived JSONDecodeError )r<   r=   r>   Úerror)r   rs   Úcreate_tool_callrA   ÚloadsÚJSONDecodeErrorÚcreate_invalid_tool_call)r„   rN   r}   rK   Úraw_tool_callsÚraw_tool_callÚexcs          rE   Ú(_extract_tool_calls_from_edenai_responser�   ·   sZ  € ð €JØÐà×#Ò# I¨rÑ2Ô2°1Ô5€Gà Ÿš \Ñ2Ô2Ð2€~ð Ø+ð 	ð 	ˆMðØ×!Ò!Ý$Ø*¨6Ô2Ý!œZ¨°kÔ(BÑCÔCØ(¨Ô.ðñ ô ñô ð ð øõ Ô'ð ð ð Ø"×)Ò)Ý,Ø*×.Ò.¨vÑ6Ô6Ø*×.Ò.¨{Ñ;Ô;Ø(×,Ò,¨TÑ2Ô2Ø?¸#Ð?Ð?ð	ñ ô ñô ð ð ð ð ð ð øøøøðøøøð Ð)Ð)Ð)s   ½A	BÂDÂA"C=Ã=Dc                   óT  ‡ — e Zd ZU dZdZeed<   	 dZee         ed<   	 dZ	e
ed<   	 dZee         ed	<   	 d
Zeed<   	 dZee         ed<   	 dZeed<    edd¬¦  «        Zee         ed<    ed¬¦  «        Zededefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Z	 	 d-dee         deee                  dee          de!de"e#         f
d„Z$	 	 d-dee         deee                  dee%         de!de&e#         f
d„Z'dd œd!e(e)eee!f         e*e+         e,e-f                  d"ee)e.ee/d#         ef                  de!de0e1e2f         fˆ fd$„Z3d
d%œd&e)ee*e+         f         d'ede!de0e1e)ee+f         f         fd(„Z4	 	 d-dee         deee                  dee          de!de5f
d)„Z6	 	 d-dee         deee                  dee%         de!de5f
d*„Z7dee         deee                  dee          de!de#f
d+„Z8dee         deee                  dee%         de!de#f
d,„Z9ˆ xZ:S ).Ú
ChatEdenAIa(	  `EdenAI` chat large language models.

    `EdenAI` is a versatile platform that allows you to access various language models
    from different providers such as Google, OpenAI, Cohere, Mistral and more.

    To get started, make sure you have the environment variable ``EDENAI_API_KEY``
    set with your API key, or pass it as a named parameter to the constructor.

    Additionally, `EdenAI` provides the flexibility to choose from a variety of models,
    including the ones like "gpt-4".

    Example:
        .. code-block:: python

            from langchain_community.chat_models import ChatEdenAI
            from langchain_core.messages import HumanMessage

            # Initialize `ChatEdenAI` with the desired configuration
            chat = ChatEdenAI(
                provider="openai",
                model="gpt-4",
                max_tokens=256,
                temperature=0.75)

            # Create a list of messages to interact with the model
            messages = [HumanMessage(content="hello")]

            # Invoke the model with the provided messages
            chat.invoke(messages)

    `EdenAI` goes beyond mere model invocation. It empowers you with advanced features :

    - **Multiple Providers**: access to a diverse range of llms offered by various
     providers giving you the freedom to choose the best-suited model for your use case.

    - **Fallback Mechanism**: Set a fallback mechanism to ensure seamless operations
        even if the primary provider is unavailable, you can easily switches to an
        alternative provider.

    - **Usage Statistics**: Track usage statistics on a per-project
    and per-API key basis.
    This feature allows you to monitor and manage resource consumption effectively.

    - **Monitoring and Observability**: `EdenAI` provides comprehensive monitoring
    and observability tools on the platform.

    Example of setting up a fallback mechanism:
        .. code-block:: python

            # Initialize `ChatEdenAI` with a fallback provider
            chat_with_fallback = ChatEdenAI(
                provider="openai",
                model="gpt-4",
                max_tokens=256,
                temperature=0.75,
                fallback_provider="google")

    you can find more details here : https://docs.edenai.co/reference/text_chat_create
    ÚopenaiÚproviderNÚmodelé   Ú
max_tokensr   ÚtemperatureFÚ	streamingÚfallback_providerszhttps://api.edenai.run/v2Úedenai_api_urlzEdenAI API Token)ÚdescriptionÚedenai_api_keyÚforbid)ÚextraÚvaluesr9   c                 óH   — t          t          |dd¦  «        ¦  «        |d<   |S )z,Validate that api key exists in environment.rœ   ÚEDENAI_API_KEY)r-   r.   )ÚclsrŸ   s     rE   Úvalidate_environmentzChatEdenAI.validate_environment0  s1   € õ $9Ý  Ð)9Ð;KÑLÔLñ$
ô $
ˆÐÑ ð ˆrG   c                  ó   — ddl m}  d| › �S )Nr   ©Ú__version__z
langchain/)Úlangchain_communityr¦   r¥   s    rE   Úget_user_agentzChatEdenAI.get_user_agent8  s"   € à3Ð3Ð3Ð3Ð3Ð3à)˜KÐ)Ð)Ð)rG   c                 ó   — dS )zReturn type of chat model.zedenai-chat© ©Úselfs    rE   Ú	_llm_typezChatEdenAI._llm_type>  s	   € ð ˆ}rG   c                 óF   — | j         r| j                              ¦   «         S dS )Nrk   )rœ   Úget_secret_valuer«   s    rE   Ú_api_keyzChatEdenAI._api_keyC  s'   € àÔð 	:ØÔ&×7Ò7Ñ9Ô9Ð9ØˆrrG   r\   ÚstopÚrun_managerÚkwargsc              +   óÐ  K  — d|v r | j         |f||dœ|¤ŽV — dS | j        › d�}d| j        › �|                      ¦   «         dœ}t	          |¬¦  «        }| j        | j        | j        | j        dœ|¥|¥}d	„ | 	                    ¦   «         D ¦   «         }| j
        �| j        | j
        i|d
<   t          |¬¦  «        }	|	                     ||d¬¦  «        }
|
                     ¦   «          |
                     ¦   «         D ]k}t          j        |                     ¦   «         ¦  «        }|d         }t%          t'          |¬¦  «        ¬¦  «        }|r|                     ||¬¦  «         |V — ŒldS )ú#Call out to EdenAI's chat endpoint.Úavailable_tools©r±   r²   Nú/text/chat/streamúBearer ©ÚAuthorizationz
User-Agent©r\   ©Ú	providersr–   r—   r™   c                 ó   — i | ]
\  }}|®||“ŒS rh   rª   ©rC   ÚkÚvs      rE   ú
<dictcomp>z&ChatEdenAI._stream.<locals>.<dictcomp>e  ó   € ÐEÐEÐE™D˜A˜q°q°}�1�a°}°}°}rG   Úsettings©ÚheadersT)ÚurlÚdataÚstreamrn   ©rH   rJ   )Úchunk)Ú_stream_with_tools_as_generaterš   r°   r¨   r{   r“   r–   r—   r™   Úitemsr”   r7   ÚpostÚraise_for_statusÚ
iter_linesrA   r‰   Údecoder'   r   Úon_llm_new_token)r¬   r\   r±   r²   r³   rÈ   rÇ   Úformatted_dataÚpayloadÚrequestÚresponseÚchunk_responserÌ   ÚtokenÚcg_chunks                  rE   Ú_streamzChatEdenAI._streamI  sÙ  è è € ð  Ð&Ð&Ø5�$Ô5ØðØ#°ðð Ø@Fðð ð ð ð ð ˆFØÔ$Ð7Ð7Ð7ˆà6 t¤}Ð6Ð6Ø×-Ò-Ñ/Ô/ð
ð 
ˆõ 1¸(ÐCÑCÔCˆàœØœ/ØÔ+Ø"&Ô"9ð	#
ð #
ð
 ð#
ð ð#
ˆð FÐE G§M¢M¡O¤OÐEÑEÔEˆàŒ:Ð!Ø#'¤=°$´*Ð"=ˆG�JÑå 7Ð+Ñ+Ô+ˆØ—<’< C¨g¸d�<ÑCÔCˆØ×!Ò!Ñ#Ô#Ð#à&×1Ò1Ñ3Ô3ð 	ð 	ˆNÝ”J˜~×4Ò4Ñ6Ô6Ñ7Ô7ˆEØ˜&”MˆEÝ*µ>È%Ð3PÑ3PÔ3PÐQÑQÔQˆHØð DØ×,Ò,¨U¸(Ð,ÑCÔCÐCØˆNˆNˆNˆNð	ð 	rG   c                ó’  K  — d|v r | j         |f||dœ|¤Žƒ d {V —†W V — d S | j        › d�}d| j        › �|                      ¦   «         dœ}t	          |¬¦  «        }| j        | j        | j        | j        dœ|¥|¥}d„ | 	                    ¦   «         D ¦   «         }| j
        �| j        | j
        i|d	<   t          ¦   «         4 ƒd {V —†}	|	                     |||¬
¦  «        4 ƒd {V —†}
|
                     ¦   «          |
j        2 3 d {V —†}t          j        |                     ¦   «         ¦  «        }|d         }t%          t'          |¬¦  «        ¬¦  «        }|r#|                     |d         |¬¦  «        ƒ d {V —† |W V — Œ~6 	 d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S )Nr¶   r·   r¸   r¹   rº   r¼   r½   c                 ó   — i | ]
\  }}|®||“ŒS rh   rª   rÀ   s      rE   rÃ   z'ChatEdenAI._astream.<locals>.<dictcomp>‘  rÄ   rG   rÅ   ©rA   rÇ   rn   rË   rJ   )rÙ   rÌ   )Ú _astream_with_tools_as_ageneraterš   r°   r¨   r{   r“   r–   r—   r™   rÎ   r”   r   rÏ   rÐ   rH   rA   r‰   rÒ   r'   r   rÓ   )r¬   r\   r±   r²   r³   rÈ   rÇ   rÔ   rÕ   Úsessionr×   rØ   rÌ   rÙ   rÚ   s                  rE   Ú_astreamzChatEdenAI._astreamv  s£  è è € ð  Ð&Ð&Ø=˜Ô=ØðØ#°ðð Ø@Fðð ð ð ð ð ð ð ð ð ð ð ð ˆFØÔ$Ð7Ð7Ð7ˆà6 t¤}Ð6Ð6Ø×-Ò-Ñ/Ô/ð
ð 
ˆõ 1¸(ÐCÑCÔCˆàœØœ/ØÔ+Ø"&Ô"9ð	#
ð #
ð
 ð#
ð ð#
ˆð FÐE G§M¢M¡O¤OÐEÑEÔEˆàŒ:Ð!Ø#'¤=°$´*Ð"=ˆG�JÑå ‘?”?ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	# gØ—|’| C¨g¸w�|ÑGÔGð #ð #ð #ð #ð #ð #ð #È8Ø×)Ò)Ñ+Ô+Ð+Ø,4Ô,<ð 
#ð 
#ð 
#ð 
#ð 
#ð 
#ð 
#˜.Ý œJ ~×'<Ò'<Ñ'>Ô'>Ñ?Ô?�EØ! &œM�EÝ2Ý .°uÐ =Ñ =Ô =ð ñ  ô  �Hð #ð Ø)×:Ò:Ø"'¨¤-°xð ;ñ ô ð ð ð ð ð ð ð ð #�N�N�N�N�Nð -=Ð,<ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#sC   ÃF6Ã$FÄ E>ÄA9FÆ F6Æ
F	ÆF6ÆF	Æ F6Æ6
G ÇG ©Útool_choiceÚtoolsrã   )ÚautoÚnoneÚrequiredÚanyc                óh   •— d„ |D ¦   «         }|dk    rdn|} t          ¦   «         j        d||dœ|¤ŽS )Nc                 ó8   — g | ]}t          |¦  «        d          ‘ŒS )Úfunctionr0   )rC   rl   s     rE   rF   z)ChatEdenAI.bind_tools.<locals>.<listcomp>®  s&   € ÐVÐVÐVÈÕ1°$Ñ7Ô7¸
ÔCÐVÐVÐVrG   rè   rç   )r¶   rã   rª   )ÚsuperÚbind)r¬   rä   rã   r³   Úformatted_toolsÚformatted_tool_choiceÚ	__class__s         €rE   Ú
bind_toolszChatEdenAI.bind_tools¥  s`   ø€ ð WÐVÐPUÐVÑVÔVˆØ.9¸UÒ.BÐ.B 
 
ÈÐØ�u‰wŒwŒ|ð 
Ø+Ð9Nð
ð 
ØRXð
ð 
ð 	
rG   )Úinclude_rawÚschemarò   c                óþ  — |rt          d|› �¦  «        ‚|                      |gd¬¦  «        }t          |t          ¦  «        r"t	          |¦  «        rt          |gd¬¦  «        }n,t          |¦  «        d         d         }t          |d¬¦  «        }|rht          j	        t          d	¦  «        |z  d
„ ¬¦  «        }t          j	        d„ ¬¦  «        }|                     |gd¬¦  «        }	t          |¬¦  «        |	z  S ||z  S )NzReceived unsupported arguments rç   râ   T)rä   Úfirst_tool_onlyrë   r<   )Úkey_namerõ   Úrawc                 ó   — d S rh   rª   ©Ú_s    rE   ri   z3ChatEdenAI.with_structured_output.<locals>.<lambda>Ê  s   € ÐRV€ rG   )ÚparsedÚparsing_errorc                 ó   — d S rh   rª   rù   s    rE   ri   z3ChatEdenAI.with_structured_output.<locals>.<lambda>Ì  s   € Àd€ rG   )rû   rü   )Úexception_key)r÷   )rY   rñ   rM   rR   r2   r%   r1   r$   r+   Úassignr   Úwith_fallbacksr*   )
r¬   ró   rò   r³   ÚllmÚoutput_parserrö   Úparser_assignÚparser_noneÚparser_with_fallbacks
             rE   Úwith_structured_outputz!ChatEdenAI.with_structured_output´  s?  € ð ð 	IÝÐG¸vÐGÐGÑHÔHÐHØ�oŠo˜v˜h°JˆoÑ?Ô?ˆÝ�f�dÑ#Ô#ð 	Õ(=¸fÑ(EÔ(Eð 	Ý.AØ�h°ð/ñ /ô /ˆMˆMõ .¨fÑ5Ô5°jÔAÀ&ÔIˆHÝ4Ø!°4ðñ ô ˆMð ð 
	'Ý/Ô6Ý! %Ñ(Ô(¨=Ñ8ÈÈðñ ô ˆMõ .Ô4¸N¸NÐKÑKÔKˆKØ#0×#?Ò#?Ø�¨_ð $@ñ $ô $Ð õ  3Ð'Ñ'Ô'Ð*>Ñ>Ð>à˜Ñ&Ð&rG   c           	      óÖ  — | j         r9d|v rt          j        d¦  «         n  | j        |f||dœ|¤Ž}t	          |¦  «        S | j        › d�}d| j        › �|                      ¦   «         dœ}t          |¬¦  «        }| j	        | j
        | j        | j        dœ|¥|¥}	d	„ |	                     ¦   «         D ¦   «         }	| j        �| j	        | j        i|	d<   t          |¬¦  «        }
|
                     ||	¬¦  «        }|                     ¦   «          |                     ¦   «         }|| j	                 }| j        r|                     | j        ¦  «        }|r|}|                     d¦  «        dk    r8|                     di ¦  «                             d¦  «        }t)          |¦  «        ‚t+          |¦  «        \  }}t-          t/          t1          |d         pd||¬¦  «        ¬¦  «        g|¬¦  «        S )rµ   r¶   ú8stream: Tool use is not yet supported in streaming mode.r·   ú
/text/chatr¹   rº   r¼   r½   c                 ó   — i | ]
\  }}|®||“ŒS rh   rª   rÀ   s      rE   rÃ   z(ChatEdenAI._generate.<locals>.<dictcomp>÷  rÄ   rG   NrÅ   rÆ   )rÈ   rÉ   ÚstatusÚfailr‡   rK   Úgenerated_textrk   )rH   rN   r}   rJ   ©rL   Ú
llm_output)r˜   ÚwarningsÚwarnrÛ   r   rš   r°   r¨   r{   r“   r–   r—   r™   rÎ   r”   r7   rÏ   rÐ   rA   r   Ú	Exceptionr�   r(   r&   r   )r¬   r\   r±   r²   r³   Ústream_iterrÈ   rÇ   rÔ   rÕ   rÖ   r×   rÉ   r„   Úfallback_responseÚerr_msgrN   r}   s                     rE   Ú	_generatezChatEdenAI._generateÔ  sl  € ð Œ>ð 		9Ø  FÐ*Ð*Ý”ØNñô ð ð ð +˜dœlØðØ#'°[ðð ØDJðð �õ ,¨KÑ8Ô8Ð8àÔ$Ð0Ð0Ð0ˆà6 t¤}Ð6Ð6Ø×-Ò-Ñ/Ô/ð
ð 
ˆõ 1¸(ÐCÑCÔCˆð œØœ/ØÔ+Ø"&Ô"9ð	#
ð #
ð
 ð#
ð ð#
ˆð FÐE G§M¢M¡O¤OÐEÑEÔEˆàŒ:Ð!Ø#'¤=°$´*Ð"=ˆG�JÑå 7Ð+Ñ+Ô+ˆØ—<’< C¨g�<Ñ6Ô6ˆà×!Ò!Ñ#Ô#Ð#Ø�}Š}‰ŒˆØ  ¤Ô/ÐàÔ"ð 	6Ø $§¢¨Ô)@Ñ AÔ AÐØ ð 6Ø$5Ð!à× Ò  Ñ*Ô*¨fÒ4Ð4Ø'×+Ò+¨G°RÑ8Ô8×<Ò<¸YÑGÔGˆGÝ˜GÑ$Ô$Ð$å)QØñ*
ô *
Ñ&ˆ
Ð&õ åÝ%Ø 1Ð2BÔ CÐ IÀrØ#-Ø+=ðñ ô ðñ ô ðð ð
ñ 
ô 
ð 	
rG   c           
   ‹   ó˜  K  — | j         r?d|v rt          j        d¦  «         n& | j        |f||dœ|¤Ž}t	          |¦  «        ƒ d {V —†S | j        › d�}d| j        › �|                      ¦   «         dœ}t          |¬¦  «        }| j	        | j
        | j        | j        dœ|¥|¥}	d	„ |	                     ¦   «         D ¦   «         }	| j        �| j	        | j        i|	d
<   t          ¦   «         4 ƒd {V —†}
|
                     ||	|¬¦  «        4 ƒd {V —†}|                     ¦   «          |                     ¦   «         ƒ d {V —†}|| j	                 }| j        r|                     | j        ¦  «        }|r|}|                     d¦  «        dk    r8|                     di ¦  «                             d¦  «        }t)          |¦  «        ‚t+          t-          t/          |d         ¬¦  «        ¬¦  «        g|¬¦  «        cd d d ¦  «        ƒd {V —† cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   	 d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S )Nr¶   r  r·   r	  r¹   rº   r¼   r½   c                 ó   — i | ]
\  }}|®||“ŒS rh   rª   rÀ   s      rE   rÃ   z)ChatEdenAI._agenerate.<locals>.<dictcomp>>  rÄ   rG   rÅ   rÞ   r  r  r‡   rK   r  rË   rJ   r  )r˜   r  r  rá   r   rš   r°   r¨   r{   r“   r–   r—   r™   rÎ   r”   r   rÏ   rÐ   rA   r   r  r(   r&   r   )r¬   r\   r±   r²   r³   r  rÈ   rÇ   rÔ   rÕ   rà   r×   rÉ   r„   r  r  s                   rE   Ú
_ageneratezChatEdenAI._agenerate  s  è è € ð Œ>ð 		@Ø  FÐ*Ð*Ý”ØNñô ð ð ð ,˜dœmØðØ#'°[ðð ØDJðð �õ 3°;Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?àÔ$Ð0Ð0Ð0ˆà6 t¤}Ð6Ð6Ø×-Ò-Ñ/Ô/ð
ð 
ˆõ 1¸(ÐCÑCÔCˆàœØœ/ØÔ+Ø"&Ô"9ð	#
ð #
ð
 ð#
ð ð#
ˆð FÐE G§M¢M¡O¤OÐEÑEÔEˆàŒ:Ð!Ø#'¤=°$´*Ð"=ˆG�JÑå ‘?”?ð 	ð 	ð 	ð 	ð 	ð 	ð 	 gØ—|’| C¨g¸w�|ÑGÔGð ð ð ð ð ð ð È8Ø×)Ò)Ñ+Ô+Ð+Ø%Ÿ]š]™_œ_Ð,Ð,Ð,Ð,Ð,Ð,�Ø$(¨¬Ô$7Ð!àÔ*ð >Ø(,¯ª°Ô1HÑ(IÔ(IÐ%Ø(ð >Ø,=Ð)à$×(Ò(¨Ñ2Ô2°fÒ<Ð<Ø/×3Ò3°G¸RÑ@Ô@×DÒDÀYÑOÔO�GÝ# GÑ,Ô,Ð,å!å&Ý$-Ø(9Ð:JÔ(Kð%ñ %ô %ðñ ô ð!ð  $ð	ñ 	ô 	ðð ð ð ñ ô ð ð ð ð ð ð ð ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ðð ð ð ð ð ð ð ð ð øøøð ð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s7   Ã+H9Ä
C%HÇ/H9È
H	ÈH9È!H	È"H9È9
IÉIc                 ój   — t          j        d¦  «          | j        |f||dœ|¤Ž}t          |¦  «        S ©Nr  r·   )r  r  r  rQ   ©r¬   r\   r±   r²   r³   r^   s         rE   rÍ   z)ChatEdenAI._stream_with_tools_as_generate]  sD   € õ 	ŒÐPÑQÔQÐQØ�” ÐW¨tÀÐWÐWÐPVÐWÐWˆÝ)¨&Ñ1Ô1Ð1rG   c              ‹   óz   K  — t          j        d¦  «          | j        |f||dœ|¤Žƒ d {V —†}t          |¦  «        S r  )r  r  r  rQ   r  s         rE   rß   z+ChatEdenAI._astream_with_tools_as_agenerateh  st   è è € õ 	ŒÐPÑQÔQÐQØ&�t”Øð
Ø¨[ð
ð 
Ø<Bð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ˆõ *¨&Ñ1Ô1Ð1rG   )NN);Ú__name__Ú
__module__Ú__qualname__Ú__doc__r“   r�   Ú__annotations__r”   r   r–   Úintr—   Úfloatr˜   Úboolr™   rš   r5   rœ   r6   r4   Úmodel_configr/   r   r£   Ústaticmethodr¨   Úpropertyr­   r°   r	   r   r   r   r   r'   rÛ   r   r   rá   r   r   r   r3   r   r,   Údictr
   r)   r   r   rñ   r  r(   r  r  rÍ   rß   Ú__classcell__)rð   s   @rE   r‘   r‘   Ö   s  ø€ € € € € € ð:ð :ðx €HˆcÐÐÑØ7à€Eˆ8�CŒ=ÐÐÑðð
 €J�ÐÐÑØAà#$€K�˜%”Ð$Ð$Ñ$ØQà€IˆtÐÐÑØ(à(,Ð˜ œÐ,Ð,Ñ,ØSà5€N�CÐ5Ð5Ñ5à*/¨%°ÐBTÐ*UÑ*UÔ*U€N�H˜YÔ'ÐUÐUÑUà�:Øðñ ô €Lð ð¨$ð °4ð ð ð ñ „Xðð ð*˜Cð *ð *ð *ñ „\ð*ð
 ð˜3ð ð ð ñ „Xðð ð˜#ð ð ð ñ „Xðð %)Ø:>ð	+ð +à�{Ô#ð+ð �t˜C”yÔ!ð+ð Ð6Ô7ð	+ð
 ð+ð 
Ð%Ô	&ð+ð +ð +ð +ð` %)Ø?Cð	-#ð -#à�{Ô#ð-#ð �t˜C”yÔ!ð-#ð Ð;Ô<ð	-#ð
 ð-#ð 
Ð*Ô	+ð-#ð -#ð -#ð -#ðj ð
ð 
ð 
à˜˜d 3¨ 8œn¨d°9¬o¸xÈÐQÔRÔSð
ð Ø�$˜˜WÐ%FÔGÈÐMÔNô
ð	
ð ð
ð 
Ð$ iÐ/Ô	0ð
ð 
ð 
ð 
ð 
ð 
ð& "ð	'ð 'ð 'à�d˜D œOÐ+Ô,ð'ð ð	'ð
 ð'ð 
Ð$ e¨D°)¨OÔ&<Ð<Ô	=ð'ð 'ð 'ð 'ðF %)Ø:>ð	G
ð G
à�{Ô#ðG
ð �t˜C”yÔ!ðG
ð Ð6Ô7ð	G
ð
 ðG
ð 
ðG
ð G
ð G
ð G
ðX %)Ø?Cð	>ð >à�{Ô#ð>ð �t˜C”yÔ!ð>ð Ð;Ô<ð	>ð
 ð>ð 
ð>ð >ð >ð >ð@	2à�{Ô#ð	2ð �t˜C”yÔ!ð	2ð Ð6Ô7ð		2ð
 ð	2ð 
ð	2ð 	2ð 	2ð 	2ð2à�{Ô#ð2ð �t˜C”yÔ!ð2ð Ð;Ô<ð	2ð
 ð2ð 
ð2ð 2ð 2ð 2ð 2ð 2ð 2ð 2rG   r‘   )SrA   r  Úoperatorr   Útypingr   r   r   r   r   r	   r
   r   r   r   r   r   r   Úaiohttpr   Úlangchain_core.callbacksr   r   Úlangchain_core.language_modelsr   Ú*langchain_core.language_models.chat_modelsr   r   r   Úlangchain_core.messagesr   r   r   r   r   r   r   r   Úlangchain_core.messages.toolr    r‹   r!   rˆ   r"   r@   Ú"langchain_core.output_parsers.baser#   Ú*langchain_core.output_parsers.openai_toolsr$   r%   Úlangchain_core.outputsr&   r'   r(   Úlangchain_core.runnablesr)   r*   r+   Úlangchain_core.toolsr,   Úlangchain_core.utilsr-   r.   r/   Ú%langchain_core.utils.function_callingr1   Úlangchain_core.utils.pydanticr2   Úpydanticr3   r4   r5   r6   Ú&langchain_community.utilities.requestsr7   rQ   r�   r[   re   r{   rt   r�   r‘   rª   rG   rE   ú<module>r=     sZ  ðØ €€€Ø €€€Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð  "Ð !Ð !Ð !Ð !Ð !ðð ð ð ð ð ð ð ð >Ð =Ð =Ð =Ð =Ð =ðð ð ð ð ð ð ð ð ð ð
	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð WÐ VÐ VÐ VÐ VÐ VØ FÐ FÐ FÐ FÐ FÐ FØ RÐ RÐ RÐ RÐ RÐ RØ ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð SÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ )Ð )Ð )Ð )Ð )Ð )Ø VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ HÐ HÐ HÐ HÐ HÐ HØ ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð ð ð <Ð ;Ð ;Ð ;Ð ;Ð ;ðJ°ð JÐ@Sð Jð Jð Jð Jð*2˜ð 2 ð 2ð 2ð 2ð 2ð(Ø�;Ôð(à
ˆ4��S˜#�X”Ô  kÔ!2Ð2Ô3ð(ð (ð (ð (ð* d¨;Ô&7ð ¸DÀÀcÀ¼Nð ð ð ð ð@°[ð ÀTð ð ð ð ð<*Ø˜C ˜H”~ð*à
ˆ4�Œ>˜4 Ô0Ð0Ô1ð*ð *ð *ð *ð>]2ð ]2ð ]2ð ]2ð ]2�ñ ]2ô ]2ð ]2ð ]2ð ]2rG   