Ë
    µŒja&  ã                   óf  — 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jN                  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«      Z0y)é    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                 ó:  — t        | t        «      r| j                  | 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)ÚRoleÚContentÚsystemÚuserÚ	assistantzGot unknown type )Ú
isinstancer   ÚroleÚcontentr   r   r   Ú	TypeError)r!   Úmessage_dicts     úq/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/chat_models/hunyuan.pyÚ_convert_message_to_dictr/   !   s¡   € ä�'œ;Ô'Ø '§¡¸¿¹ÑIˆð Ðô 
�Gœ]Ô	+Ø (°W·_±_ÑEˆð Ðô 
�Gœ\Ô	*Ø &°7·?±?ÑCˆð Ðô 
�GœYÔ	'Ø +¸¿¹ÑHˆð Ðô Ð+¨G¨9Ð5Ó6Ð6ó    Ú_dictc                 óè   — | d   }|dk(  r t        | j                  dd«      xs d¬«      S |dk(  rt        | d   ¬«      S |dk(  r t        | j                  dd«      xs 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   sz   € Ø�‰=€DØˆxÒÜ U§Y¡Y¨y¸"Ó%=Ò%CÀÔDÐDØ	�ŠÜ E¨)Ñ$4Ô5Ð5Ø	�Ò	Ü §¡¨9°bÓ!9Ò!?¸RÔ@Ð@ä 5¨Ñ#3¸$Ô?Ð?r0   Ú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 |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Ø	�Ò	 ´Ò ?Ü gÔ.Ð.Ù	�Ô"2Ò2Ü¨°dÔ;Ð;á WÔ-Ð-r0   Úresponsec                 óÆ   — g }| d   D ]B  }t        |d   «      }| j                  dd«      |_        |j                  t	        |¬«      «       ŒD | 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   sm   € Ø€KØ˜9Ô%ˆÜ*¨6°)Ñ+<Ó=ˆØ—\‘\ $¨Ó+ˆŒ
Ø×Ñœ>°'Ô:Õ;ð &ð
 ˜7Ñ#€KØ Ð-€JÜ +¸*ÔEÐEr0   c                   óT  — 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.y)'Ú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                  ó   — y)NTrR   rS   s    r.   Úlc_serializablezChatHunyuan.lc_serializableg   s   € àr0   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        | «      }|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.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‘   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óð ð
 "'ˆˆ~ÑØˆr0   c                 óx   — 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¬   s`   € ä#7ØØØó$
ˆÐÑ ô
 ';ØØØó'
ˆÐ"Ñ#ô
 (=Ü ØØ$Ø$óó(
ˆÐ#Ñ$ð ˆr0   c                 ó¬   — | 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Á   sS   € ð  ×+Ñ+Ø—J‘JØ—Z‘ZØ—n‘nØ $× 6Ñ 6Ø!%×!8Ñ!8ñ
ˆð 6�-Ð5 4×#4Ñ#4Ð5Ð5r0   ÚmessagesÚstopÚrun_managerÚkwargsc                 óÚ   — | j                   r! | j                  d|||dœ|¤Ž}t        |«      S  | j                  |fi |¤Ž}t	        t        j                  |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Î   sn   € ð �>Š>Ø&˜$Ÿ,™,ð Ø!¨¸+ñØIOñˆKô (¨Ó4Ð4àˆd�j‰j˜Ñ, VÑ,ˆÜ"¤4§:¡:¨c×.@Ñ.@Ó.BÓ#CÓDÐDr0   c              +   óÄ  K  —  | j                   |fi |¤Ž}t        }|D ]¾  }|j                  dd«      }t        |«      dk(  rŒ$t	        j
                  |«      }d|v rt        d|› �«      ‚|d   D ]l  }	t        |	d   |«      }|j                  dd«      |_        |j                  }t        |¬	«      }
