§
    šŠtj  ã                   óÒ   — d dl Z d dlZd dlmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZmZ d dlmZ d dlmZ  ej        e¦  «        Zdd	iZd
Zdedefd„Z G d„ de
¦  «        ZdS )é    N)ÚAnyÚListÚOptionalÚUnion)ÚCallbackManagerForLLMRun)ÚLLM)Ú	AIMessageÚBaseMessageÚFunctionMessageÚHumanMessageÚSystemMessage)ÚField)Úenforce_stop_tokenszContent-Typezapplication/jsoné   ÚmessageÚreturnc                 ó*  — t          | t          ¦  «        rd| j        dœ}nrt          | t          ¦  «        rd| j        dœ}nRt          | t          ¦  «        rd| j        dœ}n2t          | t
          ¦  «        rd| j        dœ}nt          d| › �¦  «        ‚|S )NÚuser)ÚroleÚcontentÚ	assistantÚsystemÚfunctionzGot unknown type )Ú
isinstancer   r   r	   r   r   Ú
ValueError)r   Úmessage_dicts     ú_/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/chatglm3.pyÚ_convert_message_to_dictr      s«   € Ý�'�<Ñ(Ô(ð 	8Ø &°7´?ÐCÐCˆˆÝ	�G�YÑ	'Ô	'ð 8Ø +¸¼ÐHÐHˆˆÝ	�G�]Ñ	+Ô	+ð 8Ø (°W´_ÐEÐEˆˆÝ	�G�_Ñ	-Ô	-ð 8Ø *°w´ÐGÐGˆˆåÐ6¨WÐ6Ð6Ñ7Ô7Ð7ØÐó    c                   óª  — e Zd ZU dZ edd¬¦  «        Zeed<   dZeed<   	 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d<   	 dZeed<   	 dZeedf         ed<   eZeed<   edefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zdedefd„Z 	 	 d dede
ee                  de
e!         dedef
d„Z"dS )!ÚChatGLM3zChatGLM3 LLM service.zchatglm3-6bÚmodel)ÚdefaultÚaliasÚ
model_namez)http://127.0.0.1:8000/v1/chat/completionsÚendpoint_urlNÚmodel_kwargsi N  Ú
max_tokensgš™™™™™¹?Útemperaturegffffffæ?Útop_p)Údefault_factoryÚprefix_messagesFÚ	streamingÚhttp_clientÚtimeoutr   c                 ó   — dS )NÚ
chat_glm_3© )Úselfs    r   Ú	_llm_typezChatGLM3._llm_type:   s   € àˆ|r   c                 ó^   — | j         | j        | j        | j        | j        dœ}i |¥| j        pi ¥S )z,Get the parameters used to invoke the model.)r"   r)   r(   r*   Ústream)r%   r)   r(   r*   r-   r'   )r3   Úparamss     r   Ú_invocation_paramszChatGLM3._invocation_params>   sD   € ð ”_ØÔ+Øœ/Ø”ZØ”nð
ð 
ˆð 7�&Ð6˜TÔ.Ð4°"Ð6Ð6r   c                 óN   — dd l }| j        p|                     | j        ¬¦  «        S )Nr   )r/   )Úhttpxr.   ÚClientr/   )r3   r:   s     r   ÚclientzChatGLM3.clientJ   s)   € àˆˆˆàÔÐE 5§<¢<¸¼ <Ñ#EÔ#EÐEr   Úpromptc                 óˆ   — | j         }| j        t          |¬¦  «        gz   }|                     dd„ |D ¦   «         i¦  «         |S )N)r   Úmessagesc                 ó,   — g | ]}t          |¦  «        ‘ŒS r2   )r   )Ú.0Úms     r   ú
<listcomp>z)ChatGLM3._get_payload.<locals>.<listcomp>U   s!   € ÐKÐKÐK¸QÕ5°aÑ8Ô8ÐKÐKÐKr   )r8   r,   r   Úupdate)r3   r=   r7   r?   s       r   Ú_get_payloadzChatGLM3._get_payloadP   s[   € ØÔ(ˆØÔ'­<ÀÐ+GÑ+GÔ+GÐ*HÑHˆØ�ŠàÐKÐKÀ(ÐKÑKÔKðñ	
ô 	
ð 	
ð
 ˆr   ÚstopÚrun_managerÚkwargsc                 ó  — ddl }|                      |¦  «        }t                               d|› �¦  «         	 | j                             | j        t          |¬¦  «        }n$# |j        $ r}t          d|› �¦  «        ‚d}~ww xY wt                               d|› �¦  «         |j
        dk    rt          d|› �¦  «        ‚	 |                     ¦   «         }	t          |	t          ¦  «        rDd	}
