
    7|hG                        d dl mZ d dlZd dlmZ d dlmZmZmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d d	lmZ  ej(                  e      Zd
ZdZ eddd       G d dee             Zy)    )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                  .   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<   	 dZ	ded<   	 dZ
ded	<   	 dZded
<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   dZded<   dZded<   dZded<   edd       Zedd       ZddZddZddZddZy)GigaChatEmbeddingsa  GigaChat Embeddings models.

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

            embeddings = GigaChatEmbeddings(
                credentials=..., scope=..., verify_ssl_certs=False
            )
    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                `   ddl }|j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                        S )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     f/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/embeddings/gigachat.py_clientzGigaChatEmbeddings._clientB   s     	  ]]]]((******]]LL!22..nn]]"44 ! 
 	
    c                    	 ddl }t        t        |       j	                               }t        |j	                               |z
  }|rt
        j                  d| d       |S # t        $ r t        d      w xY w)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_environmentz'GigaChatEmbeddings.validate_environmentX   sz    	 Z_))+,6;;=!F*NN]4&0BCD  	A 	s   A! !A6c                   g }d}g }i }| j                   | j                   |d<   |D ]  }|j                  |       |t        |      z  }|t        kD  st        |      t        kD  s> | j
                  j                  dd|i|j                  D ]  }|j                  |j                          d}g } |rH | j
                  j                  dd|i|j                  D ]  }|j                  |j                          |S )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%   r6   resultsizelocal_textsembed_kwargstextr>   s           r&   embed_documentsz"GigaChatEmbeddings.embed_documentsh   s    %'::!$(JJL! 		!Dt$CID**c+.>AU.U!8!8!8 "%")5"$7I MM)"5"567  		! 4T\\44 !%1d3	 i1123
 r(   c                4  K   g }d}g }i }| j                   | j                   |d<   |D ]  }|j                  |       |t        |      z  }|t        kD  st        |      t        kD  s> | j
                  j                  dd|i| d{   }|j                  D ]  }|j                  |j                          d}g } |rR | j
                  j                  dd|i| d{   }|j                  D ]  }|j                  |j                          |S 7 7 4w)r5   r   Nr   r6   r7   )	r   r8   r9   r:   r;   r'   aembeddingsr=   r>   )	r%   r6   r?   r@   rA   rB   rC   r<   r>   s	            r&   aembed_documentsz#GigaChatEmbeddings.aembed_documents   s:     %'::!$(JJL! 
	!Dt$CID**c+.>AU.U#;4<<#;#; $%$)5$ 
 ", 7IMM)"5"567 
	! 7t||77  ! %1  J (__ 3	i1123 s+   A#D&!DDAD!D"3DDc                .    | j                  |g      d   S )Embed a query using a GigaChat embeddings models.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r6   r   )rD   )r%   rC   s     r&   embed_queryzGigaChatEmbeddings.embed_query   s     ##4&#1!44r(   c                N   K   | j                  |g       d{   }|d   S 7 	w)rI   rJ   Nr   )rG   )r%   rC   docss      r&   aembed_queryzGigaChatEmbeddings.aembed_query   s.      **$*88Aw 9s   %#
%)returnr   )r0   r   rO   r   )r6   z	List[str]rO   zList[List[float]])rC   strrO   zList[float])__name__
__module____qualname____doc__r   __annotations__r   r   r   r   r   r   r   r   r   r   r   r    r!   r   r'   r   r3   rD   rG   rK   rN   r7   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   	getLoggerrQ   r-   r:   r;   r   r7   r(   r&   <module>r`      so    "  % , , 6 0 ) 4 			8	$   
>
kJ k
kr(   