
    dh                         S SK r S SKrS SKrS SKJrJrJr  S SKrS SKJ	r	  S SK
Jr  S SKJr  S SKJrJr  S SKJrJr  \R(                  " \5      r\	" SS	S
9 " S S\\5      5       rg)    N)DictListOptional)
deprecated)
Embeddings)run_in_executor)get_from_dict_or_envpre_init)	BaseModel
ConfigDictz0.0.13z8langchain_community.embeddings.QianfanEmbeddingsEndpoint)sincealternativec                   d   \ rS rSr% SrSr\\   \S'   Sr	\\   \S'   Sr
\\   \S'   Sr\\   \S'   Sr\\S'   S	r\\S
'   \R                   " 5       r\" SS9r\S\S\4S j5       rS\S\4S jrSS jrS\\   S\\\      4S jrS\S\\   4S jrS\S\\   4S jrS\\   S\\\      4S jr Sr!g)ErnieEmbeddings   z'`Ernie Embeddings V1` embedding models.Nernie_api_baseernie_client_idernie_client_secretaccess_token
chunk_sizezErnieBot-Embedding-V1
model_name )protected_namespacesvaluesreturnc                 h    [        USSS5      US'   [        USS5      US'   [        USS5      US'   U$ )Nr   ERNIE_API_BASEzhttps://aip.baidubce.comr   ERNIE_CLIENT_IDr   ERNIE_CLIENT_SECRET)r	   )clsr   s     \/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/ernie.pyvalidate_environment$ErnieEmbeddings.validate_environment$   s[    #7$&68R$
  %9%
 !
 )=!!)
$%
     jsonc                     U R                    S3n[        R                  " U S3SS0SU R                  0US9nUR	                  5       $ )Nz//rpc/2.0/ai_custom/v1/wenxinworkshop/embeddingsz/embedding-v1Content-Typeapplication/jsonr   )headersparamsr%   )r   requestspostr   r%   )selfr%   base_urlresps       r!   
_embeddingErnieEmbeddings._embedding5   s_    ""##RS 	 }}j& 2 #D$5$56
 yy{r$   c           	      T   U R                      [        R                  S5        U R                   S3n[        R
                  " USSS.SU R                  U R                  S.S9n[        UR                  5       R                  S5      5      U l        S S S 5        g ! , (       d  f       g = f)	NzRefreshing access tokenz/oauth/2.0/tokenr(   )r'   Acceptclient_credentials)
grant_type	client_idclient_secret)r)   r*   r   )_lockloggerdebugr   r+   r,   r   r   strr%   getr   )r-   r.   r/   s      r!   _refresh_access_token_with_lock/ErnieEmbeddings._refresh_access_token_with_lockC   s    ZZLL23#2233CDH==$60
 #7!%!5!5%)%=%=D !$DIIKOON$C DD ZZs   BB
B'textsc                 h   U R                   (       d  U R                  5         [        S[        U5      U R                  5       Vs/ sH  nXX R                  -    PM     nn/ nU H  nU R                  SU Vs/ sH  ofPM     sn05      nUR                  S5      (       aV  UR                  S5      S:X  a3  U R                  5         U R                  SU Vs/ sH  ofPM     sn05      nO[        SU 35      eUR                  US    Vs/ sH  o"S   PM	     sn5        M     U$ s  snf s  snf s  snf s  snf )zEmbed search docs.

Args:
    texts: The list of texts to embed

Returns:
    List[List[float]]: List of embeddings, one for each text.
r   input
error_codeo   Error from Ernie: data	embedding)	r   r=   rangelenr   r0   r<   
ValueErrorextend)r-   r?   itext_in_chunkslstchunktextr/   s           r!   embed_documentsErnieEmbeddings.embed_documentsU   s*      002 1c%j$//:
: a//)*: 	 
 #E??Gu-Eutdu-E#FGDxx%%88L)S088:??Gu5Mutdu5M+NOD$'9$%@AAJJV=1+=> $ 

 .F 6N >s   D 6
D%
D*D/
rO   c                 >   U R                   (       d  U R                  5         U R                  SU/05      nUR                  S5      (       aH  UR                  S5      S:X  a%  U R                  5         U R                  SU/05      nO[	        SU 35      eUS   S   S   $ )zjEmbed query text.

Args:
    text: The text to embed.

Returns:
    List[float]: Embeddings for the text.
rA   rB   rC   rD   rE   r   rF   )r   r=   r0   r<   rI   )r-   rO   r/   s      r!   embed_queryErnieEmbeddings.embed_queryq   s       002$0188L!!xx%,446$'89 #5dV!<==F|A{++r$   c                 L   #    [        SU R                  U5      I Sh  vN $  N7f)zwAsynchronous Embed query text.

Args:
    text: The text to embed.

Returns:
    List[float]: Embeddings for the text.
N)r   rS   )r-   rO   s     r!   aembed_queryErnieEmbeddings.aembed_query   s"      %T4+;+;TBBBBs   $"$c                    #    [         R                  " U Vs/ sH  o R                  U5      PM     sn6 I Sh  vN n[        U5      $ s  snf  N7f)zAsynchronous Embed search docs.

Args:
    texts: The list of texts to embed

Returns:
    List[List[float]]: List of embeddings, one for each text.
N)asynciogatherrV   list)r-   r?   rO   results       r!   aembed_documents ErnieEmbeddings.aembed_documents   sC      ~~E'RED(9(9$(?E'RSSF| (SSs   AAAAA)r   )r   N)"__name__
__module____qualname____firstlineno____doc__r   r   r;   __annotations__r   r   r   r   intr   	threadingLockr8   r   model_configr
   r   r"   objectdictr0   r=   r   floatrP   rS   rV   r]   __static_attributes__r   r$   r!   r   r      s   
 2$(NHSM(%)OXc]))-#-"&L(3-&J-J-NNE26L$ 4   v $ E$T#Y 4U3D 8, ,U ,*
Cs 
CtE{ 
CDI $tE{:K r$   r   )rY   loggingrf   typingr   r   r   r+   langchain_core._api.deprecationr   langchain_core.embeddingsr   langchain_core.runnables.configr   langchain_core.utilsr	   r
   pydanticr   r   	getLoggerr_   r9   r   r   r$   r!   <module>ru      sa       ' '  6 0 ; ? *			8	$ 
JJi J	Jr$   