Ë
    µŒ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  eddd	¬
«       G d„ dee«      «       Zy)é    )ÚAnyÚDictÚListÚOptional)Ú
deprecated)Ú
Embeddings)Úget_from_dict_or_env)Ú	BaseModelÚ
ConfigDictÚmodel_validator)Ú_create_retry_decoratorz0.0.30z1.0z!langchain_cohere.CohereEmbeddings)ÚsinceÚremovalÚalternative_importc            	       óÚ  — e Zd ZU dZdZeed<   	 dZeed<   	 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dedefd„Zdedefd„Zddœdee	   dee	   deee      fd„Zddœdee	   dee	   dee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)"ÚCohereEmbeddingsaî  Cohere embedding models.

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

    Example:
        .. code-block:: python

            from langchain_community.embeddings import CohereEmbeddings
            cohere = CohereEmbeddings(
                model="embed-english-light-v3.0",
                cohere_api_key="my-api-key"
            )
    NÚclientÚasync_clientzembed-english-v2.0ÚmodelÚtruncateÚcohere_api_keyé   Úmax_retriesÚrequest_timeoutÚ	langchainÚ
user_agentÚforbid)ÚextraÚbefore)ÚmodeÚvaluesÚreturnc                 óâ   — t        |dd«      }|j                  d«      }	 ddl}|d   }|j                  |||¬«      |d<   |j	                  |||¬«      |d	<   |S # t
        $ r t        d
