
    dh+                     x    S SK JrJrJrJr  S SKJr  S SKJrJ	r	J
r
  S SKJrJrJrJr  S SKJr   " S S\\5      rg)	    )AnyDictListOptional)
Embeddings)convert_to_secret_strget_from_dict_or_envpre_init)	BaseModel
ConfigDictField	SecretStr)Requestsc                       \ rS rSr% Sr\" SSS9r\\   \	S'   Sr
\\	S'    Sr\\   \	S	'    \" S
S9r\S\S\4S j5       r\S\4S j5       rS\\   S\\\      4S jrS\\   S\\\      4S jrS\S\\   4S jrSrg)EdenAiEmbeddings   zrEdenAI 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    [        [        USS5      5      US'   U$ )z,Validate that api key exists in environment.r   EDENAI_API_KEY)r   r	   )clsr   s     ]/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/edenai.pyvalidate_environment%EdenAiEmbeddings.validate_environment$   s)     $9 )9;KL$
      c                      SSK Jn   SU  3$ )Nr   __version__z
langchain/)langchain_communityr%   r$   s    r   get_user_agentEdenAiEmbeddings.get_user_agent,   s    3K=))r"   textsc                 .   SnSSSU R                   R                  5        3U R                  5       S.nXR                  S.nU R                  b  U R                  U R                  0US'   [        US9nUR                  X$S9nUR                  S	:  a  [        S
UR                   35      eUR                  S:  a  [        SUR                   35      eUR                  S:w  a%  [        SUR                   SUR                   35      eUR                  5       nXpR                     nUR                  S5      S:X  a,  UR                  S0 5      R                  S5      n	[        U	5      e/ n
XpR                     S    H  nUS   nU
R                  U5        M     U
$ )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)   r0   r/   payloadrequestresponsetempprovider_responseerr_msg
embeddings
embed_itemr8   s                r   _generate_embeddings%EdenAiEmbeddings._generate_embeddings2   s   9 ).&t':':'K'K'M&NO--/	
 -2"N::!#'==$**"=GJ7+<<C<63&3H4H4H3IJKK!!S(CHMM?STT!!S(E''(8==/; 
 }} /  *f4'++GR8<<YGGG$$
}}-g6J";/Ii( 7
 r"   c                 $    U R                  U5      $ )zEmbed a list of documents using EdenAI.

Args:
    texts: The list of texts to embed.

Returns:
    List of embeddings, one for each text.
rK   )rB   r)   s     r   embed_documents EdenAiEmbeddings.embed_documents]   s     ((//r"   r>   c                 ,    U R                  U/5      S   $ )zgEmbed a query using EdenAI.

Args:
    text: The text to embed.

Returns:
    Embeddings for the text.
r   rN   )rB   r>   s     r   embed_queryEdenAiEmbeddings.embed_queryi   s     (($033r"    )__name__
__module____qualname____firstlineno____doc__r   r   r   r   __annotations__r   strr   r   model_configr
   r   r    staticmethodr'   r   floatrK   rO   rR   __static_attributes__rT   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   rT   r"   r   <module>re      s3    , , 0 V V  <c4y* c4r"   