
    dh1                         S SK r S SKJrJrJrJr  S SKrS SKJr  S SK	J
r
  S SKJrJr  S SKJrJr  \" SSS	S
9 " S S\\
5      5       rg)    N)Dict	GeneratorListOptional)
deprecated)
Embeddings)get_from_dict_or_envpre_init)	BaseModel
ConfigDictz0.3.16z1.0z)langchain_sambanova.SambaStudioEmbeddings)sinceremovalalternative_importc            	       :   \ rS rSr% SrSr\\S'    Sr\\S'    Sr	\\S'    Sr
\\S'    Sr\\S'    0 r\\S	'    S
r\\S'    \" SS9r\S\S\4S j5       rS\4S jrS\S\4S jrS\\   S\S\4S jr SS\\   S\\   S\\\      4S jjrS\S\\   4S jrSrg)SambaStudioEmbeddings   a  SambaNova embedding models.

To use, you should have the environment variables
``SAMBASTUDIO_EMBEDDINGS_BASE_URL``, ``SAMBASTUDIO_EMBEDDINGS_BASE_URI``
``SAMBASTUDIO_EMBEDDINGS_PROJECT_ID``, ``SAMBASTUDIO_EMBEDDINGS_ENDPOINT_ID``,
``SAMBASTUDIO_EMBEDDINGS_API_KEY``
set with your personal sambastudio variable or pass it as a named parameter
to the constructor.

Example:
    .. code-block:: python

        from langchain_community.embeddings import SambaStudioEmbeddings

        embeddings = SambaStudioEmbeddings(sambastudio_embeddings_base_url=base_url,
                                      sambastudio_embeddings_base_uri=base_uri,
                                      sambastudio_embeddings_project_id=project_id,
                                      sambastudio_embeddings_endpoint_id=endpoint_id,
                                      sambastudio_embeddings_api_key=api_key,
                                      batch_size=32)
        (or)

        embeddings = SambaStudioEmbeddings(batch_size=32)

        (or)

        # CoE example
        embeddings = SambaStudioEmbeddings(
            batch_size=1,
            model_kwargs={
                'select_expert':'e5-mistral-7b-instruct'
            }
        )
 sambastudio_embeddings_base_urlsambastudio_embeddings_base_uri!sambastudio_embeddings_project_id"sambastudio_embeddings_endpoint_idsambastudio_embeddings_api_keymodel_kwargs    
batch_size )protected_namespacesvaluesreturnc                     [        USS5      US'   [        USSSS9US'   [        USS5      US'   [        US	S
5      US	'   [        USS5      US'   U$ )z?Validate that api key and python package exists in environment.r   SAMBASTUDIO_EMBEDDINGS_BASE_URLr   SAMBASTUDIO_EMBEDDINGS_BASE_URIapi/predict/generic)defaultr   !SAMBASTUDIO_EMBEDDINGS_PROJECT_IDr   "SAMBASTUDIO_EMBEDDINGS_ENDPOINT_IDr   SAMBASTUDIO_EMBEDDINGS_API_KEY)r	   )clsr   s     `/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/sambanova.pyvalidate_environment*SambaStudioEmbeddings.validate_environmentK   s     5I57X5
01 5I--)	5
01 7K//7
23
 8L008
34
 4H46V4
/0     c           	         SU R                   ;   a  U R                  nOMU R                  R                  5        VVs0 sH'  u  p#U[        U5      R                  [        U5      S._M)     nnn[        R                  " U5      nU$ s  snnf )zo
Get the tuning parameters to use when calling the model

Returns:
    The tuning parameters as a JSON string.
api/v2/predict/generic)typevalue)r   r   itemsr/   __name__strjsondumps)selftuning_params_dictkvtuning_paramss        r)   _get_tuning_params(SambaStudioEmbeddings._get_tuning_paramsf   s     $t'K'KK!%!2!2 "..446"6DA DG,,s1v>>6  " 

#56"s   -Bpathc                 >    U R                    SU R                   SU 3$ )z
Return the full API URL for a given path.

:param str path: the sub-path
:returns: the full API URL for the sub-path
:rtype: str
/)r   r   )r6   r=   s     r)   _get_full_url#SambaStudioEmbeddings._get_full_urlw   s,     667q9]9]8^^_`d_effr,   textsc              #   V   #    [        S[        U5      U5       H  nXX2-    v   M     g7f)a.  Generator for creating batches in the embed documents method
Args:
    texts (List[str]): list of strings to embed
    batch_size (int, optional): batch size to be used for the embedding model.
    Will depend on the RDU endpoint used.
Yields:
    List[str]: list (batch) of strings of size batch size
