Ë
    µŒj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 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mZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d dl&m'Z'm(Z( d d	l)m*Z*m+Z+m,Z, d d
l-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z;m<Z< d dl=m>Z>m?Z?  ej€                  eA«      ZBdZCdedeDfd„ZEdeeFef   defd„ZGdeeFef   dee   defd„ZHededeFdeFdedef
d„«       ZI G d„ de«      ZJy)é    N)Úasynccontextmanager)ÚAnyÚAsyncIteratorÚCallableÚDictÚIteratorÚListÚMappingÚOptionalÚSequenceÚTypeÚUnion)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)ÚLanguageModelInput)ÚBaseChatModelÚagenerate_from_streamÚgenerate_from_stream)Ú	AIMessageÚAIMessageChunkÚBaseMessageÚBaseMessageChunkÚChatMessageÚChatMessageChunkÚHumanMessageÚHumanMessageChunkÚSystemMessageÚSystemMessageChunkÚToolMessage)Úmake_invalid_tool_callÚparse_tool_call)ÚChatGenerationÚChatGenerationChunkÚ
ChatResult)ÚRunnable)ÚBaseTool)Úconvert_to_secret_strÚget_from_dict_or_envÚget_pydantic_field_names)Úconvert_to_openai_tool)Ú	BaseModelÚ
ConfigDictÚFieldÚ	SecretStrÚmodel_validator)Ú)_lc_invalid_tool_call_to_openai_tool_callÚ!_lc_tool_call_to_openai_tool_callz/https://api.baichuan-ai.com/v1/chat/completionsÚmessageÚreturnc                 ó²  — | j                   }t        | t        «      r| j                  |dœ}|S t        | t        «      rd|dœ}|S t        | t
        «      r‹d|dœ}d| j                  v r| j                  d   |d<   |S | j                  s| j                  rJ| j                  D �cg c]  }t        |«      ‘Œ c}| j                  D �cg c]  }t        |«      ‘Œ c}z   |d<   |S t        | t        «      r:d| j                  || j                  xs | j                  j                  d«      dœ}|S t        | t        «      rd|dœ}|S t!        d	| › �«      ‚c c}w c c}w )
N)ÚroleÚcontentÚuserÚ	assistantÚ
tool_callsÚtoolÚname)r5   Útool_call_idr6   r;   ÚsystemzGot unknown type )r6   Ú
isinstancer   r5   r   r   Úadditional_kwargsr9   Úinvalid_tool_callsr1   r0   r   r<   r;   Úgetr   Ú	TypeError)r2   r6   Úmessage_dictÚtcs       úr/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/chat_models/baichuan.pyÚ_convert_message_to_dictrF   I   s�  € à�o‰o€GÜ�'œ;Ô'Ø '§¡¸ÑAˆð8 Ðô7 
�Gœ\Ô	*Ø &°7Ñ;ˆð4 Ðô3 
�GœYÔ	'Ø +¸Ñ@ˆØ˜7×4Ñ4Ñ4Ø)0×)BÑ)BÀ<Ñ)PˆL˜Ñ&ð, Ðð) ×Ò 7×#=Ò#=à@G×@RÒ@Ró*Ù@R¸"Ô1°"Õ5Ð@Rñ*ð "×4Ò4óá4�Bô :¸"Õ=Ø4ññ*ˆL˜Ñ&ð& Ðô 
�Gœ[Ô	)àØ#×0Ñ0ØØ—L‘LÒI G×$=Ñ$=×$AÑ$AÀ&Ó$Iñ	
ˆð Ðô 
�Gœ]Ô	+Ø (°WÑ=ˆð Ðô Ð+¨G¨9Ð5Ó6Ð6ùò#*ùòs   Â"EÃEÚ_dictc           
      ó  — | d   }| j                  dd«      }|dk(  rt        |¬«      S |dk(  rQg }g }i }| j                  d«      x}r)||d<   |D ]  }	 |j                  t        |d¬	«      «       Œ! t        ||||¬
