§
    šŠtjÃ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dS )é    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dS )Ú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     úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/embeddings/sambanova.pyÚvalidate_environmentz*SambaStudioEmbeddings.validate_environmentK   s¶   € õ 5IØÐ5Ð7Xñ5
ô 5
ˆÐ0Ñ1õ 5IØØ-Ø-Ø)ð	5
ñ 5
ô 5
ˆÐ0Ñ1õ 7KØØ/Ø/ñ7
ô 7
ˆÐ2Ñ3õ
 8LØØ0Ø0ñ8
ô 8
ˆÐ3Ñ4õ
 4HØÐ4Ð6Vñ4
ô 4
ˆÐ/Ñ0ð ˆó    c                 ó–   — d| j         v r| j        }n#d„ | j                             ¦   «         D ¦   «         }t          j        |¦  «        }|S )z�
        Get the tuning parameters to use when calling the model

        Returns:
            The tuning parameters as a JSON string.
        úapi/v2/predict/genericc                 ó^   — i | ]*\  }}|t          |¦  «        j        t          |¦  «        d œ“Œ+S ))ÚtypeÚvalue)r.   Ú__name__Ústr)Ú.0ÚkÚvs      r(   ú
<dictcomp>z<SambaStudioEmbeddings._get_tuning_params.<locals>.<dictcomp>p   sE   € ð "ð "ð "á�A�qð �D ™GœGÔ,µs¸1±v´vÐ>Ð>ð"ð "ð "r*   )r   r   ÚitemsÚjsonÚdumps)ÚselfÚtuning_params_dictÚtuning_paramss      r(   Ú_get_tuning_paramsz(SambaStudioEmbeddings._get_tuning_paramsf   sd   € ð $ tÔ'KÐKÐKØ!%Ô!2ÐÐð"ð "à!Ô.×4Ò4Ñ6Ô6ð"ñ "ô "Ðõ œ
Ð#5Ñ6Ô6ˆØÐr*   Ú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   )r9   r=   s     r(   Ú_get_full_urlz#SambaStudioEmbeddings._get_full_urlw   s'   € ð Ô6ÐfÐf¸Ô9]ÐfÐfÐ`dÐfÐfÐfr*   Útextsc              #   ój   K  — t          dt          |¦  «        |¦  «        D ]}||||z   …         V — ŒdS )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)r9   rA   r   Úis       r(   Ú_iterate_over_batchesz+SambaStudioEmbeddings._iterate_over_batches�   sP   è è € õ �q�#˜e™*œ* jÑ1Ô1ð 	,ð 	,ˆAØ˜˜A 
™NÐ*Ô+Ð+Ð+Ð+Ð+ð	,ð 	,r*   Nc                 ó–  — |€| j         }t          j        ¦   «         }|                      | j        › d| j        › �¦  «        }t          j        |                      ¦   «         ¦  «        }g }d| j	        v rÉ|  
                    ||¦  «        D ]°}||dœ}|                     |d| j        i|¬¦  «        }	|	j        dk    rt          d|	j        › d	|	j        › �¦  «        ‚	 |	                     ¦   «         d
         }
|                     |
¦  «         Œ�# t"          $ r# t#          d|	                     ¦   «         ¦  «        ‚w xY w�nd| j	        v rì|  
                    ||¦  «        D ]Ó}d„ t%          |¦  «        D ¦   «         }||dœ}|                     |d| j        i|¬¦  «        }	|	j        dk    rt          d|	j        › d	|	j        › �¦  «        ‚	 d„ |	                     ¦   «         d         D ¦   «         }
|                     |
¦  «         Œ¤# t"          $ r# t#          d|	                     ¦   «         ¦  «        ‚w xY w�nd| j	        v rø|  
                    ||¦  «        D ]à}||dœ}|                     |d| j        i|¬¦  «        }	|	j        dk    rt          d|	j        › d	|	j        › �¦  «        ‚	 |                     d¦  «        r|	                     ¦   «         d         }
