§
    šŠtj+  ã                   ó€   — 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     úc/var/www/html/CA-Chatbot/venv/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ˆð )Ø.ØO tÔ':×'KÒ'KÑ'MÔ'MÐOÐOØ×-Ò-Ñ/Ô/ð	
ð 
ˆð -2ÀÄÐ"NÐ"NˆàŒ:Ð!Ø#'¤=°$´*Ð"=ˆG�JÑå 7Ð+Ñ+Ô+ˆØ—<’< C¨g�<Ñ6Ô6ˆØÔ 3Ò&Ð&ÝÐJ°HÔ4HÐJÐJÑKÔKÐKØÔ! SÒ(Ð(ÝÐSÀHÄMÐSÐSÑTÔTÐTØÔ! SÒ(Ð(Ýð;ØÔ'ð;ð ;Ø+3¬=ð;ð ;ñô ð ð
 �}Š}‰Œˆà  ¤Ô/ÐØ× Ò  Ñ*Ô*¨fÒ4Ð4Ø'×+Ò+¨G°RÑ8Ô8×<Ò<¸YÑGÔGˆGÝ˜GÑ$Ô$Ð$àˆ
Ø˜tœ}Ô-¨gÔ6ð 	)ð 	)ˆJØ" ;Ô/ˆIà×Ò˜iÑ(Ô(Ð(Ð(àÐr    c                 ó,   — |                       |¦  «        S )z³Embed 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 )z�Embed 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Ô*U€N�H˜YÔ'ÐUÐUÑUà€HˆcÐÐÑØ<à€Eˆ8�CŒ=ÐÐÑðð
 �:Øðñ ô €Lð ð¨$ð °4ð ð ð ñ „Xðð ð*˜Cð *ð *ð *ñ „\ð*ð
)¨$¨s¬)ð )¸¸TÀ%¼[Ô8Ið )ð )ð )ð )ðV
0 T¨#¤Yð 
0°4¸¸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4�y *ñ c4ô c4ð c4ð c4ð c4r    