Ë
    µŒjÃ1  ã                   ó˜   — d dl Z d dlmZmZmZmZ d dlZd dlmZ d dl	m
Z
 d dlmZmZ d dlmZmZ  eddd	¬
«       G d„ dee
«      «       Zy)é    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            	       ó*  — e Zd ZU dZdZeed<   	 dZeed<   	 dZeed<   	 dZ	eed<   	 dZ
eed<   	 i Zeed<   	 d	Zeed
<   	  ed¬«      Zededefd„«       Zdefd„Zdedefd„Zdee   d
edefd„Z	 ddee   d
ee   deee      fd„Zdedee   fd„Zy)ÚSambaStudioEmbeddingsa3  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                 óª   — t        |dd«      |d<   t        |ddd¬«      |d<   t        |dd«      |d<   t        |d	d
«      |d	<   t        |dd«      |d<   |S )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     úr/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/embeddings/sambanova.pyÚvalidate_environmentz*SambaStudioEmbeddings.validate_environmentK   s˜   € ô 5IØÐ5Ð7Xó5
ˆÐ0Ñ1ô 5IØØ-Ø-Ø)ô	5
ˆÐ0Ñ1ô 7KØØ/Ø/ó7
ˆÐ2Ñ3ô
 8LØØ0Ø0ó8
ˆÐ3Ñ4ô
 4HØÐ4Ð6Vó4
ˆÐ/Ñ0ð ˆó    c           	      ó
  — d| j                   v r| j                  }nL| j                  j                  «       D ��ci c]'  \  }}|t        |«      j                  t        |«      dœ“Œ) }}}t        j                  |«      }|S c c}}w )z�
        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_paramsz(SambaStudioEmbeddings._get_tuning_paramsf   s‡   € ð $ t×'KÑ'KÑKØ!%×!2Ñ!2Ñð "×.Ñ.×4Ñ4Ô6ô"á6‘D�A�qð œD ›G×,Ñ,´s¸1³vÑ>Ñ>Ø6ð ñ "ô Ÿ
™
Ð#5Ó6ˆØÐùó"s   ¹,A?Úpathc                 ó>   — | j                   › d| j                  › d|› �S )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   )r4   r:   s     r(   Ú_get_full_urlz#SambaStudioEmbeddings._get_full_urlw   s,   € ð ×6Ñ6Ð7°q¸×9]Ñ9]Ð8^Ð^_Ð`dÐ_eÐfÐfr*   Útextsc              #   óV   K  — t        dt        |«      |«      D ]  }||||z    –— Œ y­w)af  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)r4   r>   r   Úis       r(   Ú_iterate_over_batchesz+SambaStudioEmbeddings._iterate_over_batches�   s0   è ø€ ô �qœ#˜e›* jÖ1ˆAØ˜˜A 
™NÐ+Ó+ñ 2ùs   ‚')Nc                 ó¤  — |€| j                   }t        j                  «       }| j                  | j                  › d| j
                  › �«      }t        j                  | j                  «       «      }g }d| j                  v r—| j                  ||«      D ]€  }||dœ}|j                  |d| j                  i|¬«      }	|	j                  dk7  r%t        d|	j                  › d|	j                  › �«      ‚	 |	j                  «       d	   }