«      S |dk(  r+i }d| v r| d   |d<   t        || j                  d«      |¬«      S |dk(  rt        |¬«      S t        ||¬«      S # t        $ r.}|j                  t        |t        |«      «      «       Y d }~Œ±d }~ww xY w)Nr5   r6   Ú r7   ©r6   r8   r9   T)Ú	return_id)r6   r?   r9   r@   r:   r;   r<   )r6   r<   r?   r=   ©r6   r5   )rA   r   Úappendr!   Ú	Exceptionr    Ústrr   r   r   r   )	rG   r5   r6   r9   r@   r?   Úraw_tool_callsÚraw_tool_callÚes	            rE   Ú_convert_dict_to_messagerS   l   s=  € Ø�‰=€DØ�i‰i˜	 2Ó&€GØˆv‚~Ü GÔ,Ð,Ø	�Ò	Øˆ
ØÐØÐà"ŸY™Y |Ó4Ð4ˆ>Ð4Ø.<Ð˜lÑ+Û!/�ðØ×%Ñ%¤o°mÈtÔ&TÕUð "0ô ØØ/Ø!Ø1ô	
ð 	
ð 
�ŠØÐØ�U‰?Ø(-¨f©Ð˜fÑ%ÜØØŸ™ >Ó2Ø/ô
ð 	
ð
 
�Ò	Ü WÔ-Ð-ä 7°Ô6Ð6øô/ !ò Ø&×-Ñ-Ü.¨}¼cÀ!»fÓE÷ñ ûðús   ÁCÃ	DÃ$C?Ã?DÚdefault_classc                 ó,  — | j                  d«      }| j                  d«      xs d}|dk(  s	|t        k(  rt        |¬«      S |dk(  s	|t        k(  rt        |¬«      S |dk(  s	|t        k(  rt        |¬«      S |s	|t        k(  rt	        ||¬«      S  ||¬«      S )	Nr5   r6   rI   r7   rJ   r8   r=   rL   )rA   r   r   r   r   )rG   rT   r5   r6   s       rE   Ú_convert_delta_to_message_chunkrV   •   s—   € ð �9‰9�VÓ€DØ�i‰i˜	Ó"Ò( b€Gàˆv‚~˜Ô*;Ò;Ü ¨Ô1Ð1Ø	�Ò	 ´Ò ?Ü gÔ.Ð.Ø	�Ò	˜]Ô.@Ò@Ü!¨'Ô2Ð2Ù	�Ô"2Ò2Ü¨°dÔ;Ð;á WÔ-Ð-ó    ÚclientÚmethodÚurlÚkwargsc                óº   K  — ddl m}  | j                  ||fi |¤Ž4 ƒd{  –—† } ||«      ­–— ddd«      ƒd{  –—†  y7 Œ 7 Œ# 1 ƒd{  –—†7  sw Y   yxY w­w)a  Async context manager for connecting to an SSE stream.

    Args:
        client: The httpx client.
        method: The HTTP method.
        url: The URL to connect to.
        kwargs: Additional keyword arguments to pass to the client.

    Yields:
        An EventSource object.
    r   )ÚEventSourceN)Ú	httpx_sser]   Ústream)rX   rY   rZ   r[   r]   Úresponses         rE   Úaconnect_httpx_ssera   §   sI   è ø€ õ &àˆv�}‰}˜V SÑ3¨F×3Ò3°xÙ˜(Ó#Ó#÷ 4×3Ñ3øÐ3ø×3×3Ñ3üsA   ‚A¡A¢A¥A±A¼A½AÁAÁAÁAÁAÁAc                   óø  ‡ — e Zd ZU dZedeeef   fd„«       Zedefd„«       Z	 e
ed¬«      Zeed<   	  e
d¬	«      Zeed
<   	 dZee   ed<   	 dZeed<   	 dZee   ed<   	  e
dd¬«      Zeed<   	 dZeed<   	  e
d¬«      Zee   ed<   	 dZeed<   	 dZeed<   	 dZeed<   	  e
e¬«      Zeeef   ed<   	  ed¬ «      Z  e!d!¬"«      e"d#eeef   defd$„«       «       Z# e!d!¬"«      e"d#edefd%„«       «       Z$edeeef   fd&„«       Z%	 	 d8d'e&e'   d(ee&e      d)ee(   d*ede)f
d+„Z*	 	 d8d'e&e'   d(ee&e      d)ee(   d*ede+e,   f
d,„Z-	 	 	 d9d'e&e'   d(ee&e      d)ee.   d-ee   d*ede)fd.„Z/	 	 d8d'e&e'   d(ee&e      d)ee.   d*ede0e,   f
d/„Z1d'e&e'   d*ede2jf                  fd0„Z4d'e&e'   d*edeeef   fd1„Z5d*edeeef   fd2„Z6d3e7eef   de)fd4„Z8edefd5„«       Z9d6e:e;eeef   e<e=   e>e?f      d*ede@eAe'f   fˆ fd7„ZBˆ xZCS ):ÚChatBaichuanu£  Baichuan chat model integration.

    Setup:
        To use, you should have the environment variable``BAICHUAN_API_KEY`` set with
    your API KEY.

        .. code-block:: bash

            export BAICHUAN_API_KEY="your-api-key"

    Key init args â€” completion params:
        model: Optional[str]
            Name of Baichuan model to use.
        max_tokens: Optional[int]
            Max number of tokens to generate.
        streaming: Optional[bool]
            Whether to stream the results or not.
        temperature: Optional[float]
            Sampling temperature.
        top_p: Optional[float]
            What probability mass to use.
        top_k: Optional[int]
            What search sampling control to use.

    Key init args â€” client params:
        api_key: Optional[str]
            Baichuan API key. If not passed in will be read from env var BAICHUAN_API_KEY.
        base_url: Optional[str]
            Base URL for API requests.

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

    Instantiate:
        .. code-block:: python

            from langchain_community.chat_models import ChatBaichuan

            chat = ChatBaichuan(
                api_key=api_key,
                model='Baichuan4',
                # temperature=...,
                # other params...
            )

    Invoke:
        .. code-block:: python

            messages = [
                ("system", "ä½ æ˜¯ä¸€å��ä¸“ä¸šçš„ç¿»è¯‘å®¶ï¼Œå�¯ä»¥å°†ç”¨æˆ·çš„ä¸­æ–‡ç¿»è¯‘ä¸ºè‹±æ–‡ã€‚"),
                ("human", "æˆ‘å–œæ¬¢ç¼–ç¨‹ã€‚"),
            ]
            chat.invoke(messages)

        .. code-block:: python

            AIMessage(
                content='I enjoy programming.',
                response_metadata={
                    'token_usage': {
                        'prompt_tokens': 93,
                        'completion_tokens': 5,
                        'total_tokens': 98
                    },
                    'model': 'Baichuan4'
                },
                id='run-944ff552-6a93-44cf-a861-4e4d849746f9-0'
            )

    Stream:
        .. code-block:: python

            for chunk in chat.stream(messages):
                print(chunk)

        .. code-block:: python

            content='I' id='run-f99fcd6f-dd31-46d5-be8f-0b6a22bf77d8'
            content=' enjoy programming.' id='run-f99fcd6f-dd31-46d5-be8f-0b6a22bf77d8

        .. code-block:: python

            stream = chat.stream(messages)
            full = next(stream)
            for chunk in stream:
                full += chunk
            full

        .. code-block:: python

            AIMessageChunk(
                content='I like programming.',
                id='run-74689970-dc31-461d-b729-3b6aa93508d2'
            )

    Async:
        .. code-block:: python

            await chat.ainvoke(messages)

            # stream
            # async for chunk in chat.astream(messages):
            #     print(chunk)

            # batch
            # await chat.abatch([messages])

        .. code-block:: python

            AIMessage(
                content='I enjoy programming.',
                response_metadata={
                    'token_usage': {
                        'prompt_tokens': 93,
                        'completion_tokens': 5,
                        'total_tokens': 98
                    },
                    'model': 'Baichuan4'
                },
                id='run-952509ed-9154-4ff9-b187-e616d7ddfbba-0'
            )
    Tool calling:

        .. code-block:: python
            class get_current_weather(BaseModel):
                '''Get current weather.'''

                location: str = Field('City or province, such as Shanghai')


            llm_with_tools = ChatBaichuan(model='Baichuan3-Turbo').bind_tools([get_current_weather])
            llm_with_tools.invoke('How is the weather today?')

        .. code-block:: python

            [{'name': 'get_current_weather',
            'args': {'location': 'New York'},
            'id': '3951017OF8doB0A',
            'type': 'tool_call'}]

    Response metadata
        .. code-block:: python

            ai_msg = chat.invoke(messages)
            ai_msg.response_metadata

        .. code-block:: python

            {
                'token_usage': {
                    'prompt_tokens': 93,
                    'completion_tokens': 5,
                    'total_tokens': 98
                },
                'model': 'Baichuan4'
            }

    r3   c                 ó
   — ddiS )NÚbaichuan_api_keyÚBAICHUAN_API_KEY© ©Úselfs    rE   Ú
