§
    šŠtja&  ã                   ó‚  — d dl Z d dlZd dl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mZmZmZmZmZmZmZmZ d dlmZmZmZ d dlmZmZm Z m!Z! d dl"m#Z#m$Z$m%Z%m&Z&  ej'        e(¦  «        Z)d	ed
e*fd„Z+dee,ef         d
efd„Z-dee,ef         de	e         d
efd„Z.dee,ef         d
efd„Z/ G d„ de¦  «        Z0dS )é    N)ÚAnyÚDictÚIteratorÚListÚMappingÚOptionalÚType)ÚCallbackManagerForLLMRun)ÚBaseChatModelÚgenerate_from_stream)	Ú	AIMessageÚAIMessageChunkÚBaseMessageÚBaseMessageChunkÚChatMessageÚChatMessageChunkÚHumanMessageÚHumanMessageChunkÚSystemMessage)ÚChatGenerationÚChatGenerationChunkÚ
ChatResult)Úconvert_to_secret_strÚget_from_dict_or_envÚget_pydantic_field_namesÚpre_init)Ú
ConfigDictÚFieldÚ	SecretStrÚmodel_validatorÚmessageÚreturnc                 ó4  — t          | t          ¦  «        r| j        | 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)ÚRoleÚContentÚsystemÚuserÚ	assistantzGot unknown type )Ú
isinstancer   ÚroleÚcontentr   r   r   Ú	TypeError)r!   Úmessage_dicts     úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/chat_models/hunyuan.pyÚ_convert_message_to_dictr/   !   s­   € å�'�;Ñ'Ô'ð 	7Ø '¤¸¼ÐIÐIˆˆÝ	�G�]Ñ	+Ô	+ð 7Ø (°W´_ÐEÐEˆˆÝ	�G�\Ñ	*Ô	*ð 7Ø &°7´?ÐCÐCˆˆÝ	�G�YÑ	'Ô	'ð 7Ø +¸¼ÐHÐHˆˆåÐ5¨GÐ5Ð5Ñ6Ô6Ð6àÐó    Ú_dictc                 ó(  — | d         }|dk    r&t          |                      dd¦  «        pd¬¦  «        S |dk    rt          | d         ¬¦  «        S |dk    r&t          |                      dd¦  «        pd¬¦  «        S t	          | d         |¬¦  «        S )	Nr$   r&   r%   Ú ©r+   r'   r(   ©r+   r*   )r   Úgetr   r   r   )r1   r*   s     r.   Ú_convert_dict_to_messager7   1   s    € Ø�Œ=€DØˆxÒÐÝ U§Y¢Y¨y¸"Ñ%=Ô%=Ð%CÀÐDÑDÔDÐDØ	�ŠˆÝ E¨)Ô$4Ð5Ñ5Ô5Ð5Ø	�Ò	Ð	Ý §¢¨9°bÑ!9Ô!9Ð!?¸RÐ@Ñ@Ô@Ð@å 5¨Ô#3¸$Ð?Ñ?Ô?Ð?r0   Údefault_classc                 ó2  — |                       d¦  «        }|                       d¦  «        pd}|dk    s|t          k    rt          |¬¦  «        S |dk    s|t          k    rt          |¬¦  «        S |s|t          k    rt          ||¬¦  «        S  ||¬¦  «        S )Nr$   r%   r3   r'   r4   r(   r5   )r6   r   r   r   )r1   r8   r*   r+   s       r.   Ú_convert_delta_to_message_chunkr:   =   s¯   € ð �9Š9�VÑÔ€DØ�iŠi˜	Ñ"Ô"Ð( b€Gàˆv‚~€~˜Õ*;Ò;Ð;Ý ¨Ð1Ñ1Ô1Ð1Ø	�Ò	Ð	 µÒ ?Ð ?Ý gÐ.Ñ.Ô.Ð.Ø	ð .�Õ"2Ò2Ð2Ý¨°dÐ;Ñ;Ô;Ð;àˆ} WÐ-Ñ-Ô-Ð-r0   Úresponsec                 óü   — g }| d         D ]U}t          |d         ¦  «        }|                      dd¦  «        |_        |                     t	          |¬¦  «        ¦  «         ŒV| d         }d|i}t          ||¬¦  «        S )	NÚChoicesÚMessageÚIdr3   ©r!   ÚUsageÚtoken_usage)ÚgenerationsÚ
llm_output)r7   r6   ÚidÚappendr   r   )r;   rC   Úchoicer!   rB   rD   s         r.   Ú_create_chat_resultrH   M   s‹   € Ø€KØ˜9Ô%ð <ð <ˆÝ*¨6°)Ô+<Ñ=Ô=ˆØ—\’\ $¨Ñ+Ô+ˆŒ
Ø×Ò�>°'Ð:Ñ:Ô:Ñ;Ô;Ð;Ð;à˜7Ô#€KØ Ð-€JÝ +¸*ÐEÑEÔEÐEr0   c                   óø  — e Zd ZU dZedeeef         fd„¦   «         Zedefd„¦   «         Z	dZ
ee         ed<   	 dZee         ed<   	 dZee         ed<   	 d	Zeed
<   	 dZeed<   	 dZeed<   	 dZ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fd„¦   «         Z#edeeef         fd„¦   «         Z$	 	 d&de%e&         dee%e                  d ee'         d!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e%e&         d!edefd$„Z-edefd%„¦   «         Z.dS )'ÚChatHunyuanzTencent Hunyuan chat models API by Tencent.

    For more information, see https://cloud.tencent.com/document/product/1729
    r"   c                 ó   — ddddœS )NÚHUNYUAN_APP_IDÚHUNYUAN_SECRET_IDÚHUNYUAN_SECRET_KEY)Úhunyuan_app_idÚhunyuan_secret_idÚhunyuan_secret_key© ©Úselfs    r.   Ú
