
    dh                         S SK r S SKJrJrJrJrJrJr  S SKJ	r	  S SK
Jr  S SKJrJr  S SKJrJrJrJr   " S S\	\5      rg)	    N)AnyDictListLiteralOptionalType)
Embeddings)run_in_executor)convert_to_secret_strget_from_dict_or_env)	BaseModelField	SecretStrmodel_validatorc                   ~   \ rS rSr% Sr\" SSS9r\\   \	S'    \" SSS9r
\\   \	S'    S	r\S
   \	S'    Sr\\	S'    Sr\\	S'    \" SSS9r\\	S'    \" SSS9r\\   \	S'    \" SS9S\S\4S j5       rS\S\\   4S jrS\\   S\\\      4S jrS\S\\   4S jrS\\   S\\\      4S jrS\S\\   4S jrS r g)!HunyuanEmbeddings
   z|Tencent Hunyuan embedding models API by Tencent.

For more information, see https://cloud.tencent.com/document/product/1729
	secret_idN)aliasdefaulthunyuan_secret_id
secret_keyhunyuan_secret_keyap-guangzhou)r   z
ap-beijingregioni   embedding_ctx_lengthFshow_progress_barT)r   excludeclientrequest_clsbefore)modevaluesreturnc                 z   [        [        USS5      5      US'   [        [        USS5      5      US'    SSKJn  SSKJn  SSKJn  SS	KJ	n  U" 5       nSUR                  l        U" US   R                  5       US   R                  5       5      nXQS'   U" XqS   U5      US'   U$ ! [         a    [        S
5      ef = f)z?Validate that api key and python package exists in environment.r   HUNYUAN_SECRET_IDr   HUNYUAN_SECRET_KEYr   )
Credential)ClientProfile)HunyuanClient)GetEmbeddingRequestz{Could not import tencentcloud sdk python package. Please install it with `pip install "tencentcloud-sdk-python>=3.0.1139"`.   r    r   r   )r   r   tencentcloud.common.credentialr(   *tencentcloud.common.profile.client_profiler)   -tencentcloud.hunyuan.v20230901.hunyuan_clientr*   %tencentcloud.hunyuan.v20230901.modelsr+   ImportErrorhttpProfilepre_conn_pool_sizeget_secret_value)clsr#   r(   r)   r*   r+   client_profile
credentials           ^/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/hunyuan.pyvalidate_environment&HunyuanEmbeddings.validate_environment    s     '< ##'
"# (= $$(
#$		APSQ '89""5&'88:'(99;


 !4}(H5E~Vx#  	J 	s   B$ $B:textc                 r   U R                   c  [        S5      eU R                  5       nXl        U R                  R	                  U5      n[
        R                  " UR                  5       5      nUR                  S5      nU(       d  [        S5      eUS   R                  S5      nU(       d  [        S5      eU$ )Nz!Request class is not initialized.Dataz,Occur hunyuan embedding error: Data is emptyr   	Embeddingz1Occur hunyuan embedding error: Embedding is empty)
r    AssertionErrorInputr   GetEmbeddingjsonloadsto_json_stringgetRuntimeError)selfr;   requestresponse	_responsedata	embeddings          r8   _embed_textHunyuanEmbeddings._embed_textJ   s    # !DEE""$;;++G4$(JJx/F/F/H$I	/8}}V/DMNNGKK,	RSS    textsc                     / nU R                   (       a   SSKJn  U" USS9nOUnU H#  nUR                  U R	                  U5      5        M%     U$ ! [         a  n[        S5      UeSnAff = f)zEmbed search docs.r   )tqdmzPackage tqdm must be installed if show_progress_bar=True. Please install with 'pip install tqdm' or set show_progress_bar=False.NzHunyuan Embedding)iterabledesc)r   rR   r1   appendembed_query)rG   rP   
embeddingsrR   e_iterr;   s          r8   embed_documents!HunyuanEmbeddings.embed_documents^   s    
!!% %.ABEEDd..t45    !/ 	s   A 
A+A&&A+c                 $    U R                  U5      $ )zEmbed query text.)rM   rG   r;   s     r8   rV   HunyuanEmbeddings.embed_queryr   s    %%rO   c                 L   #    [        SU R                  U5      I Sh  vN $  N7f)zAsynchronous Embed search docs.N)r
   rZ   )rG   rP   s     r8   aembed_documents"HunyuanEmbeddings.aembed_documentsv   s      $T4+?+?GGGG   $"$c                 L   #    [        SU R                  U5      I Sh  vN $  N7f)zAsynchronous Embed query text.N)r
   rV   r]   s     r8   aembed_queryHunyuanEmbeddings.aembed_queryz   s      $T4+;+;TBBBBrb    )!__name__
__module____qualname____firstlineno____doc__r   r   r   r   __annotations__r   r   r   r   intr   boolr   r   r    r   r   r   r9   strr   floatrM   rZ   rV   r`   rd   __static_attributes__rf   rO   r8   r   r   
   sJ   
 .3d-Sx	*S.3,PT.U+U4BFG01B( $#$S#t#=d3FC3""'d"CK$C0(#'$ '4 ' $'R U (T#Y 4U3D (& &U &HDI H$tE{:K HCs CtE{ CrO   r   )rB   typingr   r   r   r   r   r   langchain_core.embeddingsr	   langchain_core.runnables.configr
   langchain_core.utilsr   r   pydanticr   r   r   r   r   rf   rO   r8   <module>rw      s/     ; ; 0 ; L A ArC
I rCrO   