|j!                  |
«       Œ‚ |S d| j                  v rÊ| j                  ||«      D ]³  }t%        |«      D ��cg c]  \  }}d|› �|dœ‘Œ }}}||dœ}|j                  |d| j                  i|¬«      }	|	j                  dk7  r%t        d|	j                  › d|	j                  › �«      ‚	 |	j                  «       d   D �cg c]  }|d   ‘Œ	 }
}|j!                  |
«       Œµ |S d| j                  v r¼| j                  ||«      D ]¥  }||dœ}|j                  |d| j                  i|¬«      }	|	j                  dk7  r%t        d|	j                  › d|	j                  › �«      ‚	 |j'                  d«      r|	j                  «       d   }
n|	j                  «       d   }
|j!                  |
«       Œ§ |S t)        d| j                  › d�«      ‚# t"        $ r t#        d
|	j                  «       «      ‚w xY wc c}}w c c}w # t"        $ r t#        d|	j                  «       «      ‚w xY w# t"        $ r t#        d|	j                  «       «      ‚w xY w)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©Úheadersr2   éÈ   ú1Sambanova /complete call failed with status code ú.
 Details: Údataú%'data' not found in endpoint responser,   Úitem©Úidr.   ©r/   rH   r/   r.   ú&'items' not found in endpoint responser"   ©Ú	instancesrH   Úselect_expertÚpredictionsú,'predictions' not found in endpoint responseúhandling of endpoint uri: ú not implemented)r   ÚrequestsÚSessionr=   r   r   r2   Úloadsr9   r   rC   Úpostr   Ústatus_codeÚRuntimeErrorÚtextÚextendÚKeyErrorÚ	enumerateÚgetÚ
