
    NgA                         d dl mZmZmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZmZ d dlmZ dgZ G d dee          Z G d	 d
          ZdS )    )AnyDictListOptional)
Embeddingsget_from_dict_or_env)parse)	BaseModel
ConfigDictmodel_validator)SelfGradientEmbeddingsc                      e Zd ZU dZeed<   	 dZee         ed<   	 dZee         ed<   	 dZ	eed<   	 dZ
ee         ed<   	 dZeed	<   	  ed
          Z ed          ededefd                        Z ed          defd            Zdee         deee                  fdZdee         deee                  fdZdedee         fdZdedee         fdZdS )r   a  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                     t          |dd          |d<   t          |dd          |d<   t          |ddd          |d<   |S )	z?Validate that api key and python package exists in environment.r   GRADIENT_ACCESS_TOKENr   GRADIENT_WORKSPACE_IDr   GRADIENT_API_URLr   )defaultr   )clsr   s     f/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/embeddings/gradient_ai.pyvalidate_environmentz'GradientEmbeddings.validate_environment:   sq    
 +?+-D+
 +
&' +?+-D+
 +
&' &:1	&
 &
 &
!"     afterc                 B   	 dd l }n# t          $ r t          d          w xY wt          |j                  t          d          k     rt          d          |                    | j        | j        | j                  }|                    | j	                  | _
        | S )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_initzGradientEmbeddings.post_initN   s    	 	 	 	S  	
 '((5>>99S   &&33& ' 
 

 333DDs    !textsc                 r    d |D             }| j                             |          j        }d |D             S )zCall out to Gradient's embedding endpoint.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        c                     g | ]}d |iS input .0texts     r$   
<listcomp>z6GradientEmbeddings.embed_documents.<locals>.<listcomp>m       444d7D/444r&   inputsc                     g | ]	}|j         
S r:   	embeddingr<   es     r$   r>   z6GradientEmbeddings.embed_documents.<locals>.<listcomp>q       ,,,,,,r&   )r   embed
embeddingsr2   r5   rA   results       r$   embed_documentsz"GradientEmbeddings.embed_documentsd   sF     54e444""&"11<,,V,,,,r&   c                    K   d |D             }| j                             |           d{V j        }d |D             S )zAsync call out to Gradient's embedding endpoint.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        c                     g | ]}d |iS r8   r:   r;   s     r$   r>   z7GradientEmbeddings.aembed_documents.<locals>.<listcomp>|   r?   r&   r@   Nc                     g | ]	}|j         
S r:   rC   rE   s     r$   r>   z7GradientEmbeddings.aembed_documents.<locals>.<listcomp>   rG   r&   )r   aembedrI   rJ   s       r$   aembed_documentsz#GradientEmbeddings.aembed_documentss   s\       54e444**&*99999999E,,V,,,,r&   r=   c                 d    | j         r| j          d| n|}|                     |g          d         S )zCall out to Gradient's embedding endpoint.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
         r   )r   rL   )r2   r=   querys      r$   embed_queryzGradientEmbeddings.embed_query   sJ     .t.77777 	
 ##UG,,Q//r&   c                 x   K   | j         r| j          d| n|}|                     |g           d{V }|d         S )zAsync call out to Gradient's embedding endpoint.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        rS   Nr   )r   rQ   )r2   r=   rT   rI   s       r$   aembed_queryzGradientEmbeddings.aembed_query   sd       .t.77777 	
  00%99999999
!}r&   )__name__
__module____qualname____doc__str__annotations__r   r   r   r   r   r   r   r   model_configr   classmethodr   r%   r   r4   r   floatrL   rQ   rU   rW   r:   r&   r$   r   r      s         & JJJ&+/8C=///*+/8C=///
 :c99904444FC :  L _(###$ 3    [ $#$ _'"""4    #"*-T#Y -4U3D - - - --DI -$tE{:K - - - -0 0U 0 0 0 0 s tE{      r&   c                       e Zd ZdZddZdS ) TinyAsyncGradientEmbeddingClientzDeprecated, TinyAsyncGradientEmbeddingClient was removed.

    This class is just for backwards compatibility with older versions
    of langchain_community.
    It might be entirely removed in the future.
    r   Nc                      t          d          )Nz8Deprecated,TinyAsyncGradientEmbeddingClient was removed.)
ValueError)r2   argskwargss      r$   __init__z)TinyAsyncGradientEmbeddingClient.__init__   s    STTTr&   )r   N)rX   rY   rZ   r[   rg   r:   r&   r$   rb   rb      s8         U U U U U Ur&   rb   N)typingr   r   r   r   langchain_core.embeddingsr   langchain_core.utilsr	   packaging.versionr
   pydanticr   r   r   typing_extensionsr   __all__r   rb   r:   r&   r$   <module>ro      s   , , , , , , , , , , , , 0 0 0 0 0 0 5 5 5 5 5 5 # # # # # # ; ; ; ; ; ; ; ; ; ; " " " " " "
 U U U U UJ U U Up	U 	U 	U 	U 	U 	U 	U 	U 	U 	Ur&   