Ë
    µŒjU  ã                  óâ   — d dl mZ d dlZd dlmZmZmZmZ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 dlmZmZmZmZmZ  ej2                  e«      Zd	d	d
d
dœZdd„Zdd„Z G d„ dee
«      Zy)é    )ÚannotationsN)ÚAnyÚCallableÚDictÚListÚOptional)Ú
Embeddings)Úget_from_dict_or_env)Ú	BaseModelÚ
ConfigDictÚmodel_validator)Ú	HTTPError)Úbefore_sleep_logÚretryÚretry_if_exception_typeÚstop_after_attemptÚwait_exponentialé   é
   )útext-embedding-v1ztext-embedding-v2ztext-embedding-v3ztext-embedding-v4ÚDashScopeEmbeddingsc           
     ó¾   — d}d}d}t        dt        | j                  «      t        |||¬«      t	        t
        «      t        t        t        j                  «      ¬«      S )Né   é   T)ÚminÚmax)ÚreraiseÚstopÚwaitr   Úbefore_sleep)
r   r   Úmax_retriesr   r   r   r   ÚloggerÚloggingÚWARNING)Ú
embeddingsÚ
multiplierÚmin_secondsÚmax_secondss       úr/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/embeddings/dashscope.pyÚ_create_retry_decoratorr*   "   sS   € Ø€JØ€KØ€Kô ØÜ 
× 6Ñ 6Ó7Ü˜j¨k¸{ÔKÜ&¤yÓ1Ü%¤f¬g¯o©oÓ>ôð ó    c                ó@   ‡ — t        ‰ «      }|dˆ fd„«       } |di |¤ŽS )z)Use tenacity to retry the embedding call.c                 óD  •— g }d}| d   }t        |t        «      rt        |«      nd}t        j	                  | d   d«      }||k  rÚt        |t        «      r||||z    n|| d<    ‰j
                  j                  di | ¤Ž}|j                  dk(  r||j                  d   z  }nt|j                  dv r2t        d	|j                  › d
|j                  › d|j                  › �«      ‚t        d|j                  › d
|j                  › d|j                  › �|¬«      ‚||z  }||k  rŒÚ|S )Nr   Úinputr   Úmodelr   éÈ   r%   )i�  i‘  zstatus_code: z	 
 code: z 
 message: z"HTTP error occurred: status_code: )Úresponse© )Ú
isinstanceÚlistÚlenÚ
BATCH_SIZEÚgetÚclientÚcallÚstatus_codeÚoutputÚ
ValueErrorÚcodeÚmessager   )ÚkwargsÚresultÚiÚ
input_dataÚ	input_lenÚ
batch_sizeÚrespr%   s          €r)   Ú_embed_with_retryz+embed_with_retry.<locals>._embed_with_retry5   sL  ø€ àˆØˆØ˜G‘_ˆ
Ü'1°*¼dÔ'C”C˜
”OÈˆ	Ü—^‘^ F¨7¡O°RÓ8ˆ
Ø�)Šmô ˜j¬$Ô/ð ˜1˜q :™~Ñ.àð �7‰Oð
 *�:×$Ñ$×)Ñ)Ñ3¨FÑ3ˆDØ×Ñ 3Ò&Ø˜$Ÿ+™+ lÑ3Ñ3‘Ø×!Ñ! ZÑ/Ü Ø# D×$4Ñ$4Ð#5ð 6Ø!ŸY™Y˜K }°T·\±\°NðDóð ô
  Ø8¸×9IÑ9IÐ8Jð KØ!ŸY™Y˜K }°T·\±\°NðDà!ôð ð
 �‰OˆAð) �)‹mð* ˆr+   )r?   r   Úreturnr   r2   )r*   )r%   r?   Úretry_decoratorrF   s   `   r)   Úembed_with_retryrI   1   s/   ø€ ä-¨jÓ9€Oàôó ðñ: Ñ&˜vÑ&Ð&r+   c                  óš   — e Zd ZU dZ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„Zdd„Zy)r   a`  DashScope embedding models.

    To use, you should have the ``dashscope`` python package installed, and the
    environment variable ``DASHSCOPE_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 DashScopeEmbeddings
            embeddings = DashScopeEmbeddings(dashscope_api_key="my-api-key")

    Example:
        .. code-block:: python

            import os
            os.environ["DASHSCOPE_API_KEY"] = "your DashScope API KEY"

            from langchain_community.embeddings.dashscope import DashScopeEmbeddings
            embeddings = DashScopeEmbeddings(
                model="text-embedding-v1",
            )
            text = "This is a test query."
            query_result = embeddings.embed_query(text)

    Nr   r8   r   Ústrr/   zOptional[str]Údashscope_api_keyé   Úintr!   Úforbid)ÚextraÚbefore)Úmodec                óœ   — dd l }	 t        |dd«      |d<   |d   |_        	 dd l }|j                  |d<   |S # t        $ r t	        d«      ‚w xY w)Nr   rL   ÚDASHSCOPE_API_KEYr8   zZCould not import dashscope python package. Please install it with `pip install dashscope`.)Ú	dashscoper
   Úapi_keyÚTextEmbeddingÚImportError)ÚclsÚvaluesrU   s      r)   Úvalidate_environmentz(DashScopeEmbeddings.validate_environment}   sv   € ó 	àMÜ&:ØÐ'Ð)<ó'
