
    dh                         S SK r S SKJrJrJrJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJrJr  S SKJr  SrS	r\" S
SSS9 " S S\\	5      5       rg)    N)AnyDictListOptional)
deprecated)
Embeddings)get_from_dict_or_env)	BaseModel
ConfigDictmodel_validator)Selfz'sentence-transformers/all-mpnet-base-v2)feature-extractionz0.2.2z1.0z3langchain_huggingface.HuggingFaceEndpointEmbeddings)sinceremovalalternative_importc                   v   \ rS rSr% SrSr\\S'   Sr\\S'   Sr	\
\   \S'    Sr\
\   \S'    Sr\
\   \S	'    Sr\
\   \S
'    Sr\
\   \S'   \" SSS9r\" SS9\S\S\4S j5       5       r\" SS9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rg)HuggingFaceHubEmbeddings   aC  HuggingFaceHub embedding models.

To use, you should have the ``huggingface_hub`` python package installed, and the
environment variable ``HUGGINGFACEHUB_API_TOKEN`` set with your API token, or pass
it as a named parameter to the constructor.

Example:
    .. code-block:: python

        from langchain_community.embeddings import HuggingFaceHubEmbeddings
        model = "sentence-transformers/all-mpnet-base-v2"
        hf = HuggingFaceHubEmbeddings(
            model=model,
            task="feature-extraction",
            huggingfacehub_api_token="my-api-key",
        )
Nclientasync_clientmodelrepo_idr   taskmodel_kwargshuggingfacehub_api_tokenforbid )extraprotected_namespacesbefore)modevaluesreturnc                 <   [        USS5      n SSKJnJn  UR	                  S5      (       a	  US   US'   O1UR	                  S5      (       a	  US   US'   O[
        US'   [
        US'   U" US   US9nU" US   US9nXQS'   XaS	'   U$ ! [         a    [        S
5      ef = f)z?Validate that api key and python package exists in environment.r   HUGGINGFACEHUB_API_TOKENr   )AsyncInferenceClientInferenceClientr   r   )r   tokenr   r   zfCould not import huggingface_hub python package. Please install it with `pip install huggingface_hub`.)r	   huggingface_hubr&   r'   getDEFAULT_MODELImportError)clsr"   r   r&   r'   r   r   s          f/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/huggingface_hub.pyvalidate_environment-HuggingFaceHubEmbeddings.validate_environment5   s     $8.0J$
 	Mzz'""$*7Oy!I&&"("3w"/w$1y!$Wo.F
 0Wo.L
  &8%1>"   	H 	s   A4B Bafterc                 n    U R                   [        ;  a   [        SU R                    S[         S35      eU $ )z#Post init validation for the class.zGot invalid task z, currently only z are supported)r   VALID_TASKS
ValueError)selfs    r.   	post_init"HuggingFaceHubEmbeddings.post_init\   s@     99K'#DII; /""-n>      textsc                    U Vs/ sH  o"R                  SS5      PM     nnU R                  =(       d    0 nU R                  R                  SU0UEU R                  S9n[
        R                  " UR                  5       5      $ s  snf )zCall out to HuggingFaceHub's embedding endpoint for embedding search docs.

Args:
    texts: The list of texts to embed.

Returns:
    List of embeddings, one for each text.

 inputsjsonr   )replacer   r   postr   r?   loadsdecoder5   r9   text_model_kwargs	responsess        r.   embed_documents(HuggingFaceHubEmbeddings.embed_documentsf   s|     6;;UTdC(U;))/RKK$$E3]3$)) % 
	 zz)**,-- <s   Bc                 &  #    U Vs/ sH  o"R                  SS5      PM     nnU R                  =(       d    0 nU R                  R                  XS.U R                  S9I Sh  vN n[
        R                  " UR                  5       5      $ s  snf  N-7f)zAsync Call to HuggingFaceHub's embedding endpoint for embedding search docs.

Args:
    texts: The list of texts to embed.

Returns:
    List of embeddings, one for each text.
r;   r<   )r=   
parametersr>   N)r@   r   r   rA   r   r?   rB   rC   rD   s        r.   aembed_documents)HuggingFaceHubEmbeddings.aembed_documentsx   s      6;;UTdC(U;))/R++00!?dii 1 
 
	 zz)**,-- <
s   BB
A B!B".BrE   c                 0    U R                  U/5      S   nU$ )zCall out to HuggingFaceHub's embedding endpoint for embedding query text.

Args:
    text: The text to embed.

Returns:
    Embeddings for the text.
r   )rH   r5   rE   responses      r.   embed_query$HuggingFaceHubEmbeddings.embed_query   s      ''/2r8   c                 L   #    U R                  U/5      I Sh  vN S   nU$  N	7f)zAsync Call to HuggingFaceHub's embedding endpoint for embedding query text.

Args:
    text: The text to embed.

Returns:
    Embeddings for the text.
Nr   )rL   rO   s      r.   aembed_query%HuggingFaceHubEmbeddings.aembed_query   s+      //77; 8s   $"
$) __name__
__module____qualname____firstlineno____doc__r   r   __annotations__r   r   r   strr   r   r   dictr   r   model_configr   classmethodr   r/   r   r6   r   floatrH   rL   rQ   rT   __static_attributes__r   r8   r.   r   r      s8   $ FCL#E8C=!GXc]!C.D(3-.&#'L(4.'1.2hsm2H2FL(##$ #3 #  $#J '"4  #.T#Y .4U3D .$.DI .$tE{:K ."
 
U 

s 
tE{ 
r8   r   )r?   typingr   r   r   r   langchain_core._apir   langchain_core.embeddingsr   langchain_core.utilsr	   pydanticr
   r   r   typing_extensionsr   r+   r3   r   r   r8   r.   <module>rh      sX     , , * 0 5 ; ; "9% 
L
Ly* L
Lr8   