lc_secretszChatBaichuan.lc_secrets[  s   € ð Ð 2ð
ð 	
rW   c                  ó   — y)NTrg   rh   s    rE   Úlc_serializablezChatBaichuan.lc_serializablea  s   € àrW   Úbase_url)ÚdefaultÚaliasÚbaichuan_api_baseÚapi_key)ro   re   NÚbaichuan_secret_keyFÚ	streamingÚ
max_tokensé<   ÚtimeoutÚrequest_timeoutzBaichuan2-Turbo-192KÚmodelç333333Ó?)rn   Útemperatureé   Útop_kç333333ë?Útop_pÚwith_search_enhance)Údefault_factoryÚmodel_kwargsT)Úpopulate_by_nameÚbefore)ÚmodeÚvaluesc           
      ó`  — t        | «      }|j                  di «      }t        |«      D ]M  }||v rt        d|› d�«      ‚||vsŒt        j                  d|› d|› d|› d�«       |j                  |«      ||<   ŒO |j                  |j                  «       «      }|rt        d|› d	�«      ‚||d<   |S )
z>Build extra kwargs from additional params that were passed in.r�   zFound z supplied twice.z	WARNING! z/ is not default parameter.
                    zJ was transferred to model_kwargs.
                    Please confirm that z is what you intended.zParameters za should be specified explicitly. Instead they were passed in as part of `model_kwargs` parameter.)	r)   rA   ÚlistÚ
ValueErrorÚloggerÚwarningÚpopÚintersectionÚkeys)Úclsr…   Úall_required_field_namesÚextraÚ
field_nameÚinvalid_model_kwargss         rE   Úbuild_extrazChatBaichuan.build_extra„  sç   € ô $<¸CÓ#@Ð Ø—
‘
˜>¨2Ó.ˆÜ˜vž,ˆJØ˜UÑ"Ü  6¨*¨Ð5EÐ!FÓGÐGØÐ!9Ò9Ü—‘Ø! * ð .Ø�Lð !)Ø)3¨Ð4JðNôð
 %+§J¡J¨zÓ$:��jÒ!ð 'ð  8×DÑDÀUÇZÁZÃ\ÓRÐÙÜØÐ2Ð3ð 4Sð Tóð ð
 "'ˆˆ~ÑØˆrW   c                 óf   — t        |ddt        «      |d<   t        t        |ddgd«      «      |d<   |S )Nrp   ÚBAICHUAN_API_BASEre   rq   rf   )r(   ÚDEFAULT_API_BASEr'   )rŽ   r…   s     rE   Úvalidate_environmentz!ChatBaichuan.validate_environmentŸ  sO   € ô ';ØØØÜó	'
ˆÐ"Ñ#ô &;Ü ØØ# YÐ/Ø"óó&
ˆÐ!Ñ"ð ˆrW   c                 ó¬   — | j                   | j                  | j                  | j                  | j                  | j
                  dœ}i |¥| j                  ¥S )z4Get the default parameters for calling Baichuan API.)rx   rz   r~   r|   r_   rt   )rx   rz   r~   r|   rs   rt   r�   )ri   Únormal_paramss     rE   Ú_default_paramszChatBaichuan._default_params±  sO   € ð —Z‘ZØ×+Ñ+Ø—Z‘ZØ—Z‘ZØ—n‘nØŸ/™/ñ
ˆð 6�-Ð5 4×#4Ñ#4Ð5Ð5rW   ÚmessagesÚstopÚrun_managerr[   c                 óþ   — | j                   r! | j                  d|||dœ|¤Ž}t        |«      S  | j                  |fi |¤Ž}|j                  dk7  rt        d|› �«      ‚|j                  «       }| j                  |«      S )N)r›   rœ   r�   éÈ   ú"Error from Baichuan api response: rg   )rs   Ú_streamr   Ú_chatÚstatus_coderˆ   ÚjsonÚ_create_chat_result)ri   r›   rœ   r�   r[   Ústream_iterÚresr`   s           rE   Ú	_generatezChatBaichuan._generate¿  sŒ   € ð �>Š>Ø&˜$Ÿ,™,ð Ø!¨¸+ñØIOñˆKô (¨Ó4Ð4àˆd�j‰j˜Ñ, VÑ,ˆØ�?‰?˜cÒ!ÜÐAÀ#ÀÐGÓHÐHØ—8‘8“:ˆØ×'Ñ'¨Ó1Ð1rW   c              +   ó\  K  —  | j                   |fddi|¤Ž}|j                  dk7  rt        d|› �«      ‚t        }|j	                  «       D ]Ý  }|j                  d«      j                  d«      }|j                  dd«      }t        |«      dkD  r|d   nd }|€ŒM|d	k(  r y t        j                  |«      }	|	j                  d
«      D ]a  }
t        |
j                  d«      |«      }|j                  }t        |¬«      }|r&|j                  t!        |j"                  «      |¬«       |–— Œc Œß y ­w)Nr_   TrŸ   r    zutf-8z
zdata: é   z[DONE]ÚchoicesÚdelta©r2   ©Úchunk)r¢   r£   rˆ   r   Ú
iter_linesÚdecodeÚstripÚsplitÚlenr¤   ÚloadsrA   rV   Ú	__class__r#   Úon_llm_new_tokenrO   r6   )ri   r›   rœ   r�   r[   r§   Údefault_chunk_classr¯   Úpartsr`   ÚmÚcg_chunks               rE   r¡   zChatBaichuan._streamÒ  s  è ø€ ð ˆd�j‰j˜Ñ9¨$Ð9°&Ñ9ˆØ�?‰?˜cÒ!ÜÐAÀ#ÀÐGÓHÐHÜ6DÐØ—^‘^Ö%ˆEØ—L‘L Ó)×/Ñ/°Ó7ˆEØ—K‘K ¨!Ó,ˆEÜ # E£
¨Q¢�E˜!’H°DˆEØˆ}ØØ˜Ò ÙÜ—z‘z %Ó(ˆHØ—\‘\ )Ö,�Ü7Ø—E‘E˜'“NÐ$7ó�ð ',§o¡oÐ#Ü.°uÔ=�ÙØ×0Ñ0´°U·]±]Ó1CÈ8Ð0ÔTØ“ñ -ñ &ùs   ‚D*D,r_   c              ‹   ó   K  — |�|n| j                   }|r) | j                  |f||dœ|¤Ž}t        |«      ƒ d {  –—† S  | j                  di |¤Ž} | j                  |fi |¤Ž}	dd l}
|
j                  || j                  ¬«      4 ƒd {  –—† }|j                  | j                  |	¬«      ƒ d {  –—† }|j                  «        d d d «      ƒd {  –—†  | j                  j                  «       «      S 7 Œ·7 Œj7 ŒG7 Œ)# 1 ƒd {  –—†7  sw Y   Œ9xY w­w)N)rœ   r�   r   ©Úheadersrv   ©r¤   rg   )rs   Ú_astreamr   Ú_create_headers_parametersÚ_create_payload_parametersÚhttpxÚAsyncClientrw   Úpostrp   Úraise_for_statusr¥   r¤   )ri   r›   rœ   r�   r_   r[   Úshould_streamr¦   r¾   ÚpayloadrÃ   rX   r`   s                rE   Ú
_ageneratezChatBaichuan._agenerateð  s  è ø€ ð #)Ð"4™¸$¿.¹.ˆÙØ'˜$Ÿ-™-ØðØ#°ñØ@FñˆKô /¨{Ó;×;Ð;à1�$×1Ñ1Ñ;°FÑ;ˆØ1�$×1Ñ1°(ÑE¸fÑEˆãà×$Ñ$Ø T×%9Ñ%9ð %÷ 
ô 
àØ#Ÿ[™[¨×)?Ñ)?Àg˜[ÓN×NˆHØ×%Ñ%Ô'÷	
÷ 
ð
 ×'Ñ'¨¯©«Ó8Ð8ð <øð
