§
    æ˜ºhW  ã                   ó€   — 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
mZmZ d dlmZmZ d dlmZ  G d„ dee¦  «        ZdS )	é    )ÚAnyÚDictÚListÚOptional)Ú
Embeddings)Ú	BaseModelÚExtraÚFieldÚ	SecretStrÚroot_validator©Úconvert_to_secret_strÚget_from_dict_or_env)ÚRequestsc                   óZ  — 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<   	  G d	„ 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Úmodelc                   ó    — e Zd ZdZej        ZdS )úEdenAiEmbeddings.Configz'Configuration for this pydantic object.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   ÚforbidÚextra© ó    úm/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/langchain_community/embeddings/edenai.pyÚConfigr   !   s   € € € € € Ø5Ð5à”ˆˆˆr!   r#   ÚvaluesÚreturnc                 óH   — t          t          |dd¦  «        ¦  «        |d<   |S )z,Validate that api key exists in environment.r   ÚEDENAI_API_KEYr   )Úclsr$   s     r"   Úvalidate_environmentz%EdenAiEmbeddings.validate_environment&   s1   € õ $9Ý  Ð)9Ð;KÑLÔLñ$
ô $
ˆÐÑ ð ˆr!   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/   r6   r5   ÚpayloadÚrequestÚresponseÚtempÚprovider_responseÚerr_msgÚ
embeddingsÚ
embed_itemr>   s                r"   Ú_generate_embeddingsz%EdenAiEmbeddings._generate_embeddings4   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.
        ©rQ   )rH   r/   s     r"   Úembed_documentsz EdenAiEmbeddings.embed_documents_   s   € ð ×(Ò(¨Ñ/Ô/Ð/r!   rD   c                 ó:   — |                       |g¦  «        d         S )z�Embed a query using EdenAI.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r   rS   )rH   rD   s     r"   Úembed_queryzEdenAiEmbeddings.embed_queryk   s   € ð ×(Ò(¨$¨Ñ0Ô0°Ô3Ð3r!   )r   r   r   r   r
   r   r   r   Ú__annotations__r   Ústrr   r#   r   r   r)   Ústaticmethodr.   r   ÚfloatrQ   rT   rV   r    r!   r"   r   r      s~  € € € € € € ðð ð
 +0¨%°ÐBTÐ*UÑ*UÔ*U€N�H˜YÔ'ÐUÐUÑUà€HˆcÐÐÑØ<à€Eˆ8�CŒ=ÐÐÑðð
ð ð ð ð ñ ô ð ð
 €^ÑÔð¨$ð °4ð ð ð ñ Ôðð ð*˜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.pydantic_v1r   r	   r
   r   r   Úlangchain_core.utilsr   r   Ú&langchain_community.utilities.requestsr   r   r    r!   r"   ú<module>r`      sî   ðØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à 0Ð 0Ð 0Ð 0Ð 0Ð 0ðð ð ð ð ð ð ð ð ð ð ð ð ð ð MÐ LÐ LÐ LÐ LÐ LÐ LÐ Là ;Ð ;Ð ;Ð ;Ð ;Ð ;ðd4ð d4ð d4ð d4ð d4�y *ñ d4ô d4ð d4ð d4ð d4r!   