U
    h                     @   sR   d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	m
Z
 G dd deeZdS )    )AnyDictList)
Embeddings)	BaseModel)get_from_dict_or_envpre_initc                       s   e Zd ZU dZeed< eed< eed< deeedd f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  ZS )NLPCloudEmbeddingsa
  NLP Cloud embedding models.

    To use, you should have the nlpcloud python package installed

    Example:
        .. code-block:: python

            from langchain_community.embeddings import NLPCloudEmbeddings

            embeddings = NLPCloudEmbeddings()
    
model_namegpuclient%paraphrase-multilingual-mpnet-base-v2FN)r
   r   kwargsreturnc                    s   t  jf ||d| d S )N)r
   r   )super__init__)selfr
   r   r   	__class__ K/tmp/pip-unpacked-wheel-9gdii04g/langchain_community/embeddings/nlpcloud.pyr      s    zNLPCloudEmbeddings.__init__)valuesr   c                 C   sX   t |dd}z*ddl}|j|d ||d dd|d	< W n tk
rR   td
Y nX |S )z?Validate that api key and python package exists in environment.nlpcloud_api_keyZNLPCLOUD_API_KEYr   Nr
   r   en)r   langr   zXCould not import nlpcloud python package. Please install it with `pip install nlpcloud`.)r   nlpcloudZClientImportError)clsr   r   r   r   r   r   validate_environment!   s$         
z'NLPCloudEmbeddings.validate_environment)textsr   c                 C   s   | j |d S )zEmbed a list of documents using NLP Cloud.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        
embeddingsr   r    )r   r   r   r   r   embed_documents4   s    
z"NLPCloudEmbeddings.embed_documents)textr   c                 C   s   | j |gd d S )zEmbed a query using NLP Cloud.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r    r   r!   )r   r#   r   r   r   embed_query@   s    	zNLPCloudEmbeddings.embed_query)r   F)__name__
__module____qualname____doc__str__annotations__boolr   r   r   r   r   r   floatr"   r$   __classcell__r   r   r   r   r	      s    
  r	   N)typingr   r   r   Zlangchain_core.embeddingsr   Zlangchain_core.pydantic_v1r   Zlangchain_core.utilsr   r   r	   r   r   r   r   <module>   s   