Ë
    µŒjã  ã                   óŒ   — d dl Z d dlZd dlZd dlmZmZ d dlZd dlmZ d dl	m
Z
mZ  ej                  e«      Z G d„ de
e«      Zy)é    N)ÚAnyÚList)Ú
Embeddings)Ú	BaseModelÚ
ConfigDictc                   óÔ   ‡ — e Zd ZU dZ	 dZeed<   	 dZeed<   	 dZeed<    e	dd¬	«      Z
d
efˆ fd„Zdedee   fd„Zdee   deee      fd„Zdedee   fd„Zdedededefd„Zˆ xZS )ÚOVHCloudEmbeddingsz+
    OVHcloud AI Endpoints Embeddings.
    Ú Úaccess_tokenÚ
model_nameÚkeplerÚregionÚforbid© )ÚextraÚprotected_namespacesÚkwargsc                 óÀ   •— t        ‰| �  di |¤Ž | j                  dk(  rt        d«      ‚| j                  dk(  rt        d«      ‚| j
                  dk(  rt        d«      ‚y )Nr
   z1Access token is required for OVHCloud embeddings.z/Model name is required for OVHCloud embeddings.z+Region is required for OVHCloud embeddings.r   )ÚsuperÚ__init__r   Ú
ValueErrorr   r   )Úselfr   Ú	__class__s     €úq/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/embeddings/ovhcloud.pyr   zOVHCloudEmbeddings.__init__   sb   ø€ Ü‰ÑÑ"˜6Ò"Ø×Ñ Ò"ÜÐPÓQÐQØ�?‰?˜bÒ ÜÐNÓOÐOØ�;‰;˜"ÒÜÐJÓKÐKð ó    ÚtextÚreturnc                 ó(   — | j                  d|d«      S )z«Generate embeddings from OVHCLOUD AIE.
        Args:
            text (str): The text to embed.
        Returns:
            List[float]: Embeddings for the text.
        z
text/plainÚtext2vec)Ú_send_request_to_ai_endpoints©r   r   s     r   Ú_generate_embeddingz&OVHCloudEmbeddings._generate_embedding&   s   € ð ×1Ñ1°,ÀÀjÓQÐQr   Útextsc                 óN   — | j                  dt        j                  |«      d«      S )zÉEmbed a list of documents.
        Args:
           texts (List[str]): The list of texts to embed.

        Returns:
           List[List[float]]: List of embeddings, one for each input text.

        zapplication/jsonÚbatch_text2vec)r    ÚjsonÚdumps)r   r#   s     r   Úembed_documentsz"OVHCloudEmbeddings.embed_documents0   s(   € ð ×1Ñ1Ø¤§
¡
¨5Ó 1Ð3Có
ð 	
r   c                 ó$   — | j                  |«      S )zŸEmbed a single query text.
        Args:
            text (str): The text to embed.
        Returns:
            List[float]: Embeddings for the text.
        )r"   r!   s     r   Úembed_queryzOVHCloudEmbeddings.embed_query>   s   € ð ×'Ñ'¨Ó-Ð-r   ÚcontentTypeÚpayloadÚroutec                 óX  — |d| j                   › �dœ}t        j                  «       }	 |j                  d| j                  › d| j
                  › d|› �||¬«      }|j                  dk7  r´|j                  dk(  rY	 t        |j                  j                  d	d
«      «      }t        j                  d|«       |d
kD  rt        j                  |«       Œ§	 Œ©|j                  dk(  r	 t        d«      ‚	 t        dj                  |j                  |j                   ¬«      «      ‚|j#                  «       S )a*  Send a HTTPS request to OVHcloud AI Endpoints
        Args:
            contentType (str): The content type of the request, application/json or text/plain.
            payload (str): The payload of the request.
            route (str): The route of the request, batch_text2vec or text2vec.
        zBearer )zcontent-typeÚAuthorizationzhttps://z.endpoints.z.ai.cloud.ovh.net/api/)ÚheadersÚdataéÈ   i­  zRateLimit-Resetr   z(Rate limit exceeded. Waiting %d seconds.i‘  z"Unauthorized, retry with new tokenz6Request failed with status code: {status_code}, {text})Ústatus_coder   )r   ÚrequestsÚsessionÚpostr   r   r3   Úintr0   ÚgetÚloggerÚinfoÚtimeÚsleepr   Úformatr   r&   )r   r+   r,   r-   r0   r5   ÚresponseÚ
reset_times           r   r    z0OVHCloudEmbeddings._send_request_to_ai_endpointsG   s7  € ð (Ø& t×'8Ñ'8Ð&9Ð:ñ
ˆô
 ×"Ñ"Ó$ˆØØ—|‘|à˜tŸ™Ð/¨{¸4¿;¹;¸-Ø,¨U¨Gð5ð  Øð $ó ˆHð ×#Ñ# sÒ*Ø×'Ñ'¨3Ò.Ø=Ü!$ X×%5Ñ%5×%9Ñ%9Ð:KÈQÓ%OÓ!P�JÜ—K‘KÐ JÈJÔWØ! A’~ÜŸ
™
 :Ô.Ø àQØ Ø×'Ñ'¨3Ò.Ø>Ü$Ð%IÓJÐJØ9Ü ØL×SÑSØ$,×$8Ñ$8¸x¿}¹}ð Tó óð ð
 —=‘=“?Ð"r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚstrÚ__annotations__r   r   r   Úmodel_configr   r   r   Úfloatr"   r(   r*   r    Ú__classcell__)r   s   @r   r	   r	      sÁ   ø… ñð .Ø€L�#ÓàEØ€J�Óà'Ø€FˆCÓá HÀ2ÔF€LðL õ LðR¨ð R°°U±ó Rð
 T¨#¡Yð 
°4¸¸U¹Ñ3Dó 
ð. ð .¨¨U©ó .ð,#Øð,#Ø),ð,#Ø58ð,#à	÷,#r   r	   )r&   Úloggingr;   Útypingr   r   r4   Úlangchain_core.embeddingsr   Úpydanticr   r   Ú	getLoggerr@   r9   r	   r   r   r   Ú<module>rN      s<   ðÛ Û Û ß ã Ý 0ß *à	ˆ×	Ñ	˜8Ó	$€ôf#˜ Jõ f#r   