§
    šŠtja  ã                  óÆ   — d dl mZ d dlZd dlmZmZmZmZmZm	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j        e¦  «        Z G d„ d	ee¦  «        Zd
dœdd„Zdd„ZdS )é    )ÚannotationsN)ÚAnyÚCallableÚDictÚListÚOptionalÚUnion)Ú
Embeddings)Úcreate_base_retry_decorator)Úget_from_dict_or_envÚpre_init)Ú	BaseModelÚ	SecretStrc                  óŽ   — e Zd ZU dZded<   	 dZded<   	 ded<   	 d	Zd
ed<   	 dZded<   	 ded<   edd„¦   «         Z	dd„Z
dd„ZdS )ÚPremAIEmbeddingszPrem's Embedding APIsÚintÚ
project_idNzOptional[SecretStr]Úpremai_api_keyÚstrÚmodelFÚboolÚshow_progress_baré   Úmax_retriesr   ÚclientÚvaluesr   Úreturnc                óâ   — 	 ddl m} n"# t          $ r}t          d¦  «        |‚d}~ww xY w	 t          |dd¦  «        } ||¬¦  «        |d<   n"# t          $ r}t          d	¦  «        |‚d}~ww xY w|S )
zFValidate that the package is installed and that the API token is validr   )ÚPremzQCould not import Prem Python package.Please install it with: `pip install premai`Nr   ÚPREMAI_API_KEY)Úapi_keyr   z,Your API Key is incorrect. Please try again.)Úpremair   ÚImportErrorr   Ú	ExceptionÚ
ValueError)Úclsr   r   Úerrorr   s        úc/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/embeddings/premai.pyÚvalidate_environmentsz&PremAIEmbeddings.validate_environments#   sË   € ð	Ø#Ð#Ð#Ð#Ð#Ð#Ð#øÝð 	ð 	ð 	Ýð?ñô ð ðøøøøð	øøøð	XÝ1ØÐ(Ð*:ñô ˆNð  $˜t¨NÐ;Ñ;Ô;ˆF�8ÑÐøÝð 	Xð 	Xð 	XÝÐKÑLÔLÐRWÐWøøøøð	Xøøøàˆs'   ‚	 ‰
(“#£(¬ A Á
A,ÁA'Á'A,ÚtextúList[float]c                ó`   — t          | | j        | j        |¬¦  «        }|j        d         j        S )zEmbed query text©r   r   Úinputr   )Úembed_with_retryr   r   ÚdataÚ	embedding)Úselfr*   Ú
embeddingss      r(   Úembed_queryzPremAIEmbeddings.embed_query7   s5   € å%Ø˜œ
¨t¬Àdð
ñ 
ô 
ˆ
ð Œ˜qÔ!Ô+Ð+ó    Útextsú	List[str]úList[List[float]]c                ó^   — t          | | j        | j        |¬¦  «        j        }d„ |D ¦   «         S )Nr-   c                ó   — g | ]	}|j         ‘Œ
S © )r1   )Ú.0r1   s     r(   ú
<listcomp>z4PremAIEmbeddings.embed_documents.<locals>.<listcomp>C   s   € Ð@Ð@Ð@¨	�	Ô#Ð@Ð@Ð@r5   )r/   r   r   r0   )r2   r6   r3   s      r(   Úembed_documentsz PremAIEmbeddings.embed_documents>   s@   € Ý%Ø˜œ
¨t¬Àeð
ñ 
ô 
ä
ð 	ð AÐ@°ZÐ@Ñ@Ô@Ð@r5   )r   r   r   r   )r*   r   r   r+   )r6   r7   r   r8   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   r   r   r)   r4   r>   r;   r5   r(   r   r      sË   € € € € € € ØÐà€O€O�OðLð +/€NÐ.Ð.Ð.Ñ.ØGà€J€J�JØ,à#ÐÐ#Ð#Ð#Ñ#ØJà€KÐÐÐÑØ,à€K€K�Kàðð ð ñ „Xðð&,ð ,ð ,ð ,ðAð Að Að Að Að Ar5   r   r   ©r   Úembedderr   r   r   úCallable[[Any], Any]c               ó¶  — ddl }|j        j        j        |j        j        j        |j        j        j        |j        j        j	        |j        j
        j        |j        j        j        |j        j        j        |j        j        j        |j        j        j        |j        j        j        |j        j        j        |j        j        j        g}t5          ||d¬¦  «        }|S )zúCreate a retry decorator for PremAIEmbeddings.

    Args:
        embedder (PremAIEmbeddings): The PremAIEmbeddings instance
        max_retries (int): The maximum number of retries

    Returns:
        Callable[[Any], Any]: The retry decorator
    r   N)Úerror_typesr   Úrun_manager)Úpremai.modelsÚmodelsÚapi_response_validation_errorÚAPIResponseValidationErrorÚconflict_errorÚConflictErrorÚmodel_not_found_errorÚModelNotFoundErrorÚpermission_denied_errorÚPermissionDeniedErrorÚprovider_api_connection_errorÚProviderAPIConnectionErrorÚprovider_api_status_errorÚProviderAPIStatusErrorÚprovider_api_timeout_errorÚProviderAPITimeoutErrorÚprovider_internal_server_errorÚProviderInternalServerErrorÚprovider_not_found_errorÚProviderNotFoundErrorÚrate_limit_errorÚRateLimitErrorÚunprocessable_entity_errorÚUnprocessableEntityErrorÚvalidation_errorÚValidationErrorr   )rE   r   r"   ÚerrorsÚ	decorators        r(   Úcreate_prem_retry_decoratorrf   F   sÂ   € ð ÐÐÐð 	ŒÔ3ÔNØŒÔ$Ô2ØŒÔ+Ô>ØŒÔ-ÔCØŒÔ3ÔNØŒÔ/ÔFØŒÔ0ÔHØŒÔ4ÔPØŒÔ.ÔDØŒÔ&Ô5ØŒÔ0ÔIØŒÔ&Ô6ð€Fõ ,Ø¨Àðñ ô €Ið Ðr5   r   r   r   r.   úUnion[str, List[str]]r   c                ód   — t          | | j        ¬¦  «        }|dd„¦   «         } || |||¬¦  «        S )z+Using tenacity for retry in embedding callsrD   rE   r   r   r   r   r   r.   rg   r   r   c                óJ   — | j         j                             |||¬¦  «        }|S )N©r   r   r.   )r   r3   Úcreate)rE   r   r   r.   Úembedding_responses        r(   Ú_embed_with_retryz+embed_with_retry.<locals>._embed_with_retryv   s3   € ð &œ_Ô7×>Ò>Ø!¨°eð ?ñ 
ô 
Ðð "Ð!r5   rj   )
rE   r   r   r   r   r   r.   rg   r   r   )rf   r   )rE   r   r   r.   Úretry_decoratorrm   s         r(   r/   r/   k   s]   € õ 2Ø˜hÔ2ðñ ô €Oð ð	"ð 	"ð 	"ñ „_ð	"ð Ð˜X°*ÀEÐQVÐWÑWÔWÐWr5   )rE   r   r   r   r   rF   )
rE   r   r   r   r   r   r.   rg   r   r   )Ú
__future__r   ÚloggingÚtypingr   r   r   r   r   r	   Úlangchain_core.embeddingsr
   Ú#langchain_core.language_models.llmsr   Úlangchain_core.utilsr   r   Úpydanticr   r   Ú	getLoggerr?   Úloggerr   rf   r/   r;   r5   r(   ú<module>rx      s3  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø KÐ KÐ KÐ KÐ KÐ KØ ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )à	ˆÔ	˜8Ñ	$Ô	$€ð5Að 5Að 5Að 5Að 5A�y *ñ 5Aô 5Að 5Aðv ð"ð "ð "ð "ð "ð "ðJXð Xð Xð Xð Xð Xr5   