Ë
    µŒj÷  ã                  ó´   — d dl mZ d dlZd dlZd dlmZmZmZmZ d dl	Z	d dl
Z
d dlmZ d dlmZ d dlmZ d dlmZ dd„Z ed	d
d¬«       G d„ dee«      «       Zy)é    )ÚannotationsN)ÚAnyÚDictÚListÚOptional)Ú
deprecated)Ú
Embeddings)Úpre_init)Ú	BaseModelc                óì   — 	 t        j                  d| ||¬«      }|j                  dk(  ryt        d|j                  › �«      ‚# t         j                  j
                  $ r}t        d|› �«      ‚d}~ww xY w)a‚  
    Check if an endpoint is live by sending a GET request to the specified URL.

    Args:
        url (str): The URL of the endpoint to check.

    Returns:
        bool: True if the endpoint is live (status code 200), False otherwise.

    Raises:
        Exception: If the endpoint returns a non-successful status code or if there is
            an error querying the endpoint.
    ÚPOST©ÚheadersÚdataéÈ   Tz0Endpoint returned a non-successful status code: zError querying the endpoint: N)ÚrequestsÚrequestÚstatus_codeÚ	ExceptionÚ
exceptionsÚRequestException)Úurlr   ÚpayloadÚresponseÚes        úm/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/embeddings/nemo.pyÚis_endpoint_liver      s„   € ð=Ü×#Ñ# F¨C¸ÀwÔOˆð ×Ñ 3Ò&Øô ØBØ×'Ñ'Ð(ð*óð øô ×Ñ×/Ñ/ò =äÐ7¸°sÐ;Ó<Ð<ûð=ús   ‚(A «A ÁA3Á A.Á.A3z0.0.37z1.0.0z”Directly instantiating a NeMoEmbeddings from langchain-community is deprecated. Please use langchain-nvidia-ai-endpoints NVIDIAEmbeddings interface.)ÚsinceÚremovalÚmessagec                  óŽ   — e Zd ZU dZdZded<   dZded<   dZded	<   edd
„«       Z		 	 	 	 	 	 	 	 dd„Z
dd„Zdd„Zdd„Zdd„Zdd„Zy)ÚNeMoEmbeddingszNeMo embedding models.é   ÚintÚ
batch_sizezNV-Embed-QA-003ÚstrÚmodelz#http://localhost:8088/v1/embeddingsÚapi_endpoint_urlc                ón   — |d   }|d   }ddi}t        j                  d|ddœ«      }t        |||«       |S )zHValidate that the end point is alive using the values that are provided.r(   r'   úContent-Typeúapplication/jsonzHello WorldÚquery©Úinputr'   Ú
input_type)ÚjsonÚdumpsr   )ÚclsÚvaluesr   r'   r   r   s         r   Úvalidate_environmentz#NeMoEmbeddings.validate_environment>   sT   € ð Ð'Ñ(ˆØ�w‘ˆð "Ð#5Ð6ˆÜ—*‘*à&ØØ%ñó
ˆô 	˜˜g wÔ/àˆó    c              ƒ  ód  K  — ddi}|j                  | j                  || j                  |dœ|¬«      4 ƒd{  –—† }|j                  «        |j	                  «       ƒ d{  –—† }t        j                  |«      }|d   d   d   cddd«      ƒd{  –—†  S 7 Œ]7 Œ77 Œ	# 1 ƒd{  –—†7  sw Y   yxY w­w)	z™Async call out to embedding endpoint.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r*   r+   r-   )r0   r   Nr   r   Ú	embedding)Úpostr(   r'   Úraise_for_statusÚtextr0   Úloads)ÚselfÚsessionr:   r/   r   r   Úanswers          r   Ú_aembedding_funczNeMoEmbeddings._aembedding_funcS   s¬   è ø€ ð "Ð#5Ð6ˆà—<‘<Ø×!Ñ!Ø¨$¯*©*ÀJÑOØð  ÷ 
ô 
ð Ø×%Ñ%Ô'Ø#Ÿ=™=›?×*ˆFÜ—Z‘Z Ó'ˆFØ˜&‘> !Ñ$ [Ñ1÷
÷ 
ò 
øð +øð
ø÷ 
÷ 
ñ 
üsV   ‚5B0·B¸B0»$BÁBÁ #BÂB0ÂBÂB0ÂBÂB0ÂB-Â!B$Â"B-Â)B0c                óî   — t        j                  || j                  |dœ«      }ddi}t        j                  d| j
                  ||¬«      }t        j                  |j                  «      }|d   d   d   }|S )	zœCall out to Cohere's embedding endpoint.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        r-   r*   r+   r   r   r   r   r7   )r0   r1   r'   r   r   r(   r;   r:   )r<   r:   r/   r   r   r   Úresponse_jsonr7   s           r   Ú_embedding_funczNeMoEmbeddings._embedding_funck   s~   € ô —*‘*àØŸ™Ø(ñó
ˆð "Ð#5Ð6ˆä×#Ñ#Ø�D×)Ñ)°7Àô
ˆô Ÿ
™
 8§=¡=Ó1ˆØ! &Ñ)¨!Ñ,¨[Ñ9ˆ	àÐr5   c                óN   — |D �cg c]  }| j                  |d¬«      ‘Œ c}S c c}w )z«Embed a list of document texts.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        Úpassage©r/   ©rB   )r<   Ú	documentsr:   s      r   Úembed_documentszNeMoEmbeddings.embed_documents†   s.   € ñ NWÓWÉYÀT�×$Ñ$ T°iÐ$Õ@ÈYÑWÐWùÒWs   …"c                ó(   — | j                  |d¬«      S )Nr,   rE   rF   )r<   r:   s     r   Úembed_queryzNeMoEmbeddings.embed_query‘   s   € Ø×#Ñ# D°WÐ#Ó=Ð=r5   c              ƒ  óÖ   K  — t        j                  «       4 ƒd{  –—† }| j                  ||d«      ƒ d{  –—† }|cddd«      ƒd{  –—†  S 7 Œ27 Œ7 Œ	# 1 ƒd{  –—†7  sw Y   yxY w­w)z¸Call out to NeMo's embedding endpoint async for embedding query text.

        Args:
            text: The text to embed.

        Returns:
            Embedding for the text.
        NrD   )ÚaiohttpÚClientSessionr?   )r<   r:   r=   r7   s       r   Úaembed_queryzNeMoEmbeddings.aembed_query”   sR   è ø€ ô ×(Ñ(×*Ô*¨gØ"×3Ñ3°G¸TÀ9ÓM×MˆIØ÷ +×*Ò*øØMøð +ø×*×*Ñ*üsS   ‚A)›AœA)ŸA¶A·A¼A)ÁAÁ	A)ÁAÁA)ÁA&ÁAÁA&Á"A)c              ƒ  óÀ  K  — g }t        j                  «       4 ƒd{  –—† }t        dt        |«      | j                  «      D ]f  }|||| j                  z    }|D ]M  }|D �cg c]  }| j                  ||d«      ‘Œ }}t        j                  |Ž ƒ d{  –—† }|j                  |«       ŒO Œh ddd«      ƒd{  –—†  |S 7 ŒŸc c}w 7 Œ27 Œ# 1 ƒd{  –—†7  sw Y   |S xY w­w)zÒCall out to NeMo's embedding endpoint async for embedding search docs.

        Args:
            texts: The list of texts to embed.

        Returns:
            List of embeddings, one for each text.
        Nr   rD   )	rL   rM   ÚrangeÚlenr%   r?   ÚasyncioÚgatherÚextend)	r<   ÚtextsÚ