|r&|j                  t        |j                  «      |
¬
«       |
–— Œn ŒÀ y ­w)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‰j˜Ñ, VÑ,ˆä6DÐÛˆEØ—I‘I˜f bÓ)ˆEÜ�5‹z˜QŠØÜ—z‘z %Ó(ˆHØ˜(Ñ"Ü Ð#DÀXÀJÐ!OÓPÐPà" 9Ô-�Ü7Ø˜7‘OÐ%8ó�ð $Ÿ<™<¨¨bÓ1�”Ø&+§o¡oÐ#Ü.°uÔ=�ÙØ×0Ñ0´°U·]±]Ó1CÈ8Ð0ÔTØ“ñ .ñ ùs   ‚CC c                 ó  — | j                   €t        d«      ‚	 ddlm} ddlm}m} i | j                  ¥|¥}|j                  | j                  t        | j                   j                  «       «      «      }|j                  |d«      }|j                  «       }	d|D �
cg c]  }
t        |
«      ‘Œ c}
i|¥}|	j!                  t#        j$                  |«      «       |j'                  |	«      }|S # t        $ r t        d«      ‚w xY wc c}
w )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   ÚMessages)rQ   rh   Útencentcloud.commonr˜   Útencentcloud.hunyuan.v20230901r™   rš   ÚImportErrorr~   Ú
CredentialrP   r”   Úget_secret_valueÚHunyuanClientÚChatCompletionsRequestr/   Úfrom_json_stringr†   ÚdumpsÚChatCompletions)rT   r   r‚   r˜   r™   rš   Ú
parametersÚcredÚclientÚreqÚmÚparamsÚresps                r.   r…   zChatHunyuan._chatû   s  € Ø×"Ñ"Ð*ÜÐ=Ó>Ð>ð	Ý6ßMð 8˜×,Ñ,Ð7°Ð7ˆ
Ø×$Ñ$Ø×"Ñ"¤C¨×(?Ñ(?×(PÑ(PÓ(RÓ$Só
ˆð  ×-Ñ-¨d°BÓ7ˆØ×+Ñ+Ó-ˆà¹hÓG¹h¸Ô1°!Õ4¸hÑGð
àð
ˆð 	×ÑœTŸZ™Z¨Ó/Ô0Ø×%Ñ% cÓ*ˆØˆøô% ò 	ÜðPóð ð	üò Hs   ™C* ÂDÃ*C?c                  ó   — y)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   si  … ñð
 ð
˜D  c ™Nò 
ó ð
ð ð ò ó ðð %)€N�H˜S‘MÓ(ØØ'+Ð�x ‘}Ó+ØØ.2Ð˜ Ñ+Ó2ØØ€IˆtÓØ/Ø€O�SÓØEØ€K�ÓØ+Ø€Eˆ5ÓØ'Ø€Eˆ3Óð
ð $Ð�tÓ#ØFØ#Ð˜Ó#Ø4á#(¸Ô#>€L�$�s˜C�x‘.Ó>ØQáØô€Lñ ˜(Ô#Øð  c¨3 h¡ð °Cò ó ó $ðð2 ð¨$ð °4ò ó ðð( ð
6  c¨3 h¡ò 
6ó ð
6ð %)Ø:>ñ	Eà�{Ñ#ðEð �t˜C‘yÑ!ðEð Ð6Ñ7ð	Eð
 ðEð 
óEð& %)Ø:>ñ	à�{Ñ#ðð �t˜C‘yÑ!ðð Ð6Ñ7ð	ð
 ðð 
Ð%Ñ	&óð:˜d ;Ñ/ð ¸3ð À3ó ð6 ð˜3ò ó ñ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å =÷÷
÷ 
õ 
÷ SÑ R÷ó ÷ CÓ Bà	ˆ×	Ñ	˜8Ó	$€ð kð °dó ð 	@ G¨C°¨HÑ$5ð 	@¸+ó 	@ð.Ø�3˜�8Ñð.Ø-1Ð2BÑ-Cð.àó.ð 	F '¨#¨s¨(Ñ"3ð 	F¸
ó 	Fô�-õ r0   