«      ‚w xY w)z?Validate that api key and python package exists in environment.r   ÚCOHERE_API_KEYr   r   Nr   )ÚtimeoutÚclient_namer   r   zTCould not import cohere python package. Please install it with `pip install cohere`.)r	   ÚgetÚcohereÚClientÚAsyncClientÚImportError)Úclsr!   r   r   r(   r&   s         úo/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/embeddings/cohere.pyÚvalidate_environmentz%CohereEmbeddings.validate_environment8   sª   € ô .ØÐ$Ð&6ó
ˆð !Ÿ*™*Ð%6Ó7ˆð	Ûà  Ñ.ˆKØ%Ÿ}™}ØØ'Ø'ð  -ó  ˆF�8Ñð
 &,×%7Ñ%7ØØ'Ø'ð &8ó &ˆF�>Ñ"ð ˆøô ò 	Üð?óð ð	ús    7A ÁA.Úkwargsc                 ól   ‡ — t        ‰ j                  «      }|dt        dt        fˆ fd„«       } |di |¤ŽS )ú%Use tenacity to retry the embed call.r/   r"   c                  ó<   •—  ‰j                   j                  di | ¤ŽS ©N© )r   Úembed©r/   Úselfs    €r-   Ú_embed_with_retryz<CohereEmbeddings.embed_with_retry.<locals>._embed_with_retryZ   s   ø€ à$�4—;‘;×$Ñ$Ñ. vÑ.Ð.ó    r4   ©r   r   r   ©r7   r/   Úretry_decoratorr8   s   `   r-   Úembed_with_retryz!CohereEmbeddings.embed_with_retryV   sC   ø€ ä1°$×2BÑ2BÓCˆà	ð	/¬ð 	/´ô 	/ó 
ð	/ñ !Ñ* 6Ñ*Ð*r9   c                 ól   ‡ — t        ‰ j                  «      }|dt        dt        fˆ fd„«       } |di |¤ŽS )r1   r/   r"   c               ›   óX   •K  —  ‰j                   j                  di | ¤Žƒ d {  –—† S 7 Œ­wr3   )r   r5   r6   s    €r-   r8   z=CohereEmbeddings.aembed_with_retry.<locals>._embed_with_retryd   s)   øè ø€ à0˜×*Ñ*×0Ñ0Ñ:°6Ñ:×:Ð:Ð:ús   ƒ *£(¤*r4   r:   r;   s   `   r-   Úaembed_with_retryz"CohereEmbeddings.aembed_with_retry`   sC   ø€ ä1°$×2BÑ2BÓCˆà	ð	;¬cð 	;´cô 	;ó 
ð	;ñ !Ñ* 6Ñ*Ð*r9   ©Ú
input_typeÚtextsrB   c          	      óÀ   — | j                  | j                  ||| j                  ¬«      j                  }|D �cg c]  }t	        t        t        |«      «      ‘Œ c}S c c}w ©N)r   rC   rB   r   )r=   r   r   Ú
embeddingsÚlistÚmapÚfloat©r7   rC   rB   rF   Úes        r-   r5   zCohereEmbeddings.embedj   s\   € ð ×*Ñ*Ø—*‘*ØØ!Ø—]‘]ð	 +ó 
÷
 ‰*ð 	ñ .8Ó8©Z¨””Sœ “]Õ#¨ZÑ8Ð8ùÒ8s   ¸ Ac          	   ƒ   óÜ   K  — | j                  | j                  ||| j                  ¬«      ƒ d {  –—† j                  }|D �cg c]  }t	        t        t        |«      «      ‘Œ c}S 7 Œ5c c}w ­wrE   )r@   r   r   rF   rG   rH   rI   rJ   s        r-   ÚaembedzCohereEmbeddings.aembedu   sl   è ø€ ð ×(Ñ(Ø—j‘jØØ%ØŸ™ð	 )ó ÷ ÷ ‰*ð 	ñ .8Ó8©Z¨””Sœ “]Õ#¨ZÑ8Ð8ðúò 9ùs!   ‚-A,¯A%°A,Á A'Á"A,Á'A,c                 ó(   — | j                  |d¬«      S )z«Embed a list of document texts.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        Úsearch_documentrA   ©r5   ©r7   rC   s     r-   Úembed_documentsz CohereEmbeddings.embed_documents‚   s   € ð �z‰z˜%Ð,=ˆzÓ>Ð>r9   c              ƒ   óD   K  — | j                  |d¬«      ƒ d{  –—† S 7 Œ­w)zºAsync call out to Cohere's embedding endpoint.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        rO   rA   N©rM   rQ   s     r-   Úaembed_documentsz!CohereEmbeddings.aembed_documents�   s"   è ø€ ð —[‘[ Ð3D�[ÓE×EÐEÐEús   ‚ ™š Útextc                 ó0   — | j                  |gd¬«      d   S )zœCall out to Cohere's embedding endpoint.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        Úsearch_queryrA   r   rP   ©r7   rV   s     r-   Úembed_queryzCohereEmbeddings.embed_query˜   s   € ð �z‰z˜4˜&¨^ˆzÓ<¸QÑ?Ð?r9   c              ƒ   óL   K  — | j                  |gd¬«      ƒ d{  –—† d   S 7 Œ­w)z¢Async call out to Cohere's embedding endpoint.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        rX   rA   Nr   rT   rY   s     r-   Úaembed_queryzCohereEmbeddings.aembed_query£   s(   è ø€ ð —k‘k 4 &°^�kÓD×DÀaÑHÐHÐDús   ‚$š"›$)!Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__annotations__r   r   Ústrr   r   r   r   Úintr   rI   r   r   Úmodel_configr   Úclassmethodr   r.   r=   r@   r   r5   rM   rR   rU   rZ   r\   r4   r9   r-   r   r      s½  … ñð  €FˆCÓØØ€L�#ÓØØ%€Eˆ3Ó%Øà"€Hˆh�s‰mÓ"ØXà$(€N�H˜S‘MÓ(à€K�ÓØ<Ø'+€O�X˜e‘_Ó+Ø8Ø!€J�Ó!Ø<áØô€Lñ ˜(Ô#Øð¨$ð °3ò ó ó $ðð8+¨ð +°ó +ð+¨#ð +°#ó +ð @Dò	9Ø˜#‘Yð	9Ø/7¸©}ð	9à	ˆd�5‰kÑ	ó	9ð @Dò9Ø˜#‘Yð9Ø/7¸©}ð9à	ˆd�5‰kÑ	ó9ð	? T¨#¡Yð 	?°4¸¸U¹Ñ3Dó 	?ð	F¨D°©Ið 	F¸$¸tÀE¹{Ñ:Kó 	Fð	@ ð 	@¨¨U©ó 	@ð	I sð 	I¨t°E©{ô 	Ir9   r   N)Útypingr   r   r   r   Úlangchain_core._api.deprecationr   Úlangchain_core.embeddingsr   Úlangchain_core.utilsr	   Úpydanticr
   r   r   Úlangchain_community.llms.coherer   r   r4   r9   r-   Ú<module>rl      sN   ðß ,Ó ,å 6Ý 0Ý 5ß ;Ñ ;å Cñ Ø
ØØ:ôô
\I�y *ó \Ióñ
\Ir9   