|
|	v r,|	|
         }t          |¦  «        r|d         d
         d         }n$t          d|	› �¦  «        ‚t          d|	› �¦  «        ‚n1# t          j        $ r}t          d|› d|j        › �¦  «        ‚d}~ww xY w|�t#          ||¦  «        }|S )ax  Call out to a ChatGLM3 LLM inference endpoint.

        Args:
            prompt: The prompt to pass into the model.
            stop: Optional list of stop words to use when generating.

        Returns:
            The string generated by the model.

        Example:
            .. code-block:: python

                response = chatglm_llm.invoke("Who are you?")
        r   NzChatGLM3 payload: )ÚheadersÚjsonz$Error raised by inference endpoint: zChatGLM3 response: éÈ   zFailed with response: Úchoicesr   r   zNo content in response : zUnexpected response type: z?Error raised during decoding response from inference endpoint: z.
Response: )r:   rE   ÚloggerÚdebugr<   Úpostr&   ÚHEADERSÚNetworkErrorr   Ústatus_coderK   r   ÚdictÚlenÚJSONDecodeErrorÚtextr   )r3   r=   rF   rG   rH   r:   ÚpayloadÚresponseÚeÚparsed_responseÚcontent_keysrM   rW   s                r   Ú_callzChatGLM3._callZ   sì  € ð* 	ˆˆˆà×#Ò# FÑ+Ô+ˆÝ�ŠÐ3¨'Ð3Ð3Ñ4Ô4Ð4ð	IØ”{×'Ò'ØÔ!­7¸ð (ñ ô ˆHˆHøð Ô!ð 	Ið 	Ið 	IÝÐGÀAÐGÐGÑHÔHÐHøøøøð	Iøøøõ 	�ŠÐ5¨8Ð5Ð5Ñ6Ô6Ð6àÔ 3Ò&Ð&ÝÐ@°hÐ@Ð@ÑAÔAÐAð	Ø&Ÿmšm™oœoˆOå˜/­4Ñ0Ô0ð 	QØ(�Ø ?Ð2Ð2Ø-¨lÔ;�GÝ˜7‘|”|ð @Ø& qœz¨)Ô4°YÔ?˜øå$Ð%RÀÐ%RÐ%RÑSÔSÐSå Ð!O¸oÐ!OÐ!OÑPÔPÐPøøåÔ#ð 	ð 	ð 	Ýð/ÐRSð /ð /Ø'œ}ð/ð /ñô ð øøøøð	øøøð ÐÝ& t¨TÑ2Ô2ˆDàˆs0   ¸'A  Á 
BÁ*A<Á<BÂ?A?D? Ä?E-ÅE(Å(E-)NN)#Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r%   ÚstrÚ__annotations__r&   r'   r   rT   r(   Úintr)   Úfloatr*   Úlistr,   r   r
   r-   Úboolr.   r   r   ÚDEFAULT_TIMEOUTr/   Úpropertyr4   r8   r<   rE   r   r]   r2   r   r   r!   r!   %   sù  € € € € € € ØÐà�e M¸ÐAÑAÔA€J�ÐAÐAÑAØC€L�#ÐCÐCÑCØØ#'€L�(˜4”.Ð'Ð'Ñ'Ø1Ø€J�ÐÐÑØ1Ø€K�ÐÐÑØ-Ø€Eˆ5ÐÐÑØ0Ø).¨¸tÐ)DÑ)DÔ)D€O�T˜+Ô&ÐDÐDÑDØ,Ø€IˆtÐÐÑØ/Ø$(€K��s˜D�yÔ!Ð(Ð(Ñ(Ø"€GˆSÐ"Ð"Ñ"àð˜3ð ð ð ñ „Xðð ð	7 Dð 	7ð 	7ð 	7ñ „Xð	7ð ðF˜ð Fð Fð Fñ „XðFð
 3ð ¨4ð ð ð ð ð %)Ø:>ð	=ð =àð=ð �t˜C”yÔ!ð=ð Ð6Ô7ð	=ð
 ð=ð 
ð=ð =ð =ð =ð =ð =r   r!   )rK   ÚloggingÚtypingr   r   r   r   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr   Úlangchain_core.messagesr	   r
   r   r   r   Úpydanticr   Úlangchain_community.llms.utilsr   Ú	getLoggerr^   rN   rQ   rh   rT   r   r!   r2   r   r   ú<module>rr      sM  ðØ €€€Ø €€€Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -à =Ð =Ð =Ð =Ð =Ð =Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð à >Ð >Ð >Ð >Ð >Ð >à	ˆÔ	˜8Ñ	$Ô	$€ØÐ-Ð
.€Ø€ð kð °dð ð ð ð ðrð rð rð rð rˆsñ rô rð rð rð rr   