
    dh+                         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 S\\5      r " S	 S
5      rg)    )AnyDictListOptional)
Embeddingsget_from_dict_or_env)parse)	BaseModel
ConfigDictmodel_validator)SelfGradientEmbeddingsc                   Z   \ rS rSr% Sr\\S'    Sr\\   \S'    Sr	\\   \S'    Sr
\\S'    Sr\\   \S	'    Sr\\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)r      ak  Gradient.ai Embedding models.

GradientLLM is a class to interact with Embedding Models on gradient.ai

To use, set the environment variable ``GRADIENT_ACCESS_TOKEN`` with your
API token and ``GRADIENT_WORKSPACE_ID`` for your gradient workspace,
or alternatively provide them as keywords to the constructor of this class.

Example:
    .. code-block:: python

        from langchain_community.embeddings import GradientEmbeddings
        GradientEmbeddings(
            model="bge-large",
            gradient_workspace_id="12345614fc0_workspace",
            gradient_access_token="gradientai-access_token",
        )
modelNgradient_workspace_idgradient_access_tokenhttps://api.gradient.ai/apigradient_api_urlquery_prompt_for_retrievalclientforbid)extrabefore)modevaluesreturnc                 d    [        USS5      US'   [        USS5      US'   [        USSSS9US'   U$ )	z?Validate that api key and python package exists in environment.r   GRADIENT_ACCESS_TOKENr   GRADIENT_WORKSPACE_IDr   GRADIENT_API_URLr   )defaultr   )clsr   s     b/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/gradient_ai.pyvalidate_environment'GradientEmbeddings.validate_environment:   s]    
 +?+-D+
&' +?+-D+
&' &:1	&
!"     afterc                 6    SS K n[        UR                  5      [        S5      :  a  [        S5      eUR	                  U R
                  U R                  U R                  S9nUR                  U R                  S9U l
        U $ ! [         a    [        S5      ef = f)Nr   zAGradientEmbeddings requires `pip install -U "gradientai>=1.4.0"`.z1.4.0)access_tokenworkspace_idhost)slug)
gradientaiImportErrorr
   __version__Gradientr   r   r   get_embeddings_modelr   r   )selfr/   gradients      r%   	post_initGradientEmbeddings.post_initN   s    	 ''(5>9S  &&3333&& ' 

 333D!  	S 	s   B Btextsc                     U Vs/ sH  nSU0PM	     nnU R                   R                  US9R                  nU Vs/ sH  oUR                  PM     sn$ s  snf s  snf )zCall out to Gradient's embedding endpoint.

Args:
    texts: The list of texts to embed.

Returns:
    List of embeddings, one for each text.
inputinputs)r   embed
embeddings	embeddingr4   r8   textr<   resultes         r%   embed_documents"GradientEmbeddings.embed_documentsd   sZ     /44ed7D/e4""&"1<<%+,VV,,	 5 -s
   AAc                    #    U Vs/ sH  nSU0PM	     nnU R                   R                  US9I Sh  vN R                  nU Vs/ sH  oUR                  PM     sn$ s  snf  N.s  snf 7f)zAsync call out to Gradient's embedding endpoint.

Args:
    texts: The list of texts to embed.

Returns:
    List of embeddings, one for each text.
r:   r;   N)r   aembedr>   r?   r@   s         r%   aembed_documents#GradientEmbeddings.aembed_documentss   sa      /44ed7D/e4**&*99EE%+,VV,,	 59,s+   A(AA(A!A(A#	A(#A(rA   c                 t    U R                   (       a  U R                    SU 3OUnU R                  U/5      S   $ )zvCall out to Gradient's embedding endpoint.

Args:
    text: The text to embed.

Returns:
    Embeddings for the text.
 r   )r   rD   )r4   rA   querys      r%   embed_queryGradientEmbeddings.embed_query   sF     .. ../q7 	
 ##UG,Q//r(   c                    #    U R                   (       a  U R                    SU 3OUnU R                  U/5      I Sh  vN nUS   $  N	7f)z|Async call out to Gradient's embedding endpoint.

Args:
    text: The text to embed.

Returns:
    Embeddings for the text.
rK   Nr   )r   rH   )r4   rA   rL   r>   s       r%   aembed_queryGradientEmbeddings.aembed_query   sU      .. ../q7 	
  00%99
!} :s   :AA
A)r   )__name__
__module____qualname____firstlineno____doc__str__annotations__r   r   r   r   r   r   r   r   model_configr   classmethodr   r&   r   r6   r   floatrD   rH   rM   rP   __static_attributes__ r(   r%   r   r      s2   & J&+/8C=/*+/8C=/
 :c9044FC L (#$ 3   $$ '"4  #*-T#Y -4U3D --DI -$tE{:K -0 0U 0 s tE{ r(   c                   .    \ rS rSrSrS\S\SS4S jrSrg)	 TinyAsyncGradientEmbeddingClient   zDeprecated, TinyAsyncGradientEmbeddingClient was removed.

This class is just for backwards compatibility with older versions
of langchain_community.
It might be entirely removed in the future.
argskwargsr   Nc                     [        S5      e)Nz8Deprecated,TinyAsyncGradientEmbeddingClient was removed.)
ValueError)r4   ra   rb   s      r%   __init__)TinyAsyncGradientEmbeddingClient.__init__   s    STTr(   r]   )rR   rS   rT   rU   rV   r   re   r\   r]   r(   r%   r_   r_      s%    Uc US UT Ur(   r_   N)typingr   r   r   r   langchain_core.embeddingsr   langchain_core.utilsr	   packaging.versionr
   pydanticr   r   r   typing_extensionsr   __all__r   r_   r]   r(   r%   <module>rn      sB    , , 0 5 # ; ; "
 UJ Up	U 	Ur(   