
    dh8                         S SK r S SKJrJrJrJr  S SKJr  S SKJ	r	J
r
JrJr  \ R                  " \5      r " S S\	\5      rg)    N)AnyDictListOptional)
Embeddings)	BaseModel
ConfigDictFieldmodel_validatorc                   f   \ rS rSr% SrSr\\   \S'    Sr	\\   \S'    Sr
\\   \S'    Sr\\   \S'    Sr\\   \S'    \" SS	S
9r\\   \S'    \" SS	S
9r\\   \S'    \" SS	S
9r\\S'   Sr\\S'   \" SSS9r\" SS9\S\S\4S j5       5       rS\\   S\\\      4S jrS\S\\   4S jrSrg)ClarifaiEmbeddings
   a  Clarifai embedding models.

To use, you should have the ``clarifai`` python package installed, and the
environment variable ``CLARIFAI_PAT`` set with your personal access token or pass it
as a named parameter to the constructor.

Example:
    .. code-block:: python

        from langchain_community.embeddings import ClarifaiEmbeddings
        clarifai = ClarifaiEmbeddings(user_id=USER_ID,
                                      app_id=APP_ID,
                                      model_id=MODEL_ID)
                         (or)
        Example_URL = "https://clarifai.com/clarifai/main/models/BAAI-bge-base-en-v15"
        clarifai = ClarifaiEmbeddings(model_url=EXAMPLE_URL)
N	model_urlmodel_idmodel_version_idapp_iduser_idT)defaultexcludepattokenmodelzhttps://api.clarifai.comapi_baseforbid )extraprotected_namespacesbefore)modevaluesreturnc                     SSK Jn  UR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      nUR                  S	5      nUR                  S
5      n	UR                  S5      n
U" UUU[	        US9U	U
UUS9US'   U$ ! [         a    [        S5      ef = f)zmValidate that we have all required info to access Clarifai
platform and python package exists in environment.r   )ModelzXCould not import clarifai python package. Please install it with `pip install clarifai`.r   r   r   r   r   r   r   r   )id)urlr   r   model_versionr   r   r   base_urlr   )clarifai.client.modelr#   ImportErrorgetdict)clsr    r#   r   r   r   r   r   r   r   r   s              _/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/embeddings/clarifai.pyvalidate_environment'ClarifaiEmbeddings.validate_environment0   s    	3 **Y'H%::j)!::&89JJ{+	::j)jj

7#"23	
w 3  	A 	s   B) )B?textsc           
      l   SSK Jn  UR                  U R                  R                  5      nSn/ n [        S[        U5      U5       H  nXXd-    n[        U5       VV	s/ sH  u  pUR                  [        U5      U	S9PM      n
nn	U R                  R                  U
5      nUR                  UR                   Vs/ sH/  n[        UR                  R                  S   R                   5      PM1     sn5        M     U$ s  sn	nf s  snf ! ["         a#  n[$        R'                  SU 35         SnAU$ SnAff = f)zCall out to Clarifai's embedding models.

Args:
    texts: The list of texts to embed.

Returns:
    List of embeddings, one for each text.
r   )Inputs    )input_idraw_textPredict failed, exception: N)clarifai.client.inputr2   from_auth_helperr   auth_helperrangelen	enumerateget_text_inputstrpredictextendoutputslistdata
embeddingsvector	Exceptionloggererror)selfr0   r2   	input_obj
batch_sizerD   ibatchr$   inpinput_batchpredict_responseoutputes                 r-   embed_documents"ClarifaiEmbeddings.embed_documentsS   s3    	1++DJJ,B,BC	

	<1c%j*5!.1 $-U#3#3 ,,c"g,L#3   $(::#5#5k#B !! '7&>&>&>F V[[33A6==>&> 6"   	<LL6qc:;;	<s5   -D $C;7D 95D
.D ;D 
D3D..D3textc                 P    U R                   R                  [        US5      SS9nUR                   Vs/ sH/  n[	        UR
                  R                  S   R                  5      PM1     nnUS   $ s  snf ! [         a&  n[        R                  SU 35         SnAWS   $ SnAff = f)ztCall out to Clarifai's embedding models.

Args:
    text: The text to embed.

Returns:
    Embeddings for the text.
zutf-8rU   )
input_typer   r6   N)r   predict_by_bytesbytesrA   rB   rC   rD   rE   rF   rG   rH   )rI   rU   rP   oprD   rR   s         r-   embed_queryClarifaiEmbeddings.embed_queryv   s    		<#zz::dG$  ;   >N=U=U=UrRWW''*112=U   !}  	<LL6qc:;;!}	<s(   2A5 5A0)A5 0A5 5
B%?B  B%)__name__
__module____qualname____firstlineno____doc__r   r   r>   __annotations__r   r   r   r   r
   r   r   r   r   r   r	   model_configr   classmethodr   r.   r   floatrS   r[   __static_attributes__r       r-   r   r   
   s   $  $Ix}#"Hhsm"&*hsm*" FHSM )!GXc]!"tT:C#:0 t<E8C=<(tT2E32.Hc.H2FL(#$ 3   $B!T#Y !4U3D !F U rg   r   )loggingtypingr   r   r   r   langchain_core.embeddingsr   pydanticr   r	   r
   r   	getLoggerr]   rG   r   r   rg   r-   <module>rm      s7     , , 0 B B			8	$AJ Arg   