o
    ZhG                     @  s   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eZd
ZdZeddddG d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)ZsinceZremovalZalternative_importc                   @  s  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dZed,ddZd-d d!Zd-d"d#Zd.d'd(Zd.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                 C  sJ   ddl }|j| j| j| j| j| j| j| j| j	| j
| j| j| j| j| jdS )zReturns GigaChat API clientr   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   )gigachatZGigaChatr   r   r   r   r   r   r   r   r   r   r   r   r   r   )selfr    r    ^/var/www/html/lang_env/lib/python3.10/site-packages/langchain_community/embeddings/gigachat.py_clientB   s"   zGigaChatEmbeddings._clientvaluesr   c                 C  s^   zddl }W n ty   tdw tt|  }t| | }|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diffr    r    r!   validate_environmentX   s   z'GigaChatEmbeddings.validate_environmenttexts	List[str]List[List[float]]c                 C  s   g }d}g }i }| j dur| j |d< |D ]0}|| |t|7 }|tks+t|tkrD| jjdd|i|jD ]}||j q7d}g }q|r\| jjdd|i|jD ]}||j qS|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   r-   r    )	r   appendlenMAX_BATCH_SIZE_CHARSMAX_BATCH_SIZE_PARTSr"   
embeddingsdata	embedding)r   r-   resultsizelocal_textsembed_kwargstextr7   r    r    r!   embed_documentsh   s>   	




z"GigaChatEmbeddings.embed_documentsc           	        s   g }d}g }i }| j dur| j |d< |D ]5}|| |t|7 }|tks,t|tkrJ| jjdd|i|I dH }|jD ]}||j q=d}g }q|rg| jjdd|i|I dH }|jD ]}||j q^|S r0   )	r   r1   r2   r3   r4   r"   Zaembeddingsr6   r7   )	r   r-   r8   r9   r:   r;   r<   r5   r7   r    r    r!   aembed_documents   s<   	






z#GigaChatEmbeddings.aembed_documentsr<   strList[float]c                 C  s   | j |gdd S )Embed a query using a GigaChat embeddings models.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r-   r   )r=   )r   r<   r    r    r!   embed_query   s   	zGigaChatEmbeddings.embed_queryc                   s   | j |gdI dH }|d S )rA   rB   Nr   )r>   )r   r<   docsr    r    r!   aembed_query   s   	zGigaChatEmbeddings.aembed_query)r   r   )r#   r   r   r   )r-   r.   r   r/   )r<   r?   r   r@   )__name__
__module____qualname____doc__r   __annotations__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   r
   r,   r=   r>   rC   rE   r    r    r    r!   r      sD   
 

"
$r   )
__future__r   logging	functoolsr   typingr   r   r   r   Zlangchain_core._api.deprecationr   Zlangchain_core.embeddingsr	   Zlangchain_core.utilsr
   Zlangchain_core.utils.pydanticr   Zpydanticr   	getLoggerrF   r'   r3   r4   r   r    r    r    r!   <module>   s$    
