
    dh                        S SK Jr  S SKrS SKJrJrJrJr  S SKJ	r	  S SK
JrJrJr  S SKJrJrJrJr  \R&                  " \5      r " S S\\	5      rg)	    )annotationsN)AnyDictListOptional)
Embeddings)convert_to_secret_strget_from_dict_or_envpre_init)	BaseModel
ConfigDictField	SecretStrc                     \ rS rSr% Sr\" SSS9rS\S'    \" SSS9rS\S	'    S
r	S\S'    \" SS9r
S\S'    SrS\S'    SrS\S'    \" \S9rS\S'    \" \S9rS\S'    \" SS9r\S S j5       rS!S jrS"S jrS!S jrS"S jrSrg)#QianfanEmbeddingsEndpoint   a  Baidu Qianfan Embeddings embedding models.

Setup:
    To use, you should have the ``qianfan`` python package installed, and set
    environment variables ``QIANFAN_AK``, ``QIANFAN_SK``.

    .. code-block:: bash

        pip install qianfan
        export QIANFAN_AK="your-api-key"
        export QIANFAN_SK="your-secret_key"

Instantiate:
    .. code-block:: python

        from langchain_community.embeddings import QianfanEmbeddingsEndpoint

        embeddings = QianfanEmbeddingsEndpoint()

 Embed:
    .. code-block:: python

        # embed the documents
        vectors = embeddings.embed_documents([text1, text2, ...])

        # embed the query
        vectors = embeddings.embed_query(text)

        # embed the documents with async
        vectors = await embeddings.aembed_documents([text1, text2, ...])

        # embed the query with async
        vectors = await embeddings.aembed_query(text)
Napi_key)defaultaliaszOptional[SecretStr]
qianfan_ak
secret_key
qianfan_sk   int
chunk_sizer   zOptional[str]model strendpointr   client)default_factoryzDict[str, Any]init_kwargsmodel_kwargs )protected_namespacesc           	        [        [        USSSS95      US'   [        [        USSSS95      US'    SSKn0 UR                  S	0 5      ES
US
   0EnUS   R	                  5       S:w  a  US   R	                  5       US'   US   R	                  5       S:w  a  US   R	                  5       US'   US   b  US   S:w  a  US   US'   UR
                  " S0 UD6US'   U$ ! [         a    [        S5      ef = f)a  
Validate whether qianfan_ak and qianfan_sk in the environment variables or
configuration file are available or not.

init qianfan embedding client with `ak`, `sk`, `model`, `endpoint`

Args:

    values: a dictionary containing configuration information, must include the
    fields of qianfan_ak and qianfan_sk
Returns:

    a dictionary containing configuration information. If qianfan_ak and
    qianfan_sk are not provided in the environment variables or configuration
    file,the original values will be returned; otherwise, values containing
    qianfan_ak and qianfan_sk will be returned.
Raises:

    ValueError: qianfan package not found, please install it with `pip install
    qianfan`
r   
QIANFAN_AKr   r   r   
QIANFAN_SKr   Nr#   r   akskr    r!   zGqianfan package not found, please install it with `pip install qianfan`r%   )r	   r
   qianfangetget_secret_value	EmbeddingImportError)clsvaluesr,   paramss       m/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/baidu_qianfan_endpoint.pyvalidate_environment.QianfanEmbeddingsEndpoint.validate_environmentV   s@   .  5 	 
|  5 	 
|	**]B/F l#446"<%l3DDFtl#446"<%l3DDFtj!-&2D2J%+J%7z"&00:6:F8   	( 	s   B%C C/c                0    U R                  U/5      nUS   $ Nr   )embed_documents)selftextresps      r4   embed_query%QianfanEmbeddingsEndpoint.embed_query   s    ##TF+Aw    c                F   [        S[        U5      U R                  5       Vs/ sH  nXX R                  -    PM     nn/ nU HQ  nU R                  R                  " SSU0U R
                  D6nUR                  US    Vs/ sH  owS   PM	     sn5        MS     U$ s  snf s  snf )a'  
Embeds a list of text documents using the AutoVOT algorithm.

Args:
    texts (List[str]): A list of text documents to embed.

Returns:
    List[List[float]]: A list of embeddings for each document in the input list.
                    Each embedding is represented as a list of float values.
r   textsdata	embeddingr%   )rangelenr   r!   dor$   extendr:   rA   itext_in_chunkslstchunkr<   ress           r4   r9   )QianfanEmbeddingsEndpoint.embed_documents   s     1c%j$//:
: a//)*: 	 
 #E;;>>CC1B1BCDJJDLALSK(LAB $ 

 Bs   B?B
c                L   #    U R                  U/5      I S h  vN nUS   $  N	7fr8   )aembed_documents)r:   r;   
embeddingss      r4   aembed_query&QianfanEmbeddingsEndpoint.aembed_query   s)     00$88
!} 9s   $"
$c                N  #    [        S[        U5      U R                  5       Vs/ sH  nXX R                  -    PM     nn/ nU HT  nU R                  R                  " SSU0U R
                  D6I S h  vN nUS    H  nUR                  US   /5        M     MV     U$ s  snf  N07f)Nr   rA   rB   rC   r%   )rD   rE   r   r!   ador$   rG   rH   s           r4   rP   *QianfanEmbeddingsEndpoint.aembed_documents   s      1c%j$//:
: a//)*: 	 
 #EJuJ8I8IJJDF|

C,-. $ $ 

 Ks   #B%B4B%2B#31B%)r2   r   returnr   )r;   r   rW   zList[float])rA   z	List[str]rW   zList[List[float]])__name__
__module____qualname____firstlineno____doc__r   r   __annotations__r   r   r   r    r!   dictr#   r$   r   model_configr   r5   r=   r9   rR   rP   __static_attributes__r%   r?   r4   r   r      s    !F ',D	&JJ#J$&+D&MJ#M'J2 .E=.
 HcKFC"'"=K=@ $)#>L.>826L: :x*
r?   r   )
__future__r   loggingtypingr   r   r   r   langchain_core.embeddingsr   langchain_core.utilsr	   r
   r   pydanticr   r   r   r   	getLoggerrX   loggerr   r%   r?   r4   <module>ri      s@    "  , , 0 V V < <			8	$m	: mr?   