
    dh(                        S SK Jr  S SKrS SKJrJrJrJrJr  S SK	J
r
  S SKJr  S SKJrJrJr  S SKJr  S SKJrJrJrJrJr  \R2                  " \5      rS	S	S
S.rSS jrSS jr " S S\\
5      rg)    )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-v3DashScopeEmbeddingsc           
         SnSnSn[        S[        U R                  5      [        XUS9[	        [
        5      [        [        [        R                  5      S9$ )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       `/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/dashscope.py_create_retry_decoratorr*      sQ    JKK 
 6 67j{K&y1%fgoo>     c                D   ^  [        T 5      nUSU 4S jj5       nU" S0 UD6$ )z)Use tenacity to retry the embedding call.c                 R  > / nSnU S   n[        U[        5      (       a  [        U5      OSn[        R	                  U S   S5      nX$:  a  [        U[        5      (       a  X2X%-    OUU S'   TR
                  R                  " S0 U D6nUR                  S:X  a  XR                  S   -  nOsUR                  S;   a2  [        S	UR                   S
UR                   SUR                   35      e[        SUR                   S
UR                   SUR                   3US9eX%-  nX$:  a  M  U$ )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_retry+embed_with_retry.<locals>._embed_with_retry0   sD   G_
'1*d'C'CC
O	^^F7OR8
m j$// q~. 7O
 $$))3F3D3&++l33!!Z/ #D$4$4#5 6!YYK}T\\ND 
  89I9I8J K!YYK}T\\ND! 
 OA) m* r+   )r?   r   returnr   r2   )r*   )r%   r?   retry_decoratorrF   s   `   r)   embed_with_retryrJ   ,   s/    -j9O : &v&&r+   c                      \ rS rSr% SrSrS\S'    SrS\S'   SrS	\S
'   Sr	S\S'    \
" SS9r\" SS9\SS j5       5       rSS jrSS jrSrg)r   Q   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                    SS K n [        USS5      US'   US   Ul         SS K nUR                  US'   U$ ! [         a    [	        S5      ef = f)Nr   rN   DASHSCOPE_API_KEYr8   zZCould not import dashscope python package. Please install it with `pip install dashscope`.)	dashscoper
   api_keyTextEmbeddingImportError)clsvaluesrW   s      r)   validate_environment(DashScopeEmbeddings.validate_environmentx   sv     	M&:')<'
"# ##67		(66F8   	B 	s	   6 Ac                `    [        XSU R                  S9nU Vs/ sH  o3S   PM	     nnU$ s  snf )zCall 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rJ   r/   )selftextsr%   itemembedding_lists        r)   embed_documents#DashScopeEmbeddings.embed_documents   s?     &4::

 9CC
{+
C Ds   +c                <    [        XSU R                  S9S   S   nU$ )zCall out to DashScope's embedding endpoint for embedding query text.

Args:
    text: The text to embed.

Returns:
    Embedding for the text.
queryra   r   rc   rd   )re   textrc   s      r)   embed_queryDashScopeEmbeddings.embed_query   s1     %tzz

	 r+   r2   )r\   r   rH   r   )rf   z	List[str]rH   zList[List[float]])rm   rM   rH   zList[float])__name__
__module____qualname____firstlineno____doc__r8   __annotations__r/   rN   r!   r   model_configr   classmethodr]   ri   rn   __static_attributes__r2   r+   r)   r   r   Q   sp    6 FC$E3$'+}+K<L (#  $&r+   )r%   r   rH   zCallable[[Any], Any])r%   r   r?   r   rH   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   	getLoggerrp   r"   r6   r*   rJ   r   r2   r+   r)   <module>r      sj    "   1 5 ; ; )  
		8	$#%BUVW
"'JW)Z Wr+   