lc_secretszChatHunyuan.lc_secrets_   s   € ð /Ø!4Ø"6ð
ð 
ð 	
r0   c                 ó   — dS )NTrR   rS   s    r.   Úlc_serializablezChatHunyuan.lc_serializableg   s   € àˆtr0   NrO   rP   rQ   FÚ	streamingé<   Úrequest_timeoutg      ð?ÚtemperatureÚtop_pzhunyuan-liteÚmodelÚstream_moderationTÚenable_enhancement)Údefault_factoryÚmodel_kwargs)Úpopulate_by_nameÚbefore)ÚmodeÚvaluesc           
      ó¤  — t          | ¦  «        }|                     di ¦  «        }t          |¦  «        D ]Y}||v rt          d|› d�¦  «        ‚||vr<t                               d|› d|› d|› d�¦  «         |                     |¦  «        ||<   ŒZ|                     |                     ¦   «         ¦  «        }|rt          d|› d	�¦  «        ‚||d<   |S )
z>Build extra kwargs from additional params that were passed in.ra   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   r6   ÚlistÚ
ValueErrorÚloggerÚwarningÚpopÚintersectionÚkeys)Úclsre   Úall_required_field_namesÚextraÚ
field_nameÚinvalid_model_kwargss         r.   Úbuild_extrazChatHunyuan.build_extra‘   s4  € õ $<¸CÑ#@Ô#@Ð Ø—
’
˜>¨2Ñ.Ô.ˆÝ˜v™,œ,ð 		;ð 		;ˆJØ˜UÐ"Ð"Ý Ð!F¨*Ð!FÐ!FÐ!FÑGÔGÐGØÐ!9Ð9Ð9Ý—’ðN *ð Nð NØðNð Nà)3ðNð Nð Nñô ð ð
 %+§J¢J¨zÑ$:Ô$:��jÑ!øà7×DÒDÀUÇZÂZÁ\Ä\ÑRÔRÐØð 	ÝðTÐ2ð Tð Tð Tñô ð ð
 "'ˆˆ~ÑØˆr0   c                 ó˜   — t          |dd¦  «        |d<   t          |dd¦  «        |d<   t          t          |dd¦  «        ¦  «        |d<   |S )NrO   rL   rP   rM   rQ   rN   )r   r   )rn   re   s     r.   Úvalidate_environmentz ChatHunyuan.validate_environment¬   st   € å#7ØØØñ$
ô $
ˆÐÑ õ
 ';ØØØñ'