n|	                     ¦   «         d         }
|                     |
¦  «         Œ±# t"          $ r# t#          d|	                     ¦   «         ¦  «        ‚w xY wnt)          d| j	        › d�¦  «        ‚|S )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
        Nr?   úapi/predict/nlp©ÚinputsÚparamsÚkey©Úheadersr7   éÈ   ú1Sambanova /complete call failed with status code ú.
 Details: Údataú%'data' not found in endpoint responser,   c                 ó$   — g | ]\  }}d |› �|dœ‘ŒS )Úitem©Úidr/   r   )r2   rE   rU   s      r(   ú
<listcomp>z9SambaStudioEmbeddings.embed_documents.<locals>.<listcomp>º   s7   € ð ð ð Ù:A¸!¸T˜: !˜:˜:°Ð5Ð5ðð ð r*   ©r6   rK   c                 ó   — g | ]
}|d          ‘ŒS )r/   r   )r2   rU   s     r(   rX   z9SambaStudioEmbeddings.embed_documents.<locals>.<listcomp>É   s   € Ð TÐ TÐ T°4  g¤Ð TÐ TÐ Tr*   r6   ú&'items' not found in endpoint responser"   ©Ú	instancesrK   Úselect_expertÚpredictionsú,'predictions' not found in endpoint responseúhandling of endpoint uri: ú not implemented)r   ÚrequestsÚSessionr@   r   r   r7   Úloadsr<   r   rF   Úpostr   Ústatus_codeÚRuntimeErrorÚtextÚextendÚKeyErrorÚ	enumerateÚgetÚ
ValueError)r9   rA   r   Úhttp_sessionÚurlrK   Ú
embeddingsÚbatchrR   ÚresponseÚ	embeddingr6   s               r(   Úembed_documentsz%SambaStudioEmbeddings.embed_documents�   sW  € ð ÐØœˆJÝÔ'Ñ)Ô)ˆØ× Ò ØÔ5ÐaÐa¸Ô8_ÐaÐañ
ô 
ˆõ ”˜D×3Ò3Ñ5Ô5Ñ6Ô6ˆØˆ
à Ô DÐDÐDØ×3Ò3°E¸:ÑFÔFð ð �Ø"'°6Ð:Ð:�Ø'×,Ò,ØØ" DÔ$GÐHØð -ñ ô �ð
 Ô'¨3Ò.Ð.Ý&ðNØ#Ô/ðNð NØ>F¼mðNð Nñô ð ðØ (§¢¡¤°Ô 7�IØ×%Ò% iÑ0Ô0Ð0Ð0øÝð ð ð Ý"Ø?Ø Ÿš™œñô ð ðøøøñð* &¨Ô)MÐMÐMØ×3Ò3°E¸:ÑFÔFð ð �ðð ÝENÈuÑEUÔEUðñ ô �ð "'°&Ð9Ð9�Ø'×,Ò,ØØ" DÔ$GÐHØð -ñ ô �ð
 Ô'¨3Ò.Ð.Ý&ðNØ#Ô/ðNð NØ>F¼mðNð Nñô ð ðØ TÐ T¸8¿=º=¹?¼?È7Ô;SÐ TÑ TÔ T�IØ×%Ò% iÑ0Ô0Ð0Ð0øÝð ð ð Ý"Ø@Ø Ÿš™œñô ð ðøøøñ%ð0 # dÔ&JÐJÐJØ×3Ò3°E¸:ÑFÔFð ð �Ø%*°fÐ=Ð=�Ø'×,Ò,ØØ" DÔ$GÐHØð -ñ ô �ð
 Ô'¨3Ò.Ð.Ý&ðNØ#Ô/ðNð NØ>F¼mðNð Nñô ð ð
Ø—z’z /Ñ2Ô2ð CØ$,§M¢M¡O¤O°MÔ$B˜	˜	à$,§M¢M¡O¤O°MÔ$B˜	Ø×%Ò% iÑ0Ô0Ð0Ð0øÝð ð ð Ý"ØFØ Ÿš™œñô ð ðøøøð%õ2 Øc¨TÔ-QÐcÐcÐcñô ð ð Ðs%   Ã/D	Ä	-D6Ç9G>Ç>-H+Ê AL Ì -L-ri   c                 ón  — t          j        ¦   «         }|                      | j        › d| j        › �¦  «        }t          j        |                      ¦   «         ¦  «        }d| j        v r¢|g|dœ}| 	                    |d| j
        i|¬¦  «        }|j        dk    rt          d|j        › d|j        › �¦  «        ‚	 |                     ¦   «         d	         d
         }�nÜ# t          $ r# t          d|                     ¦   «         ¦  «        ‚w xY wd| j        v r«d|dœg|dœ}| 	                    |d| j
        i|¬¦  «        }|j        dk    rt          d|j        › d|j        › �¦  «        ‚	 |                     ¦   «         d         d
         d         }�n(# t          $ r# t          d|                     ¦   «         ¦  «        ‚w xY wd| j        v r×|g|dœ}| 	                    |d| j
        i|¬¦  «        }|j        dk    rt          d|j        › d|j        › �¦  «        ‚	 |                     d¦  «        r!|                     ¦   «         d         d
         }n |                     ¦   «         d         d
         }nH# t          $ r# t          d|                     ¦   «         ¦  «        ‚w xY wt!          d| j        › d�¦  «        ‚|S )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?   rH   rI   rL   rM   rO   rP   rQ   rR   r   rS   r,   Úitem0rV   rY   r6   r/   r[   r"   r\   r^   r_   r`   ra   rb   )rc   rd   r@   r   r   r7   re   r<   r   rf   r   rg   rh   ri   rk   rm   rn   )r9   ri   ro   rp   rK   rR   rs   rt   s           r(   Úembed_queryz!SambaStudioEmbeddings.embed_queryñ   s‹  € õ  Ô'Ñ)Ô)ˆØ× Ò ØÔ5ÐaÐa¸Ô8_ÐaÐañ
