
    7|h+                     x    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y)	    )AnyDictListOptional)
Embeddings)convert_to_secret_strget_from_dict_or_envpre_init)	BaseModel
ConfigDictField	SecretStr)Requestsc                       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y)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                 8    t        t        |dd            |d<   |S )z,Validate that api key exists in environment.r   EDENAI_API_KEY)r   r	   )clsr   s     d/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/embeddings/edenai.pyvalidate_environmentz%EdenAiEmbeddings.validate_environment$   s)     $9 )9;K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K=))r    textsc                 4   d}ddd| j                   j                          | j                         d}|| j                  d}| j                  | j                  | j                  i|d<   t        |      }|j                  ||      }|j                  d	k\  rt        d
|j                         |j                  dk\  rt        d|j                         |j                  dk7  r%t        d|j                   d|j                         |j                         }|| j                     }|j                  d      dk(  r,|j                  di       j                  d      }	t        |	      g }
|| j                     d   D ]  }|d   }|
j                  |        |
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&   	providers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 ).&t':':'K'K'M&NO--/	
 -2"N::!#'==$**"=GJ7+<<Cg<63&3H4H4H3IJKK!!S(CHMM?STT!!S(E''(8==/; 
 }} /  *f4'++GR8<<YGGG$$
t}}-g6 	)J";/Ii(	)
 r    c                 $    | j                  |      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                 ,    | j                  |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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      s    
 +0BT*UNHY'UHc<E8C=
 L $ 4   *C * *
)$s) )T%[8I )V
0T#Y 
04U3D 
0	4 	4U 	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]      s3    , , 0 V V  <c4y* c4r    