Ë
    µŒjT  ã                   ó²   — d dl mZmZmZmZmZ d dlZd dlmZ d dl	m
Z
mZmZ d dlmZmZmZ d dlmZmZ d dlmZmZ dZd	Z G d
„ de«      Z G d„ dee«      Zy)é    )ÚAnyÚDictÚListÚMappingÚOptionalN)Ú
Embeddings)Úconvert_to_secret_strÚget_from_dict_or_envÚpre_init)Ú	BaseModelÚ
ConfigDictÚ	SecretStr)ÚHTTPAdapterÚRetry)ÚNotRequiredÚ	TypedDicté   z$https://api.embaas.io/v1/embeddings/c                   ó<   — e Zd ZU dZeed<   ee   ed<   ee   ed<   y)ÚEmbaasEmbeddingsPayloadz&Payload for the Embaas embeddings API.ÚmodelÚtextsÚinstructionN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__r   r   © ó    úo/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/embeddings/embaas.pyr   r      s   … Ù0àƒJØ�‰9ÓØ˜SÑ!Ô!r    r   c                   ó`  — e Zd ZU dZdZeed<   	 dZee   ed<   	 e	Z
eed<   	 dZee   ed<   	 dZee   ed	<   	 d
Zee   ed<    ed¬«      Zededefd„«       Zedeeef   fd„«       Zdee   defd„Zdedee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 y)ÚEmbaasEmbeddingsa  Embaas's embedding service.

    To use, you should have the
    environment variable ``EMBAAS_API_KEY`` set with your API key, or pass
    it as a named parameter to the constructor.

    Example:
        .. code-block:: python

            # initialize with default model and instruction
            from langchain_community.embeddings import EmbaasEmbeddings
            emb = EmbaasEmbeddings()

            # initialize with custom model and instruction
            from langchain_community.embeddings import EmbaasEmbeddings
            emb_model = "instructor-large"
            emb_inst = "Represent the Wikipedia document for retrieval"
            emb = EmbaasEmbeddings(
                model=emb_model,
                instruction=emb_inst
            )
    ze5-large-v2r   Nr   Úapi_urlÚembaas_api_keyé   Úmax_retriesé   ÚtimeoutÚforbid)ÚextraÚvaluesÚreturnc                 ó<   — t        t        |dd«      «      }||d<   |S )z?Validate that api key and python package exists in environment.r%   ÚEMBAAS_API_KEY)r	   r
   )Úclsr,   r%   s      r!   Úvalidate_environmentz%EmbaasEmbeddings.validate_environment?   s.   € ô /Ü  Ð)9Ð;KÓLó
ˆð $2ˆÐÑ Øˆr    c                 ó4   — | j                   | j                  dœS )zGet the identifying params.©r   r   r3   )Úselfs    r!   Ú_identifying_paramsz$EmbaasEmbeddings._identifying_paramsH   s   € ð Ÿ™°D×4DÑ4DÑEÐEr    r   c                 ój   — t        || j                  ¬«      }| j                  r| j                  |d<   |S )z&Generates payload for the API request.)r   r   r   )r   r   r   )r4   r   Úpayloads      r!   Ú_generate_payloadz"EmbaasEmbeddings._generate_payloadM   s0   € ä)°¸T¿Z¹ZÔHˆØ×ÒØ%)×%5Ñ%5ˆG�MÑ"Øˆr    r7   c                 ó¸  — d| j                   j                  «       › �ddœ}t        j                  «       }t	        | j
                  ddgd¬«      }|j                  dt        |¬	«      «       |j                  d
t        |¬	«      «       |j                  | j                  ||| j                  ¬«      }|j                  «       }|d   D �cg c]  }|d   ‘Œ	 }}|S c c}w )z;Sends a request to the Embaas API and handles the response.zBearer zapplication/json)ÚAuthorizationzContent-Typeg      à?ÚPOSTT)ÚtotalÚbackoff_factorÚallowed_methodsÚraise_on_statuszhttp://)r'   zhttps://)ÚheadersÚjsonr)   ÚdataÚ	embedding)r%   Úget_secret_valueÚrequestsÚSessionr   r'   Úmountr   Úpostr$   r)   rA   )	r4   r7   r@   ÚsessionÚretriesÚresponseÚparsed_responseÚitemÚ
embeddingss	            r!   Ú_handle_requestz EmbaasEmbeddings._handle_requestT   sÞ   € ð  ' t×':Ñ':×'KÑ'KÓ'MÐ&NÐOØ.ñ
ˆô
 ×"Ñ"Ó$ˆÜØ×"Ñ"ØØ#˜HØ ô	
