
    Ng                         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     c/var/www/html/ai-engine/env/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 )zGenerate 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 )zEmbed 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 13C
 
 	
r   c                 ,    |                      |          S )zEmbed 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::
 

 "$$	#||5t 5 54; 5 5-25 5   $  H #s**'3..=!$X%5%9%9:KQ%O%O!P!PJKK JJWWW!A~~
:... Q '3..>$%IJJJ9 LSS$,$8x} 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'FC:H2FFFL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   