Ë
    µŒj  ã                   óÎ   — 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y)é    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œ}|S t        | t        «      rd| j                  dœ}|S t        | t        «      rd| j                  dœ}|S t        | t
        «      rd| j                  dœ}|S t        d| › �«      ‚)NÚuser)ÚroleÚcontentÚ	assistantÚsystemÚfunctionzGot unknown type )Ú
isinstancer   r   r	   r   r   Ú
ValueError)r   Úmessage_dicts     úk/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/chatglm3.pyÚ_convert_message_to_dictr      s�   € Ü�'œ<Ô(Ø &°7·?±?ÑCˆð Ðô 
�GœYÔ	'Ø +¸¿¹ÑHˆð Ðô 
�Gœ]Ô	+Ø (°W·_±_ÑEˆð
 Ðô	 
�Gœ_Ô	-Ø *°w·±ÑGˆð Ðô Ð,¨W¨IÐ6Ó7Ð7ó    c                   óf  — 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"y)!Ú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                  ó   — y)NÚ
chat_glm_3© )Úselfs    r   Ú	_llm_typezChatGLM3._llm_type:   s   € àr   c                 óž   — | j                   | j                  | j                  | j                  | j                  dœ}i |¥| j
                  xs 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>   sM   € ð —_‘_Ø×+Ñ+ØŸ/™/Ø—Z‘ZØ—n‘nñ
ˆð 7�&Ð6˜T×.Ñ.Ò4°"Ð6Ð6r   c                 ó^   — dd l }| j                  xs |j                  | j                  ¬«      S )Nr   )r/   )Úhttpxr.   ÚClientr/   )r3   r:   s     r   ÚclientzChatGLM3.clientJ   s%   € ãà×ÑÒE 5§<¡<¸¿¹ <Ó#EÐEr   Úpromptc           	      ó°   — | j                   }| j                  t        |¬«      gz   }|j                  d|D �cg c]  }t	        |«      ‘Œ c}i«       |S c c}w )N)r   Úmessages)r8   r,   r   Úupdater   )r3   r=   r7   r?   Úms        r   Ú_get_payloadzChatGLM3._get_payloadP   s]   € Ø×(Ñ(ˆØ×'Ñ'¬<ÀÔ+GÐ*HÑHˆØ�‰àÁ(ÓKÁ(¸QÔ5°aÕ8À(ÑKðô	
ð
 ˆùò Ls   ·A
ÚstopÚrun_managerÚkwargsc                 ó´  — ddl }| j                  |«      }t        j                  d|› �«       	 | j                  j                  | j                  t        |¬«      }t        j                  d|› �«       |j                  dk7  rt        d|› �«      ‚	 |j                  «       }	t        |	t        «      r0d	}
|
|	v r|	|
   }t        |«      r(|d   d
   d   }nt        d|	› �«      ‚t        d|	› �«      ‚|�t#        |«      }S # |j                  $ r}t        d|› �«      ‚d}~ww xY w# t        j                  $ r }t        d|› d|j                   › �«      ‚d}~ww xY w)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:   rB   ÚloggerÚdebugr<   Úpostr&   ÚHEADERSÚNetworkErrorr   Ústatus_coderH   r   ÚdictÚlenÚJSONDecodeErrorÚtextr   )r3   r=   rC   rD   rE   r:   ÚpayloadÚresponseÚeÚparsed_responseÚcontent_keysrJ   rT   s                r   Ú_callzChatGLM3._callZ   sˆ  € ó* 	à×#Ñ# FÓ+ˆÜ�‰Ð)¨'¨Ð3Ô4ð	IØ—{‘{×'Ñ'Ø×!Ñ!¬7¸ð (ó ˆHô 	�‰Ð*¨8¨*Ð5Ô6à×Ñ 3Ò&ÜÐ5°h°ZÐ@ÓAÐAð	Ø&Ÿm™m›oˆOä˜/¬4Ô0Ø(�Ø ?Ñ2Ø-¨lÑ;�GÜ˜7”|Ø& q™z¨)Ñ4°YÑ?™ä$Ð'@ÀÐ@QÐ%RÓSÐSä Ð#=¸oÐ=NÐ!OÓPÐPð ÐÜ& t¨TÓ2ˆDàˆøð? ×!Ñ!ò 	IÜÐCÀAÀ3ÐGÓHÐHûð	Iûô, ×#Ñ#ò 	ÜØQÐRSÐQTð UØ'Ÿ}™}˜oð/óð ûð	ús0   ¯,C? ÂAD$ Ã?D!ÄDÄD!Ä$EÄ7EÅE)NN)#Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r%   ÚstrÚ__annotations__r&   r'   r   rQ   r(   Úintr)   Úfloatr*   Úlistr,   r   r
   r-   Úboolr.   r   r   ÚDEFAULT_TIMEOUTr/   Úpropertyr4   r8   r<   rB   r   rZ   r2   r   r   r!   r!   %   sM  … Ùá M¸ÔA€J�ÓAØC€L�#ÓCØØ#'€L�(˜4‘.Ó'Ø1Ø€J�ÓØ1Ø€K�ÓØ-Ø€Eˆ5ÓØ0Ù).¸tÔ)D€O�T˜+Ñ&ÓDØ,Ø€IˆtÓØ/Ø$(€K��s˜D�yÑ!Ó(Ø"€GˆSÓ"àð˜3ò ó ðð ð	7 Dò 	7ó ð	7ð ðF˜ò Fó ðFð
 3ð ¨4ó ð %)Ø:>ñ	=àð=ð �t˜C‘yÑ!ð=ð Ð6Ñ7ð	=ð
 ð=ð 
ô=r   r!   )rH   Ú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[   rK   rN   re   rQ   r   r!   r2   r   r   Ú<module>ro      sl   ðÛ Û ß -Ó -å =Ý 3÷õ õ å >à	ˆ×	Ñ	˜8Ó	$€ØÐ-Ð
.€Ø€ð kð °dó ôrˆsõ rr   