Ë
    µŒj+  ã                   ó’   — 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y)é    )ÚAnyÚDictÚListÚOptional)Ú
Embeddings©Úget_from_dict_or_env)Úparse)Ú	BaseModelÚ
ConfigDictÚmodel_validator)ÚSelfÚGradientEmbeddingsc                   óX  — 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y)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                 ój   — 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     út/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/embeddings/gradient_ai.pyÚvalidate_environmentz'GradientEmbeddings.validate_environment:   s]   € ô
 +?ØÐ+Ð-Dó+
ˆÐ&Ñ'ô +?ØÐ+Ð-Dó+
ˆÐ&Ñ'ô &:ØØØØ1ô	&
ˆÐ!Ñ"ð ˆó    Úafterc                 ó>  — 	 dd l }t        |j                  «      t        d«      k  rt        d«      ‚|j	                  | j
                  | j                  | j                  ¬«      }|j                  | j                  ¬«      | _
        | S # t        $ r t        d«      ‚w xY w)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¦   € ð	Ûô �×'Ñ'Ó(¬5°«>Ò9ÜØSóð ð ×&Ñ&Ø×3Ñ3Ø×3Ñ3Ø×&Ñ&ð 'ó 
ˆð
 ×3Ñ3¸¿¹Ð3ÓDˆŒØˆøô! ò 	ÜØSóð ð	ús   ‚B ÂBÚtextsc                 ó¸   — |D �cg c]  }d|i‘Œ }}| j                   j                  |¬«      j                  }|D �cg c]  }|j                  ‘Œ c}S c c}w c c}w )z¶Call 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©r2   r5   Útextr9   ÚresultÚes         r$   Úembed_documentsz"GradientEmbeddings.embed_documentsd   s\   € ñ /4Ó4©e d�7˜D’/¨eˆÐ4à—‘×"Ñ"¨&Ð"Ó1×<Ñ<ˆá%+Ó,¡V �—“ VÑ,Ð,ùò	 5ùò -s
   …A¼Ac              ƒ   óÔ   K  — |D �cg c]  }d|i‘Œ }}| j                   j                  |¬«      ƒ d{  –—† j                  }|D �cg c]  }|j                  ‘Œ c}S c c}w 7 Œ-c c}w ­w)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.
        r7   r8   N)r   Úaembedr;   r<   r=   s         r$   Úaembed_documentsz#GradientEmbeddings.aembed_documentss   sd   è ø€ ñ /4Ó4©e d�7˜D’/¨eˆÐ4àŸ™×*Ñ*°&Ð*Ó9×9×EÑEˆá%+Ó,¡V �—“ VÑ,Ð,ùò	 5à9úâ,ùs+   ‚A(‡A’!A(³A!´A(ÁA#Á	A(Á#A(r>   c                 ój   — | j                   r| j                   › d|› �n|}| j                  |g«      d   S )zžCall out to Gradient's embedding endpoint.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        Ú r   )r   rA   )r2   r>   Úquerys      r$   Úembed_queryzGradientEmbeddings.embed_query‚   sF   € ð ×.Ò.ð ×.Ñ.Ð/¨q°°Ñ7àð 	ð
 ×#Ñ# U GÓ,¨QÑ/Ð/r&   c              ƒ   óŠ   K  — | j                   r| j                   › d|› �n|}| j                  |g«      ƒ d{  –—† }|d   S 7 Œ	­w)z¤Async call out to Gradient's embedding endpoint.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        rF   Nr   )r   rD   )r2   r>   rG   r;   s       r$   Úaembed_queryzGradientEmbeddings.aembed_query’   sV   è ø€ ð ×.Ò.ð ×.Ñ.Ð/¨q°°Ñ7àð 	ð
  ×0Ñ0°%°Ó9×9ˆ
Ø˜!‰}Ðð :ús   ‚5A·A¸
A)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__r   r   r   r   r   r   r   r   Úmodel_configr   Úclassmethodr   r%   r   r4   r   ÚfloatrA   rD   rH   rJ   © r&   r$   r   r      s2  … ñð& ƒJØ&à+/Ð˜8 C™=Ó/Ø*à+/Ð˜8 C™=Ó/ðð
 :Ð�cÓ9Øà04Ð ¨¡Ó4Øà€FˆCÓØñ Øô€Lñ ˜(Ô#Øð¨$ð °3ò ó ó $ðñ$ ˜'Ô"ð˜4ò ó #ðð*- T¨#¡Yð -°4¸¸U¹Ñ3Dó -ð-¨D°©Ið -¸$¸tÀE¹{Ñ:Kó -ð0 ð 0¨¨U©ó 0ð  sð ¨t°E©{ô r&   c                   ó$   — e Zd ZdZdededdfd„Zy)Ú 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.
    ÚargsÚkwargsr   Nc                 ó   — t        d«      ‚)Nz8Deprecated,TinyAsyncGradientEmbeddingClient was removed.)Ú
ValueError)r2   rW   rX   s      r$   Ú__init__z)TinyAsyncGradientEmbeddingClient.__init__¬   s   € ÜÐSÓTÐTr&   )rK   rL   rM   rN   r   r[   rT   r&   r$   rV   rV   ¤   s%   „ ñðU˜cð U¨Sð U°Tô Ur&   rV   N)Útypingr   r   r   r   Úlangchain_core.embeddingsr   Úlangchain_core.utilsr	   Úpackaging.versionr
   Úpydanticr   r   r   Útyping_extensionsr   Ú__all__r   rV   rT   r&   r$   Ú<module>rc      sB   ðß ,Ó ,å 0Ý 5Ý #ß ;Ñ ;Ý "àÐ
 €ôU˜ Jô U÷p	Uò 	Ur&   