a
    bgG                     @  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dZedddddZdddd d!Zdddd"d#Zd$d%d&d'd(Zd$d%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_passwordr   )returnc                 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    u/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/embeddings/gigachat.py_clientB   s"    zGigaChatEmbeddings._clientr   )valuesr   c                 C  sb   zddl }W n ty&   tdY n0 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_environmentz	List[str]zList[List[float]])textsr   c                 C  s   g }d}g }i }| j dur$| j |d< |D ]`}|| |t|7 }|tksVt|tkr(| jjf d|i|jD ]}||j qnd}g }q(|r| jjf d|i|jD ]}||j q|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   appendlenMAX_BATCH_SIZE_CHARSMAX_BATCH_SIZE_PARTSr"   
embeddingsdata	embedding)r   r-   resultsizelocal_textsembed_kwargstextr5   r    r    r!   embed_documentsh   s4    	




z"GigaChatEmbeddings.embed_documentsc           	        s   g }d}g }i }| j dur$| j |d< |D ]j}|| |t|7 }|tksVt|tkr(| jjf d|i|I dH }|jD ]}||j qxd}g }q(|r| jjf d|i|I dH }|jD ]}||j q|S r.   )	r   r/   r0   r1   r2   r"   Zaembeddingsr4   r5   )	r   r-   r6   r7   r8   r9   r:   r3   r5   r    r    r!   aembed_documents   s8    	






z#GigaChatEmbeddings.aembed_documentsstrzList[float])r:   r   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 )r>   r?   Nr   )r<   )r   r:   docsr    r    r!   aembed_query   s    	zGigaChatEmbeddings.aembed_query)__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<   r@   rB   r    r    r    r!   r      s.   
"$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   	getLoggerrC   r'   r1   r2   r   r    r    r    r!   <module>   s"   
