
    dhE                        S SK Jr  S SKrS SKJr  S SKJrJrJrJ	r	  S SK
Jr  S SKJr  S SKJr  S SKJr  S S	KJr  \R(                  " \5      rS
rSr\" SSSS9 " S S\\5      5       rg)    )annotationsN)cached_property)AnyDictListOptional)
deprecated)
Embeddings)pre_init)
get_fields)	BaseModeli@B Z   z0.3.5z1.0z%langchain_gigachat.GigaChatEmbeddings)sinceremovalalternative_importc                  B   \ rS rSr% SrSrS\S'    SrS\S'    SrS\S'    Sr	S\S'    Sr
S\S	'    SrS\S
'    SrS\S'    SrS\S'    SrS\S'    SrS\S'    SrS\S'   SrS\S'   SrS\S'   SrS\S'   \SS j5       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)!GigaChatEmbeddings   a  GigaChat Embeddings models.

Example:
    .. code-block:: python
        from langchain_community.embeddings.gigachat import GigaChatEmbeddings

        embeddings = GigaChatEmbeddings(
            credentials=..., scope=..., verify_ssl_certs=...
        )
NzOptional[str]base_urlauth_urlcredentialsscopeaccess_tokenmodeluserpasswordiX  zOptional[float]timeoutzOptional[bool]verify_ssl_certsca_bundle_file	cert_filekey_filekey_file_passwordc                Z   SSK nUR                  U R                  U R                  U R                  U R
                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  S9$ )zReturns GigaChat API clientr   N)r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   )gigachatGigaChatr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   )selfr$   s     _/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/gigachat.py_clientGigaChatEmbeddings._clientB   s     	  ]]]]((******]]LL!22..nn]]"44 ! 
 	
    c                     SSK n[        [        U 5      R	                  5       5      n[        UR	                  5       5      U-
  nU(       a  [
        R                  SU S35        U$ ! [         a    [        S5      ef = f)zJValidate authenticate data in environment and python package is installed.r   NzXCould not import gigachat python package. Please install it with `pip install gigachat`.zExtra fields z in GigaChat class)r$   ImportErrorsetr   keysloggerwarning)clsvaluesr$   fieldsdiffs        r'   validate_environment'GigaChatEmbeddings.validate_environmentX   sz    	 Z_))+,6;;=!F*NN]4&0BCD  	A 	s   A& &A<c                   / nSn/ n0 nU R                   b  U R                   US'   U H  nUR                  U5        U[        U5      -  nU[        :  d  [        U5      [        :  d  MA  U R
                  R                  " SSU0UD6R                   H  nUR                  UR                  5        M      Sn/ nM     U(       aJ  U R
                  R                  " SSU0UD6R                   H  nUR                  UR                  5        M      U$ )Embed documents using a GigaChat embeddings models.

Args:
    texts: The list of texts to embed.

Returns:
    List of embeddings, one for each text.
r   r   texts )	r   appendlenMAX_BATCH_SIZE_CHARSMAX_BATCH_SIZE_PARTSr(   
embeddingsdata	embedding)r&   r9   resultsizelocal_textsembed_kwargstextrA   s           r'   embed_documents"GigaChatEmbeddings.embed_documentsh   s    %'::!$(JJL!Dt$CID**c+.>AU.U!%!8!8 "%")5"$"I MM)"5"56"    !\\44 !%1d	 i112
 r*   c                R  #    / nSn/ n0 nU R                   b  U R                   US'   U H  nUR                  U5        U[        U5      -  nU[        :  d  [        U5      [        :  d  MA  U R
                  R                  " SSU0UD6I Sh  vN nUR                   H  nUR                  UR                  5        M      Sn/ nM     U(       aT  U R
                  R                  " SSU0UD6I Sh  vN nUR                   H  nUR                  UR                  5        M      U$  N N67f)r8   r   Nr   r9   r:   )	r   r;   r<   r=   r>   r(   aembeddingsr@   rA   )	r&   r9   rB   rC   rD   rE   rF   r?   rA   s	            r'   aembed_documents#GigaChatEmbeddings.aembed_documents   s%     %'::!$(JJL!Dt$CID**c+.>AU.U#'<<#;#; $%$)5$ 
 ",IMM)"5"56 "1   #||77  ! %1  J (__	i112 - s+   A$D'*!D'D#A"D'.D%/5D'%D'c                (    U R                  U/S9S   $ )}Embed a query using a GigaChat embeddings models.

Args:
    text: The text to embed.

Returns:
    Embeddings for the text.
r9   r   )rG   )r&   rF   s     r'   embed_queryGigaChatEmbeddings.embed_query   s     ##4&#1!44r*   c                H   #    U R                  U/S9I Sh  vN nUS   $  N	7f)rN   rO   Nr   )rK   )r&   rF   docss      r'   aembed_queryGigaChatEmbeddings.aembed_query   s-      **$*88Aw 9s   " 
"r:   )returnr   )r2   r   rV   r   )r9   z	List[str]rV   zList[List[float]])rF   strrV   zList[float])__name__
__module____qualname____firstlineno____doc__r   __annotations__r   r   r   r   r   r   r   r   r   r   r    r!   r"   r   r(   r   r5   rG   rK   rP   rT   __static_attributes__r:   r*   r'   r   r      s    	 #Hm""Hm"!%K%E=-"&L-&%E=D-%"Hm"%"G_"G'+n+/$(NM(#I}#"Hm"'+}+ 
 
*   D"H	5
r*   r   )
__future__r   logging	functoolsr   typingr   r   r   r   langchain_core._api.deprecationr	   langchain_core.embeddingsr
   langchain_core.utilsr   langchain_core.utils.pydanticr   pydanticr   	getLoggerrX   r/   r=   r>   r   r:   r*   r'   <module>ri      sm    "  % , , 6 0 ) 4 			8	$   
>
kJ k
kr*   