øð Oøð
ø÷ 
÷ 
ñ 
üsj   ‚7D¹C1ºADÂC3Â	DÂ!C9Â-C5Â.C9ÃDÃC7Ã$DÃ3DÃ5C9Ã7DÃ9DÃ?DÄ DÄDc                ó  K  —  | j                   di |¤Ž} | j                  |fddi|¤Ž}dd l}|j                  || j                  ¬«      4 ƒd {  –—† }t        |d| j                  |¬«      4 ƒd {  –—† }	|	j                  «       2 3 d {  –—† }
t        j                  |
j                  «      }t        |d   «      dk(  rŒ:|d   d   }t        |d   t        «      }|j                  d	d «      }|�d	|ind }t        ||¬
«      }|r%|j!                  |j"                  |¬«      ƒ d {  –—†  |­–— |€Œ« d d d «      ƒd {  –—†  d d d «      ƒd {  –—†  y 7 �Œ7 Œä7 ŒÍ7 Œ56 Œ,7 Œ # 1 ƒd {  –—†7  sw Y   Œ0xY w7 Œ'# 1 ƒd {  –—†7  sw Y   y xY w­w)Nr_   Tr   r½   ÚPOSTr¿   r«   r¬   Úfinish_reason)r2   Úgeneration_infor®   rg   )rÁ   rÂ   rÃ   rÄ   rw   ra   rp   Ú	aiter_sser¤   rµ   Údatar´   rV   r   rA   r#   r·   Útext)ri   r›   rœ   r�   r[   r¾   rÈ   rÃ   rX   Úevent_sourceÚsser¯   ÚchoicerÌ   rÍ   s                  rE   rÀ   zChatBaichuan._astream  s¨  è ø€ ð 2�$×1Ñ1Ñ;°FÑ;ˆØ1�$×1Ñ1°(ÑRÀ4ÐRÈ6ÑRˆÛà×$Ñ$Ø T×%9Ñ%9ð %÷ 
ô 
àÜ)Ø˜ × 6Ñ 6¸W÷õ àØ!-×!7Ñ!7Ô!9÷ ˜#Ü ŸJ™J s§x¡xÓ0�EÜ˜5 Ñ+Ó,°Ò1Ø Ø" 9Ñ-¨aÑ0�FÜ;Ø˜w™¬ó�Eð %+§J¡J¨ÀÓ$E�Mð )Ð4ð )¨-Ñ8à!ð $ô
 0Ø %°ô�Eñ #Ø)×:Ñ:¸5¿:¹:ÈUÐ:ÓS×SÐSØ“KØ$Ñ0Ø÷3÷ ÷
