Ë
    µŒj   ã                  ó  — d dl mZ d dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZmZ d dlZd dlmZ d dlmZ d dlmZmZ d dlmZmZmZmZ d dlmZmZmZmZ  ej>                  e «      Z!dd
„Z"dd„Z#dd„Z$ eddd¬«       G d„ d	ee«      «       Z%y)é    )ÚannotationsN)ÚAnyÚCallableÚDictÚListÚOptionalÚTupleÚUnionÚcast)Ú
deprecated)Ú
Embeddings)Úconvert_to_secret_strÚget_from_dict_or_env)Ú	BaseModelÚ
ConfigDictÚ	SecretStrÚmodel_validator)Úbefore_sleep_logÚretryÚstop_after_attemptÚwait_exponentialÚVoyageEmbeddingsc           	     óž   — d}d}t        dt        | j                  «      t        d||¬«      t	        t
        t        j                  «      ¬«      S )Né   é
   Té   )Ú
multiplierÚminÚmax)ÚreraiseÚstopÚwaitÚbefore_sleep)r   r   Úmax_retriesr   r   ÚloggerÚloggingÚWARNING)Ú
embeddingsÚmin_secondsÚmax_secondss      úq/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/embeddings/voyageai.pyÚ_create_retry_decoratorr,      sF   € Ø€KØ€Kô ØÜ 
× 6Ñ 6Ó7Ü¨°ÀÔMÜ%¤f¬g¯o©oÓ>ô	ð ó    c                óP   — d| vr!t        dt        j                  | «      › �«      ‚| S )NÚdatazVoyage API Error. Message: )ÚRuntimeErrorÚjsonÚdumps)Úresponses    r+   Ú_check_responser4   ,   s,   € Ø�XÑÜÐ8¼¿¹ÀHÓ9MÐ8NÐOÓPÐPØ€Or-   c                ó:   — t        | «      }|dd„«       } |di |¤ŽS )z)Use tenacity to retry the embedding call.c                 ó^   — t        j                  di | ¤Ž}t        |j                  «       «      S )N© )ÚrequestsÚpostr4   r1   )Úkwargsr3   s     r+   Ú_embed_with_retryz+embed_with_retry.<locals>._embed_with_retry6   s$   € ä—=‘=Ñ* 6Ñ*ˆÜ˜xŸ}™}›Ó/Ð/r-   )r:   r   Úreturnr   r7   )r,   )r(   r:   Úretry_decoratorr;   s       r+   Úembed_with_retryr>   2   s.   € ä-¨jÓ9€Oàò0ó ð0ñ Ñ&˜vÑ&Ð&r-   z0.0.29z1.0z%langchain_voyageai.VoyageAIEmbeddings)ÚsinceÚremovalÚalternative_importc                  ó  — e Zd ZU dZded<   dZded<   dZded<   d	ed
<   	 dZd	ed<   	 dZded<   	 dZ	ded<   	 dZ
ded<   	  ed¬«      Z ed¬«      edd„«       «       Z	 d 	 	 	 	 	 d!d„Z	 	 d"	 	 	 	 	 	 	 d#d„Zd$d„Zd%d„Zddœ	 	 	 	 	 d&d„Zy)'r   aá  Voyage embedding models.

    To use, you should have the environment variable ``VOYAGE_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 VoyageEmbeddings

            voyage = VoyageEmbeddings(voyage_api_key="your-api-key", model="voyage-2")
            text = "This is a test query."
            query_result = voyage.embed_query(text)
    ÚstrÚmodelz&https://api.voyageai.com/v1/embeddingsÚvoyage_api_baseNzOptional[SecretStr]Úvoyage_api_keyÚintÚ
batch_sizeé   r$   z+Optional[Union[float, Tuple[float, float]]]Úrequest_timeoutFÚboolÚshow_progress_barTÚ
truncationÚforbid)ÚextraÚbefore)Úmodec                ó    — t        t        |dd«      «      |d<   d|vrd|d<   t        j                  d«       d|vrd|v r	|d   dv rdnd	|d<   |S )
z?Validate that api key and python package exists in environment.rF   ÚVOYAGE_API_KEYrD   z	voyage-01z•model will become a required arg for VoyageAIEmbeddings, we recommend to specify it when using this class. Currently the default is set to voyage-01.rH   )zvoyage-2z	voyage-02éH   é   )r   r   r%   Úwarning)ÚclsÚvaluess     r+   Úvalidate_environmentz%VoyageEmbeddings.validate_environmentj   s   € ô $9Ü  Ð)9Ð;KÓLó$
ˆÐÑ ð ˜&Ñ Ø)ˆF�7‰OÜ�N‰Nð=ôð ˜vÑ%ð ˜fÑ$¨&°©/Ð=VÑ*Vñ àð �<Ñ ð ˆr-   c                óÈ   — t        t        | j                  «      j                  «       }| j                  dd|› �i| j
                  ||| j                  dœ| j                  dœ}|S )NÚAuthorizationzBearer )rD   ÚinputÚ
input_typerM   )ÚurlÚheadersr1   Útimeout)r   r   rF   Úget_secret_valuerE   rD   rM   rJ   )Úselfr\   r]   Úapi_keyÚparamss        r+   Ú_invocation_paramsz#VoyageEmbeddings._invocation_paramsƒ   si   € ô ”y $×"5Ñ"5Ó6×GÑGÓIˆà×'Ñ'Ø'¨7°7°)Ð)<Ð=àŸ™ØØ(Ø"Ÿo™oñ	ð ×+Ñ+ñ

