§
    šŠtjã  ã                   ó�   — 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dS )é    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          ¦   «         j        di |¤Ž | j        dk    rt          d¦  «        ‚| j        dk    rt          d¦  «        ‚| j        dk    rt          d¦  «        ‚d S )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     €úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/embeddings/ovhcloud.pyr   zOVHCloudEmbeddings.__init__   s}   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØÔ Ò"Ð"ÝÐPÑQÔQÐQØŒ?˜bÒ Ð ÝÐNÑOÔOÐOØŒ;˜"ÒÐÝÐJÑKÔKÐKð Ðó    ÚtextÚreturnc                 ó0   — |                       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ÔQÐQr   Útextsc                 óT   — |                       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Ô 1Ð3Cñ
ô 
ð 	
r   c                 ó,   — |                       |¦  «        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                 óD  — |d| j         › �dœ}t          j        ¦   «         }	 |                     d| j        › d| j        › d|› �||¬¦  «        }|j        dk    r¶|j        d	k    ra	 t          |j         	                    d
d¦  «        ¦  «        }t                               d|¦  «         |dk    rt          j        |¦  «         Œ¡	 Œ£|j        dk    r	 t          d¦  «        ‚	 t          d                     |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ÚAuthorizationTz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   se  € ð (Ø: tÔ'8Ð:Ð:ð
ð 
ˆõ
 Ô"Ñ$Ô$ˆð	#Ø—|’|ð5˜tœð 5ð 5¸4¼;ð 5ð 5Ø-2ð5ð 5ð  Øð $ñ ô ˆHð Ô# sÒ*Ð*ØÔ'¨3Ò.Ð.Ø=Ý!$ XÔ%5×%9Ò%9Ð:KÈQÑ%OÔ%OÑ!PÔ!P�JÝ—K’KÐ JÈJÑWÔWÐWØ! A’~�~Ýœ
 :Ñ.Ô.Ð.Ø àQØ ØÔ'¨3Ò.Ð.Ø>Ý$Ð%IÑJÔJÐJØ9Ý ØL×SÒSØ$,Ô$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ÑFÔF€LðL ð Lð Lð Lð Lð Lð LðR¨ð R°°U´ð Rð Rð Rð 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Ð 0Ð 0Ð 0Ð 0Ð 0Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à	ˆÔ	˜8Ñ	$Ô	$€ðf#ð f#ð f#ð f#ð f#˜ Jñ f#ô f#ð f#ð f#ð f#r   