
    NgG                        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dS )    )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dS ))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_passwordreturnr   c                    ddl }|                    | 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     c/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/embeddings/gigachat.py_clientzGigaChatEmbeddings._clientB   su     	  ]](***]L!2.n]"4 ! 
 
 	
    valuesr   c                0   	 ddl }n# t          $ r t          d          w xY wt          t          |                                                     }t          |                                          |z
  }|rt
                              d| d           |S )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)clsr*   r$   fieldsdiffs        r'   validate_environmentz'GigaChatEmbeddings.validate_environmentX   s    	OOOO 	 	 	A  	
 Z__))++,,6;;==!!F* 	ENNC4CCCDDDs    !texts	List[str]List[List[float]]c                   g }d}g }i }| j         
| j         |d<   |D ]}|                    |           |t          |          z  }|t          k    st          |          t          k    r: | j        j        dd|i|j        D ]}|                    |j                   d}g }|r6 | j        j        dd|i|j        D ]}|                    |j                   |S zEmbed documents using a GigaChat embeddings models.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        r   Nr   r5    )	r   appendlenMAX_BATCH_SIZE_CHARSMAX_BATCH_SIZE_PARTSr(   
embeddingsdata	embedding)r&   r5   resultsizelocal_textsembed_kwargstextrA   s           r'   embed_documentsz"GigaChatEmbeddings.embed_documentsh   s:    %':!$(JL! 		! 		!Dt$$$CIID***c+.>.>AU.U.U!8!8 " "%")5" "7 7I MM)"56666  	34T\4  !%1 3 3	 i12222r)   c                  K   g }d}g }i }| j         
| j         |d<   |D ]}|                    |           |t          |          z  }|t          k    st          |          t          k    rB | j        j        dd|i| d{V }|j        D ]}|                    |j                   d}g }|r> | j        j        dd|i| d{V }|j        D ]}|                    |j                   |S r9   )	r   r;   r<   r=   r>   r(   aembeddingsr@   rA   )	r&   r5   rB   rC   rD   rE   rF   r?   rA   s	            r'   aembed_documentsz#GigaChatEmbeddings.aembed_documents   s      %':!$(JL! 
	! 
	!Dt$$$CIID***c+.>.>AU.U.U#;4<#; $ $%$)5$ $      
 ", 7 7IMM)"56666  	37t|7    ! %1         J (_ 3 3	i12222r)   rF   strList[float]c                <    |                      |g          d         S )Embed a query using a GigaChat embeddings models.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r5   r   )rG   )r&   rF   s     r'   embed_queryzGigaChatEmbeddings.embed_query   s"     ##4&#11!44r)   c                P   K   |                      |g           d{V }|d         S )rN   rO   Nr   )rJ   )r&   rF   docss      r'   aembed_queryzGigaChatEmbeddings.aembed_query   s;       **$*88888888Awr)   )r"   r   )r*   r   r"   r   )r5   r6   r"   r7   )rF   rK   r"   rL   )__name__
__module____qualname____doc__r   __annotations__r   r   r   r   r   r   r   r   r   r   r   r    r!   r   r(   r   r4   rG   rJ   rP   rS   r:   r)   r'   r   r      s        	 	 #H"""""H""""!%K%%%%E-"&L&&&&%ED%"H""""%"G""""G'+++++/$(N((((#I####"H""""'+++++ 
 
 
 _
*    X       D" " " "H	5 	5 	5 	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   	getLoggerrT   r/   r=   r>   r   r:   r)   r'   <module>rc      s7   " " " " " "  % % % % % % , , , , , , , , , , , , 6 6 6 6 6 6 0 0 0 0 0 0 ) ) ) ) ) ) 4 4 4 4 4 4      		8	$	$   
>  
k k k k kJ k k 
k k kr)   