
    Ng                     d    d dl mZmZmZ d dlmZ d dlmZmZ d dl	m
Z
mZ  G d de
e          ZdS )    )AnyDictList)
Embeddings)get_from_dict_or_envpre_init)	BaseModel
ConfigDictc            	            e Zd ZU dZeed<   eed<   eed<    ed          Z		 	 ddeded	ed
df fdZ
eded
efd            Zdee         d
eee                  fdZded
ee         fdZ x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 )protected_namespaces%paraphrase-multilingual-mpnet-base-v2FkwargsreturnNc                 @     t                      j        d||d| d S )N)r   r   r   )super__init__)selfr   r   r   	__class__s       c/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/embeddings/nlpcloud.pyr   zNLPCloudEmbeddings.__init__   s/     	BJCBB6BBBBB    valuesc                     t          |dd          }	 ddl}|                    |d         ||d         d          |d	<   n# t          $ r t          d
          w xY w|S )z?Validate that api key and python package exists in environment.nlpcloud_api_keyNLPCLOUD_API_KEYr   Nr   r   en)r   langr   zXCould not import nlpcloud python package. Please install it with `pip install nlpcloud`.)r   nlpcloudClientImportError)clsr   r   r"   s       r   validate_environmentz'NLPCloudEmbeddings.validate_environment#   s     0&(:
 

	OOO'|$&6F5MPT  /    F8  	 	 	A  	
 s   ,A   Atextsc                 B    | 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'   s     r   embed_documentsz"NLPCloudEmbeddings.embed_documents6   s     {%%e,,\::r   textc                 P    | 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,   s     r   embed_queryzNLPCloudEmbeddings.embed_queryB   s&     {%%tf--l;A>>r   )r   F)__name__
__module____qualname____doc__str__annotations__boolr   r
   model_configr   r   r   r&   r   floatr+   r.   __classcell__)r   s   @r   r   r      s:        
 
 OOO	IIIKKK:2666L BC CC C 	C
 
C C C C C C $ 4    X$
;T#Y 
;4U3D 
; 
; 
; 
;	? 	?U 	? 	? 	? 	? 	? 	? 	? 	?r   r   N)typingr   r   r   langchain_core.embeddingsr   langchain_core.utilsr   r   pydanticr	   r
   r   r   r   r   <module>r=      s    " " " " " " " " " " 0 0 0 0 0 0 ? ? ? ? ? ? ? ? * * * * * * * *C? C? C? C? C?J C? C? C? C? C?r   