§
    šŠtjT  ã                   óÀ   — 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dS )é    )Ú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                   óJ   — e Zd ZU dZeed<   ee         ed<   ee         ed<   dS )ÚEmbaasEmbeddingsPayloadz&Payload for the Embaas embeddings API.ÚmodelÚtextsÚinstructionN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__r   r   © ó    úc/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/embeddings/embaas.pyr   r      sB   € € € € € € Ø0Ð0à€J€J�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 dS )Ú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                 óL   — 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?   s6   € õ /Ý  Ð)9Ð;KÑLÔLñ
ô 
ˆð $2ˆÐÑ Øˆr    c                 ó    — | j         | j        dœS )zGet the identifying params.©r   r   r3   )Úselfs    r!   Ú_identifying_paramsz$EmbaasEmbeddings._identifying_paramsH   s   € ð œ°DÔ4DÐEÐEÐEr    r   c                 óT   — 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   s3   € å)°¸T¼ZÐHÑHÔHˆØÔð 	6Ø%)Ô%5ˆG�MÑ"Øˆr    r7   c                 ó¾  — d| j                              ¦   «         › �ddœ}t          j        ¦   «         }t	          | j        ddgd¬¦  «        }|                     dt          |¬	¦  «        ¦  «         |                     d
t          |¬	¦  «        ¦  «         |                     | j	        ||| j
        ¬¦  «        }|                     ¦   «         }d„ |d         D ¦   «         }|S )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)   c                 ó   — g | ]
}|d          ‘ŒS )Ú	embeddingr   )Ú.0Úitems     r!   ú
<listcomp>z4EmbaasEmbeddings._handle_request.<locals>.<listcomp>m   s   € ÐLÐLÐL¨D�d˜;Ô'ÐLÐLÐLr    Údata)r%   Úget_secret_valueÚrequestsÚSessionr   r'   Úmountr   Úpostr$   r)   rA   )r4   r7   r@   ÚsessionÚretriesÚresponseÚparsed_responseÚ
embeddingss           r!   Ú_handle_requestz EmbaasEmbeddings._handle_requestT   sø   € ð P tÔ':×'KÒ'KÑ'MÔ'MÐOÐOØ.ð
ð 
ˆõ
 Ô"Ñ$Ô$ˆÝØÔ"ØØ#˜HØ ð	
ñ 
ô 
ˆð 	�Š�i¥¸Ð!AÑ!AÔ!AÑBÔBÐBØ�Š�j¥+¸'Ð"BÑ"BÔ"BÑCÔCÐCØ—<’<ØŒLØØØ”Lð	  ñ 
ô 
ˆð #Ÿ-š-™/œ/ˆØLÐL°OÀFÔ4KÐLÑLÔLˆ
àÐr    c                 óF  — |                       |¦  «        }	 |                      |¦  «        S # t          j        j        $ r`}|j        �|j        j        st          d|› �¦  «        ‚|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   rR   rI   Ú
exceptionsÚRequestExceptionrO   ÚtextÚ
ValueErrorrA   )r4   r   r7   ÚerP   s        r!   Ú_generate_embeddingsz%EmbaasEmbeddings._generate_embeddingsq   sÅ   € à×(Ò(¨Ñ/Ô/ˆð	Ø×'Ò'¨Ñ0Ô0Ð0øÝÔ"Ô3ð 
	ð 
	ð 
	ØŒzÐ!¨¬¬Ð!Ý Ð!NÈ1Ð!NÐ!NÑOÔOÐOàœjŸošoÑ/Ô/ˆOØ˜OÐ+Ð+Ý ð4Ø& yÔ1ð4ð 4ñô ð ð øøøøð
	øøøs   —, ¬B Á ABÂB c                 ó˜   ‡ ‡— ˆfd„t          dt          ‰¦  «        t          ¦  «        D ¦   «         }ˆ fd„|D ¦   «         }d„ |D ¦   «         S )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.
        c                 ó4   •— g | ]}‰||t           z   …         ‘ŒS r   )ÚMAX_BATCH_SIZE)rD   Úir   s     €r!   rF   z4EmbaasEmbeddings.embed_documents.<locals>.<listcomp>‹   s5   ø€ ð 
ð 
ð 
Ø./ˆE�!�a�.Ñ(Ð(Ô)ð
ð 
ð 
r    r   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   )rZ   )rD   Úbatchr4   s     €r!   rF   z4EmbaasEmbeddings.embed_documents.<locals>.<listcomp>Ž   s'   ø€ ÐLÐLÐL¸5�d×/Ò/°Ñ6Ô6ÐLÐLÐLr    c                 ó   — g | ]	}|D ]}|‘ŒŒ
S r   r   )rD   r`   rC   s      r!   rF   z4EmbaasEmbeddings.embed_documents.<locals>.<listcomp>�   s%   € ÐIÐIÐI˜eÀ5ÐIÐI°i�	ÐIÐIÐIÐIr    )ÚrangeÚlenr]   )r4   r   ÚbatchesrQ   s   ``  r!   Úembed_documentsz EmbaasEmbeddings.embed_documents‚   sn   øø€ ð
ð 
ð 
ð 
Ý38¸½CÀ¹J¼JÍÑ3WÔ3Wð
ñ 
ô 
ˆð MÐLÐLÐLÀGÐLÑLÔLˆ
àIÐI zÐIÑIÔIÐIr    rW   c                 ó:   — |                       |g¦  «        d         S )z�Get embeddings for a single text.

        Args:
            text: The text to get embeddings for.

        Returns:
            List of embeddings.
        r   )re   )r4   rW   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   ÚfloatrR   rZ   re   rg   r   r    r!   r#   r#      sû  € € € € € € ðð ð. €Eˆ3ÐÐÑØ(Ø!%€K�˜#”Ð%Ð%Ñ%Ø:Ø!€GˆSÐ!Ð!Ñ!Ø0Ø*.€N�H˜YÔ'Ð.Ð.Ñ.Ø,Ø!"€K�˜#”Ð"Ð"Ñ"Ø$Ø€GˆX�cŒ]ÐÐÑà�:Øðñ ô €Lð ð¨$ð °4ð ð ð ñ „Xðð ðF W¨S°#¨XÔ%6ð Fð Fð Fñ „XðFð t¨C¤yð Ð5Lð ð ð ð ðÐ'>ð À4ÈÈUÌÔCTð ð ð ð ð:¨$¨s¬)ð ¸¸TÀ%¼[Ô8Ið ð ð ð ð"J T¨#¤Yð J°4¸¸U¼Ô3Dð Jð Jð Jð Jð 	/ ð 	/¨¨U¬ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/r    r#   )Útypingr   r   r   r   r   rI   Úlangchain_core.embeddingsr   Úlangchain_core.utilsr	   r
   r   Úpydanticr   r   r   Úrequests.adaptersr   r   Útyping_extensionsr   r   r]   rh   r   r#   r   r    r!   ú<module>rs      s,  ðØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à €€€Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ð €Ø7€ð"ð "ð "ð "ð "˜iñ "ô "ð "ðD/ð D/ð D/ð D/ð D/�y *ñ D/ô D/ð D/ð D/ð D/r    