ô 
ˆõ ”˜D×3Ò3Ñ5Ô5Ñ6Ô6ˆà Ô DÐDÐDØ#˜f°Ð7Ð7ˆDØ#×(Ò(ØØ Ô CÐDØð )ñ ô ˆHð
 Ô# sÒ*Ð*Ý"ðJØÔ+ðJð JØ:B¼-ðJð Jñô ð ðØ$ŸMšM™OœO¨FÔ3°AÔ6�	‘	øÝð ð ð ÝØ;Ø—M’M‘O”Oñô ð ðøøøð &¨Ô)MÐMÐMØ%,°tÐ<Ð<Ð=ÈÐPÐPˆDØ#×(Ò(ØØ Ô CÐDØð )ñ ô ˆHð
 Ô# sÒ*Ð*Ý"ðJØÔ+ðJð JØ:B¼-ðJð Jñô ð ðØ$ŸMšM™OœO¨GÔ4°QÔ7¸Ô@�	‘	øÝð ð ð ÝØ<Ø—M’M‘O”Oñô ð ðøøøð # dÔ&JÐJÐJØ"& °6Ð:Ð:ˆDØ#×(Ò(ØØ Ô CÐDØð )ñ ô ˆHð
 Ô# sÒ*Ð*Ý"ðJØÔ+ðJð JØ:B¼-ðJð Jñô ð ð	Ø—:’:˜oÑ.Ô.ð BØ (§¢¡¤°Ô >¸qÔ A�I�Ià (§¢¡¤°Ô >¸qÔ A�IøøÝð ð ð ÝØBØ—M’M‘O”Oñô ð ðøøøõ Øc¨TÔ-QÐcÐcÐcñô ð ð Ðs%   Â7 C Ã-DÅ%&F Æ-F:ÈAI- É--J)N)r0   Ú
__module__Ú__qualname__Ú__doc__r   r1   Ú__annotations__r   r   r   r   r   Údictr   Úintr   Úmodel_configr
   r   r)   r<   r@   r   r   rF   r   Úfloatru   rx   r   r*   r(   r   r      sÚ  € € € € € € ð!ð !ðF ,.Ð# SÐ-Ð-Ñ-Øà+-Ð# SÐ-Ð-Ñ-Øà-/Ð% sÐ/Ð/Ñ/Ø-à.0Ð&¨Ð0Ð0Ñ0Ø.à*,Ð" CÐ,Ð,Ñ,Øà€L�$ÐÐÑØ2à€J�ÐÐÑØ-à�:°2Ð6Ñ6Ô6€Làð¨$ð °4ð ð ð ñ „Xðð4 Cð ð ð ð ð"g #ð g¨#ð gð gð gð gð
,¨4°¬9ð 
,À#ð 
,È)ð 
,ð 
,ð 
,ð 
,ð =Aðbð bØ˜#”YðbØ,4°S¬Mðbà	ˆd�5ŒkÔ	ðbð bð bð bðHS ð S¨¨U¬ð Sð Sð Sð Sð Sð Sr*   r   )r7   Útypingr   r   r   r   rc   Úlangchain_core._api.deprecationr   Úlangchain_core.embeddingsr   Úlangchain_core.utilsr	   r
   Úpydanticr   r   r   r   r*   r(   ú<module>r†      sø   ðØ €€€Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2à €€€Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *ð €Ø
ØØBðñ ô ð
tð tð tð tð t˜I zñ tô tñô ð
tð tð tr*   