§
    æ˜ºh|  ã                   óÀ   — 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mZ d dl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)Ú	BaseModelÚExtraÚ	SecretStrÚroot_validator©Úconvert_to_secret_strÚget_from_dict_or_env)Ú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   © ó    úm/var/www/html/services/rag-service/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<    G d„ 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é   Útimeoutc                   ó    — e Zd ZdZej        ZdS )úEmbaasEmbeddings.Configz'Configuration for this pydantic object.N)r   r   r   r   r
   ÚforbidÚextrar    r!   r"   ÚConfigr,   ;   s   € € € € € Ø5Ð5à”ˆˆˆr!   r/   ÚvaluesÚreturnc                 óL   — t          t          |dd¦  «        ¦  «        }||d<   |S )z?Validate that api key and python package exists in environment.r&   ÚEMBAAS_API_KEYr   )Úclsr0   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   r7   )Úselfs    r"   Ú_identifying_paramsz$EmbaasEmbeddings._identifying_paramsI   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   )r8   r   Úpayloads      r"   Ú_generate_payloadz"EmbaasEmbeddings._generate_payloadN   s3   € å)°¸T¼ZÐHÑHÔHˆØÔð 	6Ø%)Ô%5ˆG�MÑ"Øˆr!   r;   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>n   s   € ÐLÐLÐL¨D�d˜;Ô'ÐLÐLÐLr!   Údata)r&   Úget_secret_valueÚrequestsÚSessionr   r(   Úmountr   Úpostr%   r*   rE   )r8   r;   rD   ÚsessionÚretriesÚresponseÚparsed_responseÚ
embeddingss           r"   Ú_handle_requestz EmbaasEmbeddings._handle_requestU   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:)	r<   rV   rM   Ú
exceptionsÚRequestExceptionrS   ÚtextÚ
ValueErrorrE   )r8   r   r;   ÚerT   s        r"   Ú_generate_embeddingsz%EmbaasEmbeddings._generate_embeddingsr   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)rH   Úir   s     €r"   rJ   z4EmbaasEmbeddings.embed_documents.<locals>.<listcomp>Œ   s5   ø€ ð 
ð 
ð 
Ø./ˆE�!�a�.Ñ(Ð(Ô)ð
ð 
ð 
r!   r   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r    )r^   )rH   Úbatchr8   s     €r"   rJ   z4EmbaasEmbeddings.embed_documents.<locals>.<listcomp>�   s'   ø€ ÐLÐLÐL¸5�d×/Ò/°Ñ6Ô6ÐLÐLÐLr!   c                 ó   — g | ]	}|D ]}|‘ŒŒ
S r    r    )rH   rd   rG   s      r"   rJ   z4EmbaasEmbeddings.embed_documents.<locals>.<listcomp>‘   s%   € ÐIÐIÐI˜eÀ5ÐIÐI°i�	ÐIÐIÐIÐIr!   )ÚrangeÚlenra   )r8   r   ÚbatchesrU   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!   r[   c                 ó:   — |                       |g¦  «        d         S )z�Get embeddings for a single text.

        Args:
            text: The text to get embeddings for.

        Returns:
            List of embeddings.
        r   )ri   )r8   r[   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/   r   r   r5   Úpropertyr   r   r9   r   r   r<   ÚfloatrV   r^   ri   rk   r    r!   r"   r$   r$      s  € € € € € € ðð ð. €Eˆ3ÐÐÑØ(Ø!%€K�˜#”Ð%Ð%Ñ%Ø:Ø!€GˆSÐ!Ð!Ñ!Ø0Ø*.€N�H˜YÔ'Ð.Ð.Ñ.Ø,Ø!"€K�˜#”Ð"Ð"Ñ"Ø$Ø€GˆX�cŒ]ÐÐÑðð ð ð ð ñ ô ð ð
 €^ÑÔð¨$ð °4ð ð ð ñ Ôðð ð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   rM   Úlangchain_core.embeddingsr   Úlangchain_core.pydantic_v1r	   r
   r   r   Úlangchain_core.utilsr   r   Úrequests.adaptersr   r   Útyping_extensionsr   r   ra   rl   r   r$   r    r!   r"   ú<module>rv      s,  ðØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à €€€Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ð €Ø7€ð"ð "ð "ð "ð "˜iñ "ô "ð "ðE/ð E/ð E/ð E/ð E/�y *ñ E/ô E/ð E/ð E/ð E/r!   