÷ 
ñ 
ùðøðøð& Tøð' ":øðø÷ ÷ ñ úð
ø÷ 
÷ 
ñ 
üsÍ   ‚AFÁEÁFÁE7Á1EÁ2E7Á5E ÂEÂ
E
ÂEÂBE Ä$E
Ä%E Ä1E Ä2E7Ä=EÄ>E7ÅFÅE5ÅFÅE7ÅEÅE ÅE ÅE7Å E2	Å&E)Å'E2	Å.E7Å5FÅ7F	Å=F Å>F	ÆFc                 óÄ   —  | j                   |fi |¤Ž}| j                  } | j                  di |¤Ž}t        j                  || j
                  ||| j                  ¬«      }|S )N)rZ   rv   r¾   r¤   r_   rg   )rÂ   rp   rÁ   ÚrequestsrÅ   rw   rs   )ri   r›   r[   rÈ   rZ   r¾   r§   s          rE   r¢   zChatBaichuan._chat4  sg   € Ø1�$×1Ñ1°(ÑE¸fÑEˆØ×$Ñ$ˆØ1�$×1Ñ1Ñ;°FÑ;ˆä�m‰mØØ×(Ñ(ØØØ—>‘>ô
ˆð ˆ
rW   c           	      ón  — i | j                   ¥|¥}|j                  dd«      }|j                  dd«      }|j                  dd«      }|j                  d«      }|j                  dd	«      }|j                  d
d	«      }	|j                  dg «      }
||D �cg c]  }t        |«      ‘Œ c}|||||	|
dœ}|S c c}w )Nrz   ry   r|   r{   r~   r}   rx   r   Fr_   Útools)rx   r›   r|   r~   rz   r   r_   r×   )rš   r‹   rF   )ri   r›   r[   Ú
parametersrz   r|   r~   rx   r   r_   r×   rº   rÈ   s                rE   rÂ   z'ChatBaichuan._create_payload_parametersB  sÌ   € ð 8˜×,Ñ,Ð7°Ð7ˆ
Ø —n‘n ]°CÓ8ˆØ—‘˜w¨Ó*ˆØ—‘˜w¨Ó-ˆØ—‘˜wÓ'ˆØ(Ÿn™nÐ-BÀEÓJÐØ—‘ ¨%Ó0ˆØ—‘˜w¨Ó+ˆð Ù>FÓG¹h¸Ô1°!Õ4¸hÑGØØØ&Ø#6ØØñ	
ˆð ˆùò Hs   ÂB2c                 ó®   — i | j                   ¥|¥}|j                  di «      }d}| j                  r| j                  j                  «       }dd|› �dœ|¥}|S )Nr¾   rI   zapplication/jsonzBearer )zContent-TypeÚAuthorization)rš   r‹   re   Úget_secret_value)ri   r[   rØ   Údefault_headersrq   r¾   s         rE   rÁ   z'ChatBaichuan._create_headers_parameters[  sp   € Ø7˜×,Ñ,Ð7°Ð7ˆ
Ø$Ÿ.™.¨°BÓ7ˆØˆØ× Ò Ø×+Ñ+×<Ñ<Ó>ˆGð /Ø& w iÐ0ñ
ð ð
ˆð
 ˆrW   r`   c                 ó²   — g }|d   D ]-  }t        |d   «      }t        |¬«      }|j                  |«       Œ/ |d   }|| j                  dœ}t	        ||¬«      S )Nr«   r2   r­   Úusage)Útoken_usagerx   )ÚgenerationsÚ
llm_output)rS   r"   rM   rx   r$   )ri   r`   rà   Úcr2   Úgenrß   rá   s           rE   r¥   z ChatBaichuan._create_chat_resulti  sc   € ØˆØ˜)Ô$ˆAÜ.¨q°©|Ó<ˆGÜ ¨Ô1ˆCØ×Ñ˜sÕ#ð %ð
 ˜wÑ'ˆØ%0¸4¿:¹:ÑFˆ