ˆÐ"Ñ#ð #Ð#6Ñ7ˆ	Ôð	Ûà(×6Ñ6ˆF�8Ñð ˆøô ò 	ÜðBóð ð	ús	   ¡6 ¶Ac                óf   — t        | |d| j                  ¬«      }|D �cg c]  }|d   ‘Œ	 }}|S c c}w )zÑCall out to DashScope's embedding endpoint for embedding search docs.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        Údocument©r.   Ú	text_typer/   Ú	embedding©rI   r/   )ÚselfÚtextsr%   ÚitemÚembedding_lists        r)   Úembed_documentsz#DashScopeEmbeddings.embed_documents’   sC   € ô &Ø˜¨¸4¿:¹:ô
ˆ
ñ 9CÓC¹
°˜$˜{Ó+¸
ˆÐCØÐùò Ds   ž.c                óD   — t        | |d| j                  ¬«      d   d   }|S )z·Call out to DashScope's embedding endpoint for embedding query text.

        Args:
            text: The text to embed.

        Returns:
            Embedding for the text.
        Úqueryr^   r   r`   ra   )rb   Útextr`   s      r)   Úembed_queryzDashScopeEmbeddings.embed_query¡   s3   € ô %Ø˜¨°t·z±zô
à
ñàñˆ	ð Ðr+   )rZ   r   rG   r   )rc   z	List[str]rG   zList[List[float]])ri   rK   rG   zList[float])Ú__name__Ú
__module__Ú__qualname__Ú__doc__r8   Ú__annotations__r/   rL   r!   r   Úmodel_configr   Úclassmethodr[   rf   rj   r2   r+   r)   r   r   V   sp   … ñð6 €FˆCÓØØ$€Eˆ3Ó$Ø'+Ð�}Ó+Ø€K�ÓØ<áØô€Lñ ˜(Ô#Øòó ó $ðó&ôr+   )r%   r   rG   zCallable[[Any], Any])r%   r   r?   r   rG   r   ) Ú
__future__r   r#   Útypingr   r   r   r   r   Úlangchain_core.embeddingsr	   Úlangchain_core.utilsr
   Úpydanticr   r   r   Úrequests.exceptionsr   Útenacityr   r   r   r   r   Ú	getLoggerrk   r"   r6   r*   rI   r   r2   r+   r)   Ú<module>rz      st   ðÝ "ã ÷õ õ 1Ý 5ß ;Ñ ;Ý )÷õ ð 
ˆ×	Ñ	˜8Ó	$€ð ØØØñ	€
óó"'ôJW˜) Zõ Wr+   