ô '
ˆÐ"Ñ#õ
 (=Ý ØØ$Ø$ñô ñ(
ô (
ˆÐ#Ñ$ð ˆr0   c                 óf   — | j         | j        | j        | j        | j        | j        dœ}i |¥| j        ¥S )z3Get the default parameters for calling Hunyuan API.)ÚTemperatureÚTopPÚModelÚStreamÚStreamModerationÚEnableEnhancement)r[   r\   r]   rX   r^   r_   ra   )rT   Únormal_paramss     r.   Ú_default_paramszChatHunyuan._default_paramsÁ   sF   € ð  Ô+Ø”JØ”ZØ”nØ $Ô 6Ø!%Ô!8ð
ð 
ˆð 6�-Ð5 4Ô#4Ð5Ð5r0   ÚmessagesÚstopÚrun_managerÚkwargsc                 óÒ   — | j         r  | j        d|||dœ|¤Ž}t          |¦  «        S  | j        |fi |¤Ž}t	          t          j        |                     ¦   «         ¦  «        ¦  «        S )N)r   r€   r�   rR   )rX   Ú_streamr   Ú_chatrH   ÚjsonÚloadsÚto_json_string)rT   r   r€   r�   r‚   Ústream_iterÚress          r.   Ú	_generatezChatHunyuan._generateÎ   s‡   € ð Œ>ð 	5Ø&˜$œ,ð Ø!¨¸+ðð ØIOðð ˆKõ (¨Ñ4Ô4Ð4àˆdŒj˜Ð,Ð, VÐ,Ð,ˆÝ"¥4¤:¨c×.@Ò.@Ñ.BÔ.BÑ#CÔ#CÑDÔDÐDr0   c              +   óê  K  —  | j         |fi |¤Ž}t          }|D ]Ø}|                     dd¦  «        }t          |¦  «        dk    rŒ,t	          j        |¦  «        }d|v rt          d|› �¦  «        ‚|d         D ]y}	t          |	d         |¦  «        }|                     dd¦  «        |_        |j	        }t          |¬	¦  «        }
|r)|                     t          |j        ¦  «        |
¬
¦  «         |
V — ŒzŒÙd S )NÚdatar3   r   Úerrorz!Error from Hunyuan api response: r=   ÚDeltar?   r@   )Úchunk)r…   r   r6   Úlenr†   r‡   rh   r:   rE   Ú	__class__r   Úon_llm_new_tokenÚstrr+   )rT   r   r€   r�   r‚   rŠ   Údefault_chunk_classr�   r;   rG   Úcg_chunks              r.   r„   zChatHunyuan._streamÞ   s.  è è € ð ˆdŒj˜Ð,Ð, VÐ,Ð,ˆå6DÐØð 	ð 	ˆEØ—I’I˜f bÑ)Ô)ˆEÝ�5‰zŒz˜QŠˆØÝ”z %Ñ(Ô(ˆHØ˜(Ð"Ð"Ý Ð!OÀXÐ!OÐ!OÑPÔPÐPà" 9Ô-ð 	ð 	�Ý7Ø˜7”OÐ%8ñô �ð $Ÿ<š<¨¨bÑ1Ô1�”Ø&+¤oÐ#Ý.°uÐ=Ñ=Ô=�Øð UØ×0Ò0µ°U´]Ñ1CÔ1CÈ8Ð0ÑTÔTÐTØ����ð	ð	ð 	r0   c                 ó  — | j         €t          d¦  «        ‚	 ddlm} ddlm}m} n# t          $ r t          d¦  «        ‚w xY wi | j        ¥|¥}| 	                    | j
        t          | j                              ¦   «         ¦  «        ¦  «        }|                     |d¦  «        }|                     ¦   «         }	dd„ |D ¦   «         i|¥}
