
    Ng+                         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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                   H   e Zd ZU dZ edd          Zee         ed<   dZ	e
ed<   	 dZee
         ed<   	  ed	
          Zededefd            Zede
fd            Zdee
         deee                  fdZdee
         deee                  fdZde
dee         f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_keyopenaiprovidermodelforbid)extravaluesreturnc                 H    t          t          |dd                    |d<   |S )z,Validate that api key exists in environment.r   EDENAI_API_KEY)r   r	   )clsr   s     a/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/embeddings/edenai.pyvalidate_environmentz%EdenAiEmbeddings.validate_environment$   s1     $9 )9;KLL$
 $
      c                      ddl m}  d|  S )Nr   __version__z
langchain/)langchain_communityr#   r"   s    r   get_user_agentzEdenAiEmbeddings.get_user_agent,   s"    333333)K)))r    textsc                 ,   d}ddd| j                                          |                                 d}|| j        d}| j        | j        | j        i|d<   t          |          }|                    ||	          }|j        d
k    rt          d|j                   |j        dk    rt          d|j
                   |j        dk    rt          d|j         d|j
                   |                                }|| j                 }|                    d          dk    r8|                    di                               d          }	t          |	          g }
|| j                 d         D ]}|d         }|
                    |            |
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: statusfailerrormessageitems	embedding)r   get_secret_valuer%   r   r   r   poststatus_code	Exception
ValueErrortextjsongetappend)selfr&   r-   r,   payloadrequestresponsetempprovider_responseerr_msg
embeddings
embed_itemr5   s                r   _generate_embeddingsz%EdenAiEmbeddings._generate_embeddings2   s   9 ).Ot':'K'K'M'MOO--//	
 
 -2"N"N:!#'=$*"=GJ7+++<<Cg<663&&JH4HJJKKK!S((SHMSSTTT!S((;'; ;+3=; ;  
 }} /  **f44'++GR88<<YGGGG$$$
t}-g6 	) 	)J";/Ii((((r    c                 ,    |                      |          S )zEmbed a list of documents using EdenAI.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        rH   )r?   r&   s     r   embed_documentsz EdenAiEmbeddings.embed_documents]   s     ((///r    r;   c                 :    |                      |g          d         S )zEmbed a query using EdenAI.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r   rJ   )r?   r;   s     r   embed_queryzEdenAiEmbeddings.embed_queryi   s     (($0033r    )__name__
__module____qualname____doc__r   r   r   r   __annotations__r   strr   r   model_configr
   r   r   staticmethodr%   r   floatrH   rK   rM    r    r   r   r      sh         
 +0%BT*U*U*UNHY'UUUHc<E8C=
 :  L $ 4    X *C * * * \*
)$s) )T%[8I ) ) ) )V
0T#Y 
04U3D 
0 
0 
0 
0	4 	4U 	4 	4 	4 	4 	4 	4r    r   N)typingr   r   r   r   langchain_core.embeddingsr   langchain_core.utilsr   r	   r
   pydanticr   r   r   r   &langchain_community.utilities.requestsr   r   rW   r    r   <module>r]      s    , , , , , , , , , , , , 0 0 0 0 0 0 V V V V V V V V V V            < ; ; ; ; ;c4 c4 c4 c4 c4y* c4 c4 c4 c4 c4r    