a
    bg                     @   sp   U d dl mZmZmZmZmZ d dlZd dlm	Z	 d dl
mZ d dlmZmZ dZeed< G dd	 d	ee	ZdS )
    )AnyDictListOptionalcastN)
Embeddings)pre_init)	BaseModel
ConfigDictZlaser2LASER_MULTILINGUAL_MODELc                   @   s|   e Zd ZU dZdZee ed< dZe	ed< e
ddZeeeddd	Zee eee  d
ddZeee dddZdS )LaserEmbeddingsa  LASER Language-Agnostic SEntence Representations.
    LASER is a Python library developed by the Meta AI Research team
    and used for creating multilingual sentence embeddings for over 147 languages
    as of 2/25/2024
    See more documentation at:
    * https://github.com/facebookresearch/LASER/
    * https://github.com/facebookresearch/LASER/tree/main/laser_encoders
    * https://arxiv.org/abs/2205.12654

    To use this class, you must install the `laser_encoders` Python package.

    `pip install laser_encoders`
    Example:
        from laser_encoders import LaserEncoderPipeline
        encoder = LaserEncoderPipeline(lang="eng_Latn")
        embeddings = encoder.encode_sentences(["Hello", "World"])
    Nlang_encoder_pipelineZforbid)extra)valuesreturnc              
   C   sp   z<ddl m} |d}|r(||d}n
|td}||d< W n. tyj } ztd|W Y d}~n
d}~0 0 |S )	z0Validate that laser_encoders has been installed.r   )LaserEncoderPipeliner   )r   )Zlaserr   zfCould not import 'laser_encoders' Python package. Please install it with `pip install laser_encoders`.N)Zlaser_encodersr   getr   ImportError)clsr   r   r   Zencoder_pipelinee r   r/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/embeddings/laser.pyvalidate_environment,   s    

z$LaserEmbeddings.validate_environment)textsr   c                 C   s"   | j |}tttt  | S )zGenerate embeddings for documents using LASER.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        r   Zencode_sentencesr   r   floattolist)selfr   Z
embeddingsr   r   r   embed_documents@   s    
zLaserEmbeddings.embed_documents)textr   c                 C   s(   | j |g}tttt  | d S )zGenerate single query text embeddings using LASER.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r   r   )r   r    Zquery_embeddingsr   r   r   embed_queryN   s    
zLaserEmbeddings.embed_query)__name__
__module____qualname____doc__r   r   str__annotations__r   r   r
   Zmodel_configr   r   r   r   r   r   r!   r   r   r   r   r      s   
r   )typingr   r   r   r   r   numpynpZlangchain_core.embeddingsr   Zlangchain_core.utilsr   Zpydanticr	   r
   r   r&   r'   r   r   r   r   r   <module>   s   