ˆð 	�‰�i¤¸Ô!AÔBØ�‰�j¤+¸'Ô"BÔCØ—<‘<Ø�L‰LØØØ—L‘Lð	  ó 
ˆð #Ÿ-™-›/ˆØ4CÀFÒ4KÓLÑ4K¨D�d˜;Ó'Ð4Kˆ
ÐLàÐùò Ms   ÃCc                 óR  — | j                  |«      }	 | j                  |«      S # t        j                  j                  $ re}|j
                  �|j
                  j                  st        d|› �«      ‚|j
                  j                  «       }d|v rt        d|d   › �«      ‚‚ d}~ww xY w)z)Generate embeddings using the Embaas API.Nz'Error raised by embaas embeddings API: Úmessagez1Validation Error raised by embaas embeddings API:)	r8   rO   rE   Ú
exceptionsÚRequestExceptionrK   ÚtextÚ
ValueErrorrA   )r4   r   r7   ÚerL   s        r!   Ú_generate_embeddingsz%EmbaasEmbeddings._generate_embeddingsq   s¨   € à×(Ñ(¨Ó/ˆð	Ø×'Ñ'¨Ó0Ð0øÜ×"Ñ"×3Ñ3ò 
	Ø�z‰zÐ!¨¯©¯ªÜ Ð#JÈ1È#Ð!NÓOÐOàŸj™jŸo™oÓ/ˆOØ˜OÑ+Ü ØGØ& yÑ1Ð2ð4óð ð ûð
	ús   “$ ¤B&ÁA B!Â!B&c                 óò   — t        dt        |«      t        «      D �cg c]  }|||t        z    ‘Œ }}|D �cg c]  }| j                  |«      ‘Œ }}|D ��cg c]  }|D ]  }|‘Œ Œ c}}S c c}w c c}w c c}}w )z¼Get embeddings for a list of texts.

        Args:
            texts: The list of texts to get embeddings for.

        Returns:
            List of embeddings, one for each text.
        r   )ÚrangeÚlenÚMAX_BATCH_SIZErW   )r4   r   ÚiÚbatchesÚbatchrN   rC   s          r!   Úembed_documentsz EmbaasEmbeddings.embed_documents‚   sˆ   € ô 49¸¼CÀ»JÌÔ3Wó
Ù3W¨aˆE�!�aœ.Ñ(Ò)Ð3Wð 	ð 
ñ ELÓLÁG¸5�d×/Ñ/°Õ6ÀGˆ
ÐLá'1ÔI¡z˜eÃ5°i’	À5�	 zÒIÐIùò
ùò MùãIs   �A)¶A.ÁA3rT   c                 ó,   — | j                  |g«      d   S )z�Get embeddings for a single text.

        Args:
            text: The text to get embeddings for.

        Returns:
            List of embeddings.
        r   )r_   )r4   rT   s     r!   Úembed_queryzEmbaasEmbeddings.embed_query’   s   € ð ×#Ñ# T FÓ+¨AÑ.Ð.r    )!r   r   r   r   r   r   r   r   r   ÚEMBAAS_API_URLr$   r%   r   r'   Úintr)   r   Úmodel_configr   r   r1   Úpropertyr   r   r5   r   r   r8   ÚfloatrO   rW   r_   ra   r   r    r!   r#   r#      sJ  … ñð. €Eˆ3ÓØ(Ø!%€K�˜#‘Ó%Ø:Ø!€GˆSÓ!Ø0Ø*.€N�H˜YÑ'Ó.Ø,Ø!"€K�˜#‘Ó"Ø$Ø€GˆX�c‰]ÓáØô€Lð ð¨$ð °4ò ó ðð ðF W¨S°#¨XÑ%6ò Fó ðFð t¨C¡yð Ð5Ló ðÐ'>ð À4ÈÈUÉÑCTó ð:¨$¨s©)ð ¸¸TÀ%¹[Ñ8Ió ð"J T¨#¡Yð J°4¸¸U¹Ñ3Dó Jð 	/ ð 	/¨¨U©ô 	/r    r#   )Útypingr   r   r   r   r   rE   Úlangchain_core.embeddingsr   Úlangchain_core.utilsr	   r
   r   Úpydanticr   r   r   Úrequests.adaptersr   r   Útyping_extensionsr   r   r[   rb   r   r#   r   r    r!   Ú<module>rm      sK   ðß 5Õ 5ã Ý 0ß VÑ Vß 5Ñ 5ß 0ß 4ð €Ø7€ô"˜iô "ôD/�y *õ D/r    