r   N)rangelen)r6   rB   r   is       r)   _iterate_over_batches+SambaStudioEmbeddings._iterate_over_batches   s+      q#e*j1AAN++ 2s   ')Nc                    Uc  U R                   n[        R                  " 5       nU R                  U R                   SU R
                   35      n[        R                  " U R                  5       5      n/ nSU R                  ;   a  U R                  X5       H~  nXuS.nUR                  USU R                  0US9n	U	R                  S:w  a%  [        SU	R                   SU	R                   35      e U	R                  5       S	   n
UR!                  U
5        M     U$ SU R                  ;   a  U R                  X5       H  n[%        U5       VVs/ sH  u  pSU 3US.PM     nnnXS.nUR                  USU R                  0US9n	U	R                  S:w  a%  [        SU	R                   SU	R                   35      e U	R                  5       S    Vs/ sH  oS   PM	     n
nUR!                  U
5        M     U$ SU R                  ;   a  U R                  X5       H  nXuS.nUR                  USU R                  0US9n	U	R                  S:w  a%  [        SU	R                   SU	R                   35      e UR'                  S5      (       a  U	R                  5       S   n
OU	R                  5       S   n
UR!                  U
5        M     U$ [)        SU R                   S35      e! ["         a    [#        S
U	R                  5       5      ef = fs  snnf s  snf ! ["         a    [#        SU	R                  5       5      ef = f! ["         a    [#        SU	R                  5       5      ef = f)a  Returns a list of embeddings for the given sentences.
Args:
    texts (`List[str]`): List of texts to encode
    batch_size (`int`): Batch size for the encoding

Returns:
    `List[np.ndarray]` or `List[tensor]`: List of embeddings
    for the given sentences
r?   api/predict/nlpinputsparamskeyheadersr4      1Sambanova /complete call failed with status code .
 Details: data%'data' not found in endpoint responser.   itemidr0   r1   rM   r1   r0   &'items' not found in endpoint responser#   	instancesrM   select_expertpredictions,'predictions' not found in endpoint responsehandling of endpoint uri:  not implemented)r   requestsSessionr@   r   r   r4   loadsr;   r   rG   postr   status_codeRuntimeErrortextextendKeyError	enumerateget
ValueError)r6   rB   r   http_sessionurlrM   
embeddingsbatchrT   response	embeddingrF   rV   r1   s                 r)   embed_documents%SambaStudioEmbeddings.embed_documents   s    J'')  556a8_8_7`a
 D3356
 D DD33EF"':',,"D$G$GH - 
 ''3.&K#//0hmm_N  ( 7I%%i0 GX o &)M)MM33EFENuEUEU'!T!:5EU   "'9',,"D$G$GH - 
 ''3.&K#//0hmm_N ;C==?7;S T;S4g;SI T%%i0# Gl = #d&J&JJ33EF%*=',,"D$G$GH - 
 ''3.&K#//0hmm_N 
zz/22$,MMOM$B	$,MMOM$B	%%i0# G: 	 ,T-Q-Q,RRbc s   "?   !U "@  2   "F  s=   0$KL9LL
L/AL7%L
L%L47%Mrh   c                 Z   [         R                  " 5       nU R                  U R                   SU R                   35      n[
        R                  " U R                  5       5      nSU R                  ;   aq  U/US.nUR                  USU R                  0US9nUR                  S:w  a%  [        SUR                   SUR                   35      e UR                  5       S	   S
   nU$ SU R                  ;   aw  SUS./US.nUR                  USU R                  0US9nUR                  S:w  a%  [        SUR                   SUR                   35      e UR                  5       S   S
   S   nU$ SU R                  ;   a  U/US.nUR                  USU R                  0US9nUR                  S:w  a%  [        SUR                   SUR                   35      e UR                  S5      (       a  UR                  5       S   S
   nU$ UR                  5       S   S
   n U$ [!        SU R                   S35      e! [         a    [        SUR                  5       5      ef = f! [         a    [        SUR                  5       5      ef = f! [         a    [        SUR                  5       5      ef = f)zReturns a list of embeddings for the given sentences.
Args:
    sentences (`List[str]`): List of sentences to encode

Returns:
    `List[np.ndarray]` or `List[tensor]`: List of embeddings
    for the given sentences
r?   rJ   rK   rN   rO   rQ   rR   rS   rT   r   rU   r.   item0rW   rY   r1   r0   rZ   r#   r[   r]   r^   r_   r`   ra   )rb   rc   r@   r   r   r4   rd   r;   r   re   r   rf   rg   rh   rj   rl   rm   )r6   rh   rn   ro   rM   rT   rr   rs   s           r)   embed_query!SambaStudioEmbeddings.embed_query   s     '')  556a8_8_7`a
 D3356 D DD#f7D#(( C CD ) H
 ##s*"G++,M(--J $MMOF3A6	n a &)M)MM%,t<=PD#(( C CD ) H
 ##s*"G++,M(--J $MMOG4Q7@	F 9 #d&J&JJ"&6:D#(( C CD ) H
 ##s*"G++,M(--J 	::o.. ( >q AI  !) >q AI 	 ,T-Q-Q,RRbc e  ;MMO (  <MMO .  BMMO s*   H5 I ,J J 5%I%J%J*)N)r2   
__module____qualname____firstlineno____doc__r   r3   __annotations__r   r   r   r   r   dictr   intr   model_configr
   r   r*   r;   r@   r   r   rG   r   floatrt   rx   __static_attributes__r   r,   r)   r   r      s'   !F ,.#S-+-#S--/%s/-.0&0.*,"C,L$2J-26L$ 4  4C "g# g# g
,49 
,# 
,) 
, =Ab#Yb,4SMb	d5k	bHS SU Sr,   r   )r4   typingr   r   r   r   rb   langchain_core._api.deprecationr   langchain_core.embeddingsr   langchain_core.utilsr	   r
   pydanticr   r   r   r   r,   r)   <module>r      sK     2 2  6 0 ? * 
B
tIz t
tr,   