
    dh                        S SK Jr  S SKrS SKrS SKJrJrJrJr  S SK	r	S SK
r
S SKJr  S SKJr  S SKJr  S SKJr  SS jr\" S	S
SS9 " S S\\5      5       rg)    )annotationsN)AnyDictListOptional)
deprecated)
Embeddings)pre_init)	BaseModelc                     [         R                  " SXUS9nUR                  S:X  a  g[        SUR                   35      e! [         R                  R
                   a  n[        SU 35      eSnAff = f)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        [/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/nemo.pyis_endpoint_liver      s    =##FCwO 3& B''(*  // =7s;<<=s   &A A A2A--A2z0.0.37z1.0.0zDirectly instantiating a NeMoEmbeddings from langchain-community is deprecated. Please use langchain-nvidia-ai-endpoints NVIDIAEmbeddings interface.)sinceremovalmessagec                      \ rS rSr% SrSrS\S'   SrS\S'   S	rS\S
'   \	SS j5       r
        SS jrSS jrSS jrSS jrSS jrSS jrSrg)NeMoEmbeddings.   zNeMo embedding models.   int
batch_sizezNV-Embed-QA-003strmodelz#http://localhost:8088/v1/embeddingsapi_endpoint_urlc                n    US   nUS   nSS0n[         R                  " SUSS.5      n[        X$U5        U$ )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_environment#NeMoEmbeddings.validate_environment>   sR     '(w "#56**&%
 	w/    c                h  #    SS0nUR                  U R                  X R                  US.US9 ISh  vN nUR                  5         UR	                  5       I Sh  vN n[
        R                  " U5      nUS   S   S   sSSS5      ISh  vN   $  N^ N8 N	! , ISh  vN  (       d  f       g= f7f)	zqAsync call out to embedding endpoint.

Args:
    text: The text to embed.

Returns:
    Embeddings for the text.
r+   r,   r.   )r1   r   Nr   r   	embedding)postr)   r(   raise_for_statustextr1   loads)selfsessionr<   r0   r   r   answers          r   _aembedding_funcNeMoEmbeddings._aembedding_funcS   s      "#56<<!!**JO   
 
 %%'#==?*FZZ'F&>!$[1
 
 
 +
 
 
 
sV   1B2BB2$BB$B B2BB2BB2B/B!B/+B2c                    [         R                  " UU R                  US.5      nSS0n[        R                  " SU R
                  XCS9n[         R                  " UR                  5      nUS   S   S   nU$ )	ztCall out to Cohere's embedding endpoint.

Args:
    text: The text to embed.

Returns:
    Embeddings for the text.
r.   r+   r,   r   r   r   r   r9   )r1   r2   r(   r   r   r)   r=   r<   )r>   r<   r0   r   r   r   response_jsonr9   s           r   _embedding_funcNeMoEmbeddings._embedding_funck   s|     **(
 "#56##D))7
 

8==1!&)!,[9	r7   c                J    U Vs/ sH  o R                  USS9PM     sn$ s  snf )zEmbed a list of document texts.

Args:
    texts: The list of texts to embed.

Returns:
    List of embeddings, one for each text.
passager0   rE   )r>   	documentsr<   s      r   embed_documentsNeMoEmbeddings.embed_documents   s,     NWWYT$$Ti$@YWWWs    c                "    U R                  USS9$ )Nr-   rI   rJ   )r>   r<   s     r   embed_queryNeMoEmbeddings.embed_query   s    ##DW#==r7   c                   #    [         R                  " 5        ISh  vN nU R                  X!S5      I Sh  vN nUsSSS5      ISh  vN   $  N1 N N	! , ISh  vN  (       d  f       g= f7f)zCall out to NeMo's embedding endpoint async for embedding query text.

Args:
    text: The text to embed.

Returns:
    Embedding for the text.
NrH   )aiohttpClientSessionrA   )r>   r<   r?   r9   s       r   aembed_queryNeMoEmbeddings.aembed_query   sL      ((**g"33G9MMI +**M +***sS   A.AA.AAAA.A	A.AA.A+AA+'A.c                  #    / n[         R                  " 5        ISh  vN n[        S[        U5      U R                  5       Hi  nXX@R                  -    nU HP  nU Vs/ sH  nU R                  X6S5      PM     nn[        R                  " U6 I Sh  vN nUR                  U5        MR     Mk     SSS5      ISh  vN   U$  Ns  snf  N6 N! , ISh  vN  (       d  f       U$ = f7f)zCall 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   rH   )	rR   rS   rangelenr&   rA   asynciogatherextend)	r>   texts
embeddingsr?   batch
text_batchr<   tasksbatch_resultss	            r   aembed_documentsNeMoEmbeddings.aembed_documents   s      
((**gq#e*doo>"5??+BC
&D %/$.D --gYG$.   +2..%*@$@M %%m4 ' ? +*" # + %A +**" sb   C(CC(=CC
:CC	
C0C(;C<C(CC(C%CC% C( N)r4   r   returnr   )r?   r   r<   r'   r0   r'   re   List[float])r<   r'   r0   r'   re   rf   )rK   	List[str]re   List[List[float]])r<   r'   re   rf   )r\   rg   re   rh   )__name__
__module____qualname____firstlineno____doc__r&   __annotations__r(   r)   r
   r5   rA   rE   rL   rO   rT   rb   __static_attributes__rd   r7   r   r"   r"   .   sw     !J"E3"AcA (22"%2362	206	X>r7   r"   )r   r'   r   zOptional[dict]r   r   re   bool)
__future__r   rY   r1   typingr   r   r   r   rR   r   langchain_core._api.deprecationr   langchain_core.embeddingsr	   langchain_core.utilsr
   pydanticr   r   r"   rd   r7   r   <module>rw      s[    "   , ,   6 0 ) => 
		GY
 GGr7   