ˆð ˆr-   c                ó   — g }|€| j                   }| j                  r$	 ddlm}  |t        dt        |«      |«      «      }nt        dt        |«      |«      }|r|dvrt        d|› d�«      ‚|D ]@  }t        | fi | j                  ||||z    |¬«      ¤Ž}	|j                  d„ |	d	   D «       «       ŒB |S # t        $ r}t	        d«      |‚d }~ww xY w)
Nr   )ÚtqdmzgMust have tqdm installed if `show_progress_bar` is set to True. Please install with `pip install tqdm`.)ÚqueryÚdocumentzinput_type z0 is invalid. Options: None, 'query', 'document'.)r\   r]   c              3  ó&   K  — | ]	  }|d    –— Œ y­w)Ú	embeddingNr7   )Ú.0Úrs     r+   Ú	<genexpr>z3VoyageEmbeddings._get_embeddings.<locals>.<genexpr>¹   s   è ø€ ÐGÑ6F°˜a �nÑ6Fùs   ‚r/   )rH   rL   Ú	tqdm.autorg   ÚImportErrorÚrangeÚlenÚ
ValueErrorr>   re   Úextend)
rb   ÚtextsrH   r]   r(   rg   ÚeÚ_iterÚir3   s
             r+   Ú_get_embeddingsz VoyageEmbeddings._get_embeddings”   s
  € ð )+ˆ
àÐØŸ™ˆJà×!Ò!ðÝ*ñ œ˜q¤# e£*¨jÓ9Ó:‰Eä˜!œS ›Z¨Ó4ˆEá˜*Ð,AÑAÜØ˜j˜\ð *ð óð ó
 ˆAÜ'Øñà×)Ñ)Ø  A¨
¡NÐ3À
ð *ó ñˆHð ×ÑÑG°h¸vÒ6FÓGÕGð ð Ðøô3 ò Ü!ð>óð ðûðús   žB3 Â3	CÂ<CÃCc                ó>   — | j                  || j                  d¬«      S )zÌCall out to Voyage Embedding endpoint for embedding search docs.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        ri   ©rH   r]   ©ry   rH   )rb   ru   s     r+   Úembed_documentsz VoyageEmbeddings.embed_documents½   s'   € ð ×#Ñ#Ø˜dŸo™o¸*ð $ó 
ð 	
r-   c                óF   — | j                  |g| j                  d¬«      d   S )z²Call out to Voyage Embedding endpoint for embedding query text.

        Args:
            text: The text to embed.

        Returns:
            Embedding for the text.
        rh   r{   r   r|   )rb   Útexts     r+   Úembed_queryzVoyageEmbeddings.embed_queryÊ   s1   € ð ×#Ñ#ØˆF˜tŸ™¸7ð $ó 
à
ñð 	r-   )r]   c               ó>   — | j                  || j                  |¬«      S )aP  Call out to Voyage Embedding endpoint for embedding general text.

        Args:
            texts: The list of texts to embed.
            input_type: Type of the input text. Default to None, meaning the type is
                unspecified. Other options: query, document.

        Returns:
            Embedding for the text.
        r{   r|   )rb   ru   r]   s      r+   Úembed_general_textsz$VoyageEmbeddings.embed_general_texts×   s'   € ð ×#Ñ#Ø˜dŸo™o¸*ð $ó 
ð 	
r-   )rX   r   r<   r   )N)r\   ú	List[str]r]   úOptional[str]r<   r   )NN)ru   rƒ   rH   zOptional[int]r]   r„   r<   úList[List[float]])ru   rƒ   r<   r…   )r   rC   r<   zList[float])ru   rƒ   r]   r„   r<   r…   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__rE   rF   r$   rJ   rL   rM   r   Úmodel_configr   ÚclassmethodrY   re   ry   r}   r€   r‚   r7   r-   r+   r   r   >   s  … ñð ƒJØC€O�SÓCØ*.€NÐ'Ó.ØƒOØ?Ø€K�ÓØ<ØCG€OÐ@ÓGØ1Ø#Ð�tÓ#ðà€J�Óð@ñ Øô€Lñ ˜(Ô#Øòó ó $ðð0 =AðØðØ,9ðà	óð( %)Ø$(ð	'àð'ð "ð'ð "ð	'ð
 
ó'óR
óð @Dñ
Øð
Ø/<ð
à	ô
r-   )r(   r   r<   zCallable[[Any], Any])r3   Údictr<   r�   )r(   r   r:   r   r<   r   )&Ú
__future__r   r1   r&   Útypingr   r   r   r   r   r	   r
   r   r8   Úlangchain_core._api.deprecationr   Úlangchain_core.embeddingsr   Úlangchain_core.utilsr   r   Úpydanticr   r   r   r   Útenacityr   r   r   r   Ú	getLoggerr†   r%   r,   r4   r>   r   r7   r-   r+   Ú<module>r–      sŒ   ðÝ "ã Û ÷	÷ 	ó 	ó Ý 6Ý 0ß Lß FÓ F÷ó ð 
ˆ×	Ñ	˜8Ó	$€ó
óó	'ñ Ø
ØØ>ôô
c
�y *ó c
óñ
c
r-   