a
    bg+                     @   sr   d dl mZmZmZmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZmZmZmZ d dlmZ G dd deeZdS )	    )AnyDictListOptional)
Embeddings)convert_to_secret_strget_from_dict_or_envpre_init)	BaseModel
ConfigDictField	SecretStr)Requestsc                   @   s   e Zd ZU dZedddZee ed< dZ	e
ed< dZee
 ed< ed	d
ZeeedddZee
dddZee
 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 )EdenAiEmbeddingsz~EdenAI embedding.
    environment variable ``EDENAI_API_KEY`` set with your API key, or pass
    it as a named parameter.
    NzEdenAI API Token)descriptionedenai_api_keyZopenaiprovidermodelZforbid)extra)valuesreturnc                 C   s   t t|dd|d< |S )z,Validate that api key exists in environment.r   ZEDENAI_API_KEY)r   r   )clsr    r   s/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/embeddings/edenai.pyvalidate_environment$   s    
z%EdenAiEmbeddings.validate_environment)r   c                  C   s   ddl m}  d|  S )Nr   __version__z
langchain/)Zlangchain_communityr   r   r   r   r   get_user_agent,   s    zEdenAiEmbeddings.get_user_agent)textsr   c                 C   s$  d}ddd| j   |  d}|| jd}| jdurH| j| ji|d< t|d}|j||d	}|jd
kr|td|j n>|jdkrt	d|j
 n"|jdkrtd|j d|j
 | }|| j }|ddkr|di d}	t|	g }
|| j d D ]}|d }|
| q|
S )z$Compute embeddings using EdenAi api.z)https://api.edenai.run/v2/text/embeddingszapplication/jsonzBearer )acceptzcontent-typeauthorizationz
User-Agent)r   	providersNsettings)headers)urldatai  zEdenAI Server: Error i  z$EdenAI received an invalid payload:    z3EdenAI returned an unexpected response with status z: statusZfailerrormessageitems	embedding)r   Zget_secret_valuer   r   r   r   poststatus_code	Exception
ValueErrortextjsongetappend)selfr   r$   r#   payloadrequestresponsetempZprovider_responseerr_msgZ
embeddingsZ
embed_itemr+   r   r   r   _generate_embeddings2   sB    





z%EdenAiEmbeddings._generate_embeddingsc                 C   s
   |  |S )zEmbed a list of documents using EdenAI.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        r:   )r4   r   r   r   r   embed_documents]   s    
z EdenAiEmbeddings.embed_documents)r0   r   c                 C   s   |  |gd S )zEmbed a query using EdenAI.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r   r;   )r4   r0   r   r   r   embed_queryi   s    	zEdenAiEmbeddings.embed_query)__name__
__module____qualname____doc__r   r   r   r   __annotations__r   strr   r   Zmodel_configr	   r   r   staticmethodr   r   floatr:   r<   r=   r   r   r   r   r      s   
+r   N)typingr   r   r   r   Zlangchain_core.embeddingsr   Zlangchain_core.utilsr   r   r	   Zpydanticr
   r   r   r   Z&langchain_community.utilities.requestsr   r   r   r   r   r   <module>   s
   