ValueError)r4   r>   r   Úhttp_sessionÚurlrH   Ú
embeddingsÚbatchrO   ÚresponseÚ	embeddingrB   rQ   r/   s                 r(   Úembed_documentsz%SambaStudioEmbeddings.embed_documents�   s¿  € ð ÐØŸ™ˆJÜ×'Ñ'Ó)ˆØ× Ñ Ø×5Ñ5Ð6°a¸×8_Ñ8_Ð7`Ðaó
ˆô —‘˜D×3Ñ3Ó5Ó6ˆØˆ
à × DÑ DÑDØ×3Ñ3°E¸:ÖF�Ø"'°6Ñ:�Ø'×,Ñ,ØØ" D×$GÑ$GÐHØð -ó �ð
 ×'Ñ'¨3Ò.Ü&ØKØ#×/Ñ/Ð0°¸h¿m¹m¸_ðNóð ðØ (§¡£°Ñ 7�IØ×%Ñ% iÕ0ð GðX Ððo &¨×)MÑ)MÑMØ×3Ñ3°E¸:ÖF�äENÈuÔEUôÙEU¹'¸!¸T˜T ! ˜:°Ó5ÐEUð ñ ð "'°&Ñ9�Ø'×,Ñ,ØØ" D×$GÑ$GÐHØð -ó �ð
 ×'Ñ'¨3Ò.Ü&ØKØ#×/Ñ/Ð0°¸h¿m¹m¸_ðNóð ðØ;C¿=¹=»?È7Ò;SÓ TÑ;S°4  g£Ð;S�IÐ TØ×%Ñ% iÕ0ð# Gðl Ðð= # d×&JÑ&JÑJØ×3Ñ3°E¸:ÖF�Ø%*°fÑ=�Ø'×,Ñ,ØØ" D×$GÑ$GÐHØð -ó �ð
 ×'Ñ'¨3Ò.Ü&ØKØ#×/Ñ/Ð0°¸h¿m¹m¸_ðNóð ð
Ø—z‘z /Ô2Ø$,§M¡M£O°MÑ$B™	à$,§M¡M£O°MÑ$B˜	Ø×%Ñ% iÕ0ð# Gð: Ðô	 Ø,¨T×-QÑ-QÐ,RÐRbÐcóð øôs  ò Ü"Ø?Ø Ÿ™›óð ðüóùò !Uøäò Ü"Ø@Ø Ÿ™›óð ðûô2  ò Ü"ØFØ Ÿ™›óð ðús=   Ã/$KÅK9Æ7LÇK?ÇLÉ,A	L+Ë$K6Ë?LÌ$L(Ì+$Mrc   c                 óB  — t        j                  «       }| j                  | j                  › d| j                  › �«      }t        j                  | j                  «       «      }d| j                  v rs|g|dœ}|j                  |d| j                  i|¬«      }|j                  dk7  r%t        d|j                  › d|j                  › �«      ‚	 |j                  «       d	   d
   }|S d| j                  v ryd|dœg|dœ}|j                  |d| j                  i|¬«      }|j                  dk7  r%t        d|j                  › d|j                  › �«      ‚	 |j                  «       d   d
   d   }|S d| j                  v r›|g|dœ}|j                  |d| j                  i|¬«      }|j                  dk7  r%t        d|j                  › d|j                  › �«      ‚	 |j                  d«      r|j                  «       d   d
   }n|j                  «       d   d
   }|S t!        d| j                  › d�«      ‚# t        $ r t        d|j                  «       «      ‚w xY w# t        $ r t        d|j                  «       «      ‚w xY w# t        $ r t        d|j                  «       «      ‚w xY w)a  Returns 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<   rE   rF   rI   rJ   rL   rM   rN   rO   r   rP   r,   Úitem0rR   rT   r/   r.   rU   r"   rV   rX   rY   rZ   r[   r\   )r]   r^   r=   r   r   r2   r_   r9   r   r`   r   ra   rb   rc   re   rg   rh   )r4   rc   ri   rj   rH   rO   rm   rn   s           r(   Úembed_queryz!SambaStudioEmbeddings.embed_queryñ   s  € ô  ×'Ñ'Ó)ˆØ× Ñ Ø×5Ñ5Ð6°a¸×8_Ñ8_Ð7`Ðaó
ˆô —‘˜D×3Ñ3Ó5Ó6ˆà × DÑ DÑDØ#˜f°Ñ7ˆDØ#×(Ñ(ØØ × CÑ CÐDØð )ó ˆHð
 ×#Ñ# sÒ*Ü"ØGØ×+Ñ+Ð,¨M¸(¿-¹-¸ðJóð ðØ$ŸM™M›O¨FÑ3°AÑ6�	ðn Ðða &¨×)MÑ)MÑMØ%,°tÑ<Ð=ÈÑPˆDØ#×(Ñ(ØØ × CÑ CÐDØð )ó ˆHð
 ×#Ñ# sÒ*Ü"ØGØ×+Ñ+Ð,¨M¸(¿-¹-¸ðJóð ðØ$ŸM™M›O¨GÑ4°QÑ7¸Ñ@�	ðF Ðð9 # d×&JÑ&JÑJØ"& °6Ñ:ˆDØ#×(Ñ(ØØ × CÑ CÐDØð )ó ˆHð
 ×#Ñ# sÒ*Ü"ØGØ×+Ñ+Ð,¨M¸(¿-¹-¸ðJóð ð	Ø—:‘:˜oÔ.Ø (§¡£°Ñ >¸qÑ A‘Ià (§¡£°Ñ >¸qÑ A�Ið Ðô	 Ø,¨T×-QÑ-QÐ,RÐRbÐcóð øôe ò ÜØ;Ø—M‘M“Oóð ðûô( ò ÜØ<Ø—M‘M“Oóð ðûô. ò ÜØBØ—M‘M“Oóð ðús$   ÃH, ÅI Ç>I: È,$IÉ$I7É:$J)N)r0   Ú
__module__Ú__qualname__Ú__doc__r   r1   Ú__annotations__r   r   r   r   r   Údictr   Úintr   Úmodel_configr
   r   r)   r9   r=   r   r   rC   r   Úfloatro   rr   r   r*   r(   r   r      s'  … ñ!ðF ,.Ð# SÓ-Øà+-Ð# SÓ-Øà-/Ð% sÓ/Ø-à.0Ð&¨Ó0Ø.à*,Ð" CÓ,Øà€L�$ÓØ2à€J�ÓØ-á°2Ô6€Làð¨$ð °4ò ó ðð4 Có ð"g #ð g¨#ó gð
,¨4°©9ð 
,À#ð 
,È)ó 
,ð =AñbØ˜#‘YðbØ,4°S©Mðbà	ˆd�5‰kÑ	óbðHS ð S¨¨U©ô Sr*   r   )r2   Útypingr   r   r   r   r]   Ú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˜I zó tóñ
tr*   