
    dha                        S SK Jr  S SKrS SKJrJrJrJrJrJ	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  \R(                  " \5      r " S S	\\5      rS
S.     SS jjr          SS jrg)    )annotationsN)AnyCallableDictListOptionalUnion)
Embeddings)create_base_retry_decorator)get_from_dict_or_envpre_init)	BaseModel	SecretStrc                      \ rS rSr% SrS\S'    SrS\S'    S\S	'    S
rS\S'    SrS\S'    S\S'   \	SS j5       r
SS jrSS jrSrg)PremAIEmbeddings   zPrem's Embedding APIsint
project_idNzOptional[SecretStr]premai_api_keystrmodelFboolshow_progress_bar   max_retriesr   clientc                     SSK Jn   [        USS5      nU" US9US'   U$ ! [         a  n[        S5      UeSnAff = f! [         a  n[        S	5      UeSnAff = f)
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)clsvaluesr   errorr   s        ]/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/premai.pyvalidate_environments&PremAIEmbeddings.validate_environments#   s    	#	X1(*:N  $N;F8   	? 	  	XKLRWW	Xs%   ! ? 
<7<
A	AAc                r    [        X R                  U R                  US9nUR                  S   R                  $ )zEmbed query textr   r   inputr   embed_with_retryr   r   data	embedding)selftext
embeddingss      r(   embed_queryPremAIEmbeddings.embed_query7   s2    %

td

 q!+++    c                    [        X R                  U R                  US9R                  nU Vs/ sH  o3R                  PM     sn$ s  snf )Nr,   r.   )r2   textsr4   r1   s       r(   embed_documents PremAIEmbeddings.embed_documents>   sB    %

te

$ 	 6@@Z	##Z@@@s   A )r&   r   returnr   )r3   r   r=   zList[float])r9   z	List[str]r=   zList[List[float]])__name__
__module____qualname____firstlineno____doc____annotations__r   r   r   r   r)   r5   r:   __static_attributes__r<   r7   r(   r   r      se    OL +/N'.GJ,#t#JK,K &,Ar7   r   r   r   c                  SSK nUR                  R                  R                  UR                  R                  R
                  UR                  R                  R                  UR                  R                  R                  UR                  R                  R                  UR                  R                  R                  UR                  R                  R                  UR                  R                   R"                  UR                  R$                  R&                  UR                  R(                  R*                  UR                  R,                  R.                  UR                  R0                  R2                  /n[5        X1SS9nU$ )zCreate 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   )embedderr   r!   errors	decorators        r(   create_prem_retry_decoratorrf   F   s     	33NN$$22++>>--CC33NN//FF00HH44PP..DD&&5500II&&66F ,I r7   c                ^    [        X R                  S9nU          SS j5       nU" XXS9$ )z+Using tenacity for retry in embedding callsrE   c                N    U R                   R                  R                  XUS9nU$ )Nr   r   r-   )r   r4   create)rc   r   r   r-   embedding_responses        r(   _embed_with_retry+embed_with_retry.<locals>._embed_with_retryv   s1     &__77>>!e ? 
 "!r7   ri   )
rc   r   r   r   r   r   r-   Union[str, List[str]]r=   r   )rf   r   )rc   r   r   r-   retry_decoratorrl   s         r(   r/   r/   k   sh     222O 	""	"	" 	" %		"
 
	" 	" XEWWr7   )rc   r   r   r   r=   zCallable[[Any], Any])
rc   r   r   r   r   r   r-   rn   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<   r7   r(   <module>ry      s    "  = = 0 K ? )			8	$5Ay* 5Av "" " 	"JXXX X !	X
 	Xr7   