Ü k¸jÔIÐIrW   c                  ó   — y)Nzbaichuan-chatrg   rh   s    rE   Ú	_llm_typezChatBaichuan._llm_typet  s   € àrW   r×   c                 ó`   •— |D �cg c]  }t        |«      ‘Œ }}t        ‰| �  dd|i|¤ŽS c c}w )aÿ  Bind tool-like objects to this chat model.

        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.
        r×   rg   )r*   ÚsuperÚbind)ri   r×   r[   r:   Úformatted_toolsr¶   s        €rE   Ú
bind_toolszChatBaichuan.bind_toolsx  s>   ø€ ñ" EJÓJÁE¸DÔ1°$Õ7ÀEˆÐJÜ‰w‰|Ñ< /Ð<°VÑ<Ð<ùò Ks   †+)NN)NNN)DÚ__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   rO   rj   Úboolrl   r-   r–   rp   Ú__annotations__re   r.   rr   r   rs   rt   Úintrw   rx   rz   Úfloatr|   r~   r   Údictr�   r   r,   Úmodel_configr/   Úclassmethodr“   r—   rš   r	   r   r   r$   r¨   r   r#   r¡   r   rÉ   r   rÀ   rÕ   ÚResponser¢   rÂ   rÁ   r
   r¥   rå   r   r   r   r+   r   r&   r%   r   rê   Ú__classcell__)r¶   s   @rE   rc   rc   ¼   s  ø… ñ\ð| ð
˜D  c ™Nò 
ó ð
ð
 ð ò ó ðñ #Ð+;À:ÔNÐ�sÓNØ#Ù"'¨iÔ"8Ð�iÓ8ØØ/3Ð˜ )Ñ,Ó3ØUØ€IˆtÓØ/Ø $€J�˜‘Ó$Ø/Ù ¨°9Ô=€O�SÓ=Ø0Ø'€Eˆ3Ó'ð/á#(°Ô#5€K�˜%‘Ó5Ø+Ø€Eˆ3ƒNØ.Ø€Eˆ5ÓØ'Ø %Ð˜Ó%ð8á#(¸Ô#>€L�$�s˜C�x‘.Ó>ØQáØô€Lñ ˜(Ô#Øð  c¨3 h¡ð °Cò ó ó $ðñ2 ˜(Ô#Øð¨$ð °3ò ó ó $ðð  ð6  c¨3 h¡ò 6ó ð6ð  %)Ø:>ñ	2à�{Ñ#ð2ð �t˜C‘yÑ!ð2ð Ð6Ñ7ð	2ð
 ð2ð 
ó2ð, %)Ø:>ñ	à�{Ñ#ðð �t˜C‘yÑ!ðð Ð6Ñ7ð	ð
 ðð 
Ð%Ñ	&óðB %)Ø?CØ!%ñ9à�{Ñ#ð9ð �t˜C‘yÑ!ð9ð Ð;Ñ<ð	9ð
 ˜‘ð9ð ð9ð 
ó9ð< %)Ø?Cñ	'à�{Ñ#ð'ð �t˜C‘yÑ!ð'ð Ð;Ñ<ð	'ð
 ð'ð 
Ð*Ñ	+ó'ðR˜d ;Ñ/ð ¸3ð À8×CTÑCTó ðØ˜[Ñ)ðØ58ðà	ˆc�3ˆh‰óð2°3ð ¸4ÀÀSÀ¹>ó ð	J¨G°C¸°HÑ,=ð 	JÀ*ó 	Jð ð˜3ò ó ðð=à˜˜d 3¨ 8™n¨d°9©o¸xÈÐQÑRÑSð=ð ð=ð 
Ð$ kÐ1Ñ	2÷	=ñ =rW   rc   )Kr¤   ÚloggingÚ
contextlibr   Útypingr   r   r   r   r   r	   r
   r   r   r   r   rÕ   Ú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   r   r   r   Ú*langchain_core.output_parsers.openai_toolsr    r!   Úlangchain_core.outputsr"   r#   r$   Úlangchain_core.runnablesr%   Úlangchain_core.toolsr&   Úlangchain_core.utilsr'   r(   r)   Ú%langchain_core.utils.function_callingr*   Úpydanticr+   r,   r-   r.   r/   Ú(langchain_community.chat_models.llamacppr0   r1   Ú	getLoggerrë   r‰   r–   rô   rF   rO   rS   rV   ra   rc   rg   rW   rE   Ú<module>r	     sC  ðÛ Û Ý *÷÷ ÷ ñ ó ÷õ >÷ñ ÷
÷ ÷ ñ ÷÷ SÑ RÝ -Ý )÷ñ õ
 I÷õ ÷ð
 
ˆ×	Ñ	˜8Ó	$€àDÐ ð  kð  °dó  ðF&7 G¨C°¨HÑ$5ð &7¸+ó &7ðR.Ø�3˜�8Ñð.Ø-1Ð2BÑ-Cð.àó.ð$ ð$Øð$Øð$Ø#&ð$Ø25ð$àò$ó ð$ô(N=�=õ N=rW   