§
    šŠtjY  ã                   ó¨   — 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dS )é    )Ú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            	       óf  — 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 dS )"Ú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¦  «        }|                     d¦  «        }	 ddl}|d         }|                     |||¬¦  «        |d<   |                     |||¬¦  «        |d	<   n# t
          $ r t          d
¦  «        ‚w xY w|S )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         úc/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/embeddings/cohere.pyÚvalidate_environmentz%CohereEmbeddings.validate_environment8   sÖ   € õ .ØÐ$Ð&6ñ
ô 
ˆð !Ÿ*š*Ð%6Ñ7Ô7ˆð	ØˆMˆMˆMà  Ô.ˆKØ%Ÿ}š}ØØ'Ø'ð  -ñ  ô  ˆF�8Ñð
 &,×%7Ò%7ØØ'Ø'ð &8ñ &ô &ˆF�>Ñ"Ð"øõ
 ð 	ð 	ð 	Ýð?ñô ð ð	øøøð
 ˆs   ¨AA+ Á+BÚkwargsc                 ót   ‡ — 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   sb   ø€ å1°$Ô2BÑCÔCˆà	ð	/­ð 	/µð 	/ð 	/ð 	/ð 	/ð 	/ñ 
Œð	/ð !Ð Ð*Ð* 6Ð*Ð*Ð*r9   c                 ót   ‡ — t          ‰ j        ¦  «        }|dt          dt          fˆ fd„¦   «         } |di |¤ŽS )r1   r/   r"   c               ›   ó8   •K  —  ‰j         j        di | ¤Žƒ d {V —†S r3   )r   r5   r6   s    €r-   r8   z=CohereEmbeddings.aembed_with_retry.<locals>._embed_with_retryd   s5   øè è € à0˜Ô*Ô0Ð:Ð:°6Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:r9   r4   r:   r;   s   `   r-   Úaembed_with_retryz"CohereEmbeddings.aembed_with_retry`   sb   ø€ å1°$Ô2BÑCÔCˆà	ð	;­cð 	;µcð 	;ð 	;ð 	;ð 	;ð 	;ñ 
Œð	;ð !Ð Ð*Ð* 6Ð*Ð*Ð*r9   ©Ú
input_typeÚtextsrB   c                ój   — |                       | j        ||| j        ¬¦  «        j        }d„ |D ¦   «         S )N©r   rC   rB   r   c                 óR   — g | ]$}t          t          t          |¦  «        ¦  «        ‘Œ%S r4   ©ÚlistÚmapÚfloat©Ú.0Úes     r-   ú
<listcomp>z*CohereEmbeddings.embed.<locals>.<listcomp>s   ó(   € Ð8Ð8Ð8¨••S� ‘]”]Ñ#Ô#Ð8Ð8Ð8r9   )r=   r   r   Ú
embeddings©r7   rC   rB   rP   s       r-   r5   zCohereEmbeddings.embedj   sL   € ð ×*Ò*Ø”*ØØ!Ø”]ð	 +ñ 
ô 
ô
 ð 	ð 9Ð8¨ZÐ8Ñ8Ô8Ð8r9   c             ƒ   óz   K  — |                       | j        ||| j        ¬¦  «        ƒ d {V —†j        }d„ |D ¦   «         S )NrE   c                 óR   — g | ]$}t          t          t          |¦  «        ¦  «        ‘Œ%S r4   rG   rK   s     r-   rN   z+CohereEmbeddings.aembed.<locals>.<listcomp>€   rO   r9   )r@   r   r   rP   rQ   s       r-   ÚaembedzCohereEmbeddings.aembedu   sn   è è € ð ×(Ò(Ø”jØØ%Øœð	 )ñ ô ð ð ð ð ð ð ô ð 	ð 9Ð8¨ZÐ8Ñ8Ô8Ð8r9   c                 ó0   — |                       |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              ƒ   ó@   K  — |                       |d¬¦  «        ƒ d{V —†S )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.
        rV   rA   N©rT   rX   s     r-   Úaembed_documentsz!CohereEmbeddings.aembed_documents�   s1   è è € ð —[’[ Ð3D�[ÑEÔEÐEÐEÐEÐEÐEÐEÐEr9   Útextc                 ó>   — |                       |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   rW   ©r7   r]   s     r-   Úembed_queryzCohereEmbeddings.embed_query˜   s!   € ð �zŠz˜4˜&¨^ˆzÑ<Ô<¸QÔ?Ð?r9   c              ƒ   óN   K  — |                       |gd¬¦  «        ƒ d{V —†d         S )z¢Async call out to Cohere's embedding endpoint.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r_   rA   Nr   r[   r`   s     r-   Úaembed_queryzCohereEmbeddings.aembed_query£   s7   è è € ð —k’k 4 &°^�kÑDÔDÐDÐDÐDÐDÐDÐDÀaÔHÐHr9   )!Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__annotations__r   r   Ústrr   r   r   r   Úintr   rJ   r   r   Úmodel_configr   Úclassmethodr   r.   r=   r@   r   r5   rT   rY   r\   ra   rc   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ð 	9ð 	9Ø˜#”Yð	9Ø/7¸¬}ð	9à	ˆd�5ŒkÔ	ð	9ð 	9ð 	9ð 	9ð @Dð9ð 9ð 9Ø˜#”Yð9Ø/7¸¬}ð9à	ˆd�5ŒkÔ	ð9ð 9ð 9ð 9ð	? T¨#¤Yð 	?°4¸¸U¼Ô3Dð 	?ð 	?ð 	?ð 	?ð	F¨D°¬Ið 	F¸$¸tÀE¼{Ô:Kð 	Fð 	Fð 	Fð 	Fð	@ ð 	@¨¨U¬ð 	@ð 	@ð 	@ð 	@ð	I sð 	I¨t°E¬{ð 	Ið 	Ið 	Ið 	Ið 	Ið 	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>rs      s  ðØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;à CÐ CÐ CÐ CÐ CÐ Cð €Ø
ØØ:ðñ ô ð
\Ið \Ið \Ið \Ið \I�y *ñ \Iô \Iñô ð
\Ið \Ið \Ir9   