|	                     t!          j        |
¦  «        ¦  «         |                     |	¦  «        }|S )	NzHunyuan secret key is not set.r   )Ú
credential)Úhunyuan_clientÚmodelszkCould not import tencentcloud python package. Please install it with `pip install tencentcloud-sdk-python`.r3   ÚMessagesc                 ó,   — g | ]}t          |¦  «        ‘ŒS rR   )r/   )Ú.0Úms     r.   ú
<listcomp>z%ChatHunyuan._chat.<locals>.<listcomp>  s!   € ÐGÐGÐG¸Õ1°!Ñ4Ô4ÐGÐGÐGr0   )rQ   rh   Útencentcloud.commonr˜   Útencentcloud.hunyuan.v20230901r™   rš   ÚImportErrorr~   Ú
CredentialrP   r”   Úget_secret_valueÚHunyuanClientÚChatCompletionsRequestÚfrom_json_stringr†   ÚdumpsÚChatCompletions)rT   r   r‚   r˜   r™   rš   Ú
parametersÚcredÚclientÚreqÚparamsÚresps               r.   r…   zChatHunyuan._chatû   sJ  € ØÔ"Ð*ÝÐ=Ñ>Ô>Ð>ð	Ø6Ð6Ð6Ð6Ð6Ð6ØMÐMÐMÐMÐMÐMÐMÐMÐMøÝð 	ð 	ð 	ÝðPñô ð ð	øøøð 8˜Ô,Ð7°Ð7ˆ
Ø×$Ò$ØÔ"¥C¨Ô(?×(PÒ(PÑ(RÔ(RÑ$SÔ$Sñ
ô 
ˆð  ×-Ò-¨d°BÑ7Ô7ˆØ×+Ò+Ñ-Ô-ˆàÐGÐG¸hÐGÑGÔGð
àð
ˆð 	×Ò�TœZ¨Ñ/Ô/Ñ0Ô0Ð0Ø×%Ò% cÑ*Ô*ˆØˆs	   ˜' §Ac                 ó   — dS )Nzhunyuan-chatrR   rS   s    r.   Ú	_llm_typezChatHunyuan._llm_type  s   € àˆ~r0   )NN)/Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   r”   rU   ÚboolrW   rO   r   ÚintÚ__annotations__rP   rQ   r   rX   rZ   r[   Úfloatr\   r]   r^   r_   r   Údictra   r   r   Úmodel_configr    Úclassmethodrs   r   ru   r~   r   r   r
   r   r‹   r   r   r„   r…   r±   rR   r0   r.   rJ   rJ   Y   sf  € € € € € € ðð ð
 ð
˜D  c œNð 
ð 
ð 
ñ „Xð
ð ð ð ð ð ñ „Xðð %)€N�H˜S”MÐ(Ð(Ñ(ØØ'+Ð�x ”}Ð+Ð+Ñ+ØØ.2Ð˜ Ô+Ð2Ð2Ñ2ØØ€IˆtÐÐÑØ/Ø€O�SÐÐÑØEØ€K�ÐÐÑØ+Ø€Eˆ5ÐÐÑØ'Ø€Eˆ3ÐÐÑð
ð $Ð�tÐ#Ð#Ñ#ØFØ#Ð˜Ð#Ð#Ñ#Ø4à#( 5¸Ð#>Ñ#>Ô#>€L�$�s˜C�x”.Ð>Ð>Ñ>ØQà�:Øðñ ô €Lð €_˜(Ð#Ñ#Ô#Øð  c¨3 h¤ð °Cð ð ð ñ „[ñ $Ô#ðð2 ð¨$ð °4ð ð ð ñ „Xðð( ð
6  c¨3 h¤ð 
6ð 
6ð 
6ñ „Xð
6ð %)Ø:>ð	Eð Eà�{Ô#ðEð �t˜C”yÔ!ðEð Ð6Ô7ð	Eð
 ðEð 
ðEð Eð Eð Eð& %)Ø:>ð	ð à�{Ô#ðð �t˜C”yÔ!ðð Ð6Ô7ð	ð
 ðð 
Ð%Ô	&ðð ð ð ð:˜d ;Ô/ð ¸3ð À3ð ð ð ð ð6 ð˜3ð ð ð ñ „Xðð ð r0   rJ   )1r†   ÚloggingÚtypingr   r   r   r   r   r   r	   Úlangchain_core.callbacksr
   Ú*langchain_core.language_models.chat_modelsr   r   Úlangchain_core.messagesr   r   r   r   r   r   r   r   r   Úlangchain_core.outputsr   r   r   Úlangchain_core.utilsr   r   r   r   Úpydanticr   r   r   r    Ú	getLoggerr²   ri   r»   r/   r”   r7   r:   rH   rJ   rR   r0   r.   ú<module>rÇ      sˆ  ðØ €€€Ø €€€Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eà =Ð =Ð =Ð =Ð =Ð =ðð ð ð ð ð ð ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð SÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ Rðð ð ð ð ð ð ð ð ð ð ð ð CÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bà	ˆÔ	˜8Ñ	$Ô	$€ð kð °dð ð ð ð ð 	@ G¨C°¨HÔ$5ð 	@¸+ð 	@ð 	@ð 	@ð 	@ð.Ø�3˜�8Ôð.Ø-1Ð2BÔ-Cð.àð.ð .ð .ð .ð 	F '¨#¨s¨(Ô"3ð 	F¸
ð 	Fð 	Fð 	Fð 	Fðð ð ð ð �-ñ ô ð ð ð r0   