embeddingsr=   ÚbatchÚ
text_batchr:   ÚtasksÚbatch_resultss	            r   Úaembed_documentszNeMoEmbeddings.aembed_documents¢   sä   è ø€ ð ˆ
ä×(Ñ(×*Ô*¨gÜ˜q¤# e£*¨d¯o©oÖ>�Ø" 5¨5°4·?±?Ñ+BÐC�
ã&�Dñ %/óá$.˜Dð ×-Ñ-¨g°t¸YÕGØ$.ð ð ô +2¯.©.¸%Ð*@×$@�Mð ×%Ñ% mÕ4ñ 'ð ?÷ +×*ð" Ðð# +úòð %Aøð +ø×*×*Ð*ð" Ðüsb   ‚C�B=žC¡?CÁ B?
Á:CÂC
ÂCÂ+CÂ6CÂ7CÂ?CÃCÃCÃCÃCÃCN)r3   r   Úreturnr   )r=   r   r:   r&   r/   r&   r\   úList[float])r:   r&   r/   r&   r\   r]   )rG   ú	List[str]r\   úList[List[float]])r:   r&   r\   r]   )rU   r^   r\   r_   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r%   Ú__annotations__r'   r(   r
   r4   r?   rB   rH   rJ   rN   r[   © r5   r   r"   r"   .   sw   … ñ !à€J�ÓØ"€Eˆ3Ó"ØAÐ�cÓAàòó ðð(2Øð2Ø"%ð2Ø36ð2à	ó2ó0ó6	Xó>óôr5   r"   )r   r&   r   zOptional[dict]r   r   r\   Úbool)Ú
__future__r   rR   r0   Útypingr   r   r   r   rL   r   Úlangchain_core._api.deprecationr   Úlangchain_core.embeddingsr	   Úlangchain_core.utilsr
   Úpydanticr   r   r"   re   r5   r   Ú<module>rm      s[   ðÝ "ã Û ß ,Ó ,ã Û Ý 6Ý 0Ý )Ý ó=ñ> Ø
Øð	ô	ôG�Y 
ó GóñGr5   