§
    æ˜ºhš  ã                   ó”   — d dl mZmZmZmZ d dlmZ d dlmZm	Z	m
Z
 d dl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)Ú	BaseModelÚExtraÚroot_validator)Úget_from_dict_or_env)ÚparseÚ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	<   	  G d
„ d¦  «        Z ed¬¦  «        de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_tokenzhttps://api.gradient.ai/apiÚgradient_api_urlÚquery_prompt_for_retrievalÚclientc                   ó    — e Zd ZdZej        ZdS )úGradientEmbeddings.Configz'Configuration for this pydantic object.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   ÚforbidÚextra© ó    úr/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/embeddings/gradient_ai.pyÚConfigr   5   s   € € € € € Ø5Ð5à”ˆˆˆr   r    T)Úallow_reuseÚvaluesÚreturnc                 ó¾  — t          |dd¦  «        |d<   t          |dd¦  «        |d<   t          |dd¦  «        |d<   	 ddl}n# t          $ r t          d	¦  «        ‚w xY wt          |j        ¦  «        t          d
¦  «        k     rt          d	¦  «        ‚|                     |d         |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   NzAGradientEmbeddings requires `pip install -U "gradientai>=1.4.0"`.z1.4.0)Úaccess_tokenÚworkspace_idÚhostr   )Úslugr   )r   Ú
gradientaiÚImportErrorr   Ú__version__ÚGradientÚget_embeddings_model)Úclsr"   r,   Úgradients       r   Úvalidate_environmentz'GradientEmbeddings.validate_environment:   s6  € õ +?ØÐ+Ð-Dñ+
ô +
ˆÐ&Ñ'õ +?ØÐ+Ð-Dñ+
ô +
ˆÐ&Ñ'õ &:ØÐ&Ð(:ñ&
ô &
ˆÐ!Ñ"ð	ØÐÐÐÐøÝð 	ð 	ð 	ÝØSñô ð ð	øøøõ
 �Ô'Ñ(Ô(­5°©>¬>Ò9Ð9ÝØSñô ð ð ×&Ò&ØÐ 7Ô8ØÐ 7Ô8ØÐ*Ô+ð 'ñ 
ô 
ˆð
 $×8Ò8¸fÀW¼oÐ8ÑNÔNˆˆxÑàˆs   ¾A ÁAÚtextsc                 ór   — d„ |D ¦   «         }| j                              |¬¦  «        j        }d„ |D ¦   «         S )z¶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 ©Úinputr   ©Ú.0Útexts     r   ú
<listcomp>z6GradientEmbeddings.embed_documents.<locals>.<listcomp>f   ó   € Ð4Ð4Ð4 d�7˜D�/Ð4Ð4Ð4r   ©Úinputsc                 ó   — g | ]	}|j         ‘Œ
S r   ©Ú	embedding©r:   Úes     r   r<   z6GradientEmbeddings.embed_documents.<locals>.<listcomp>j   ó   € Ð,Ð,Ð, �”Ð,Ð,Ð,r   )r   ÚembedÚ
embeddings©Úselfr4   r?   Úresults       r   Úembed_documentsz"GradientEmbeddings.embed_documents]   sF   € ð 5Ð4¨eÐ4Ñ4Ô4ˆà”×"Ò"¨&Ð"Ñ1Ô1Ô<ˆà,Ð, VÐ,Ñ,Ô,Ð,r   c              ƒ   ó‚   K  — d„ |D ¦   «         }| j                              |¬¦  «        ƒ d{V —†j        }d„ |D ¦   «         S )z¼Async 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 r7   r   r9   s     r   r<   z7GradientEmbeddings.aembed_documents.<locals>.<listcomp>u   r=   r   r>   Nc                 ó   — g | ]	}|j         ‘Œ
S r   rA   rC   s     r   r<   z7GradientEmbeddings.aembed_documents.<locals>.<listcomp>y   rE   r   )r   ÚaembedrG   rH   s       r   Úaembed_documentsz#GradientEmbeddings.aembed_documentsl   s\   è è € ð 5Ð4¨eÐ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 )zžCall out to Gradient's embedding endpoint.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        ú r   )r   rK   )rI   r;   Úquerys      r   Úembed_queryzGradientEmbeddings.embed_query{   sJ   € ð Ô.ðˆtÔ.Ð7Ð7°Ð7Ð7Ð7àð 	ð
 ×#Ò# U GÑ,Ô,¨QÔ/Ð/r   c              ƒ   óx   K  — | j         r| j         › d|› �n|}|                      |g¦  «        ƒ d{V —†}|d         S )z¤Async call out to Gradient's embedding endpoint.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        rR   Nr   )r   rP   )rI   r;   rS   rG   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   )r   r   r   r   ÚstrÚ__annotations__r   r   r   r   r   r   r   r    r
   r   r3   r   ÚfloatrK   rP   rT   rV   r   r   r   r   r      s°  € € € € € € ðð ð& €J€J�JØ&à+/Ð˜8 Cœ=Ð/Ð/Ñ/Ø*à+/Ð˜8 Cœ=Ð/Ð/Ñ/ðð
 :Ð�cÐ9Ð9Ñ9Øà04Ð ¨¤Ð4Ð4Ñ4Øà€FˆCÐÐÑØðð ð ð ð ñ ô ð ð
 €^ Ð%Ñ%Ô%ð ¨$ð  °4ð  ð  ð  ñ &Ô%ð ðD- T¨#¤Yð -°4¸¸U¼Ô3Dð -ð -ð -ð -ð-¨D°¬Ið -¸$¸tÀE¼{Ô:Kð -ð -ð -ð -ð0 ð 0¨¨U¬ð 0ð 0ð 0ð 0ð  sð ¨t°E¬{ð ð ð ð ð ð r   c                   ó   — e Zd ZdZdd„ZdS )Ú TinyAsyncGradientEmbeddingClientzÒDeprecated, 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)rI   ÚargsÚkwargss      r   Ú__init__z)TinyAsyncGradientEmbeddingClient.__init__¥   s   € ÝÐSÑTÔTÐTr   )r#   N)r   r   r   r   r`   r   r   r   r[   r[   �   s8   € € € € € ðð ðUð Uð Uð Uð Uð Ur   r[   N)Útypingr   r   r   r   Úlangchain_core.embeddingsr   Úlangchain_core.pydantic_v1r   r	   r
   Úlangchain_core.utilsr   Úpackaging.versionr   Ú__all__r   r[   r   r   r   ú<module>rg      sö   ðØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø #Ð #Ð #Ð #Ð #Ð #àÐ
 €ðOð Oð Oð Oð O˜ Jñ Oô Oð Oðd	Uð 	Uð 	Uð 	Uð 	Uñ 	Uô 	Uð 	Uð 	Uð 	Ur   