Ë
    µŒj8  ã                   ó„   — d dl Z d dlmZmZmZmZ d dlmZ d dlm	Z	m
Z
mZmZ  e j                  e«      Z G d„ de	e«      Zy)é    N)ÚAnyÚDictÚListÚOptional)Ú
Embeddings)Ú	BaseModelÚ
ConfigDictÚFieldÚmodel_validatorc                   óv  — e Zd ZU dZdZee   ed<   	 dZee   ed<   	 dZ	ee   ed<   	 dZ
ee   ed<   	 dZee   ed<   	  edd¬	«      Zee   ed
<   	  edd¬	«      Zee   ed<   	  edd¬	«      Zeed<   dZeed<    edd¬«      Z ed¬«      ededefd„«       «       Zdee   deee      fd„Zdedee   fd„Zy)ÚClarifaiEmbeddingsaÜ  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           
      óŽ  — 	 ddl m} |j                  d«      }|j                  d«      }|j                  d«      }|j                  d«      }|j                  d«      }|j                  d	«      }|j                  d
«      }	|j                  d«      }
 ||||t	        |¬«      |	|
||¬«      |d<   |S # t        $ r t        d«      ‚w xY w)zuValidate 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              úq/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/embeddings/clarifai.pyÚvalidate_environmentz'ClarifaiEmbeddings.validate_environment0   sÕ   € ð	Ý3ð —*‘*˜YÓ'ˆØ—‘˜HÓ%ˆØ—:‘:˜jÓ)ˆØ!Ÿ:™:Ð&8Ó9ÐØ—J‘J˜{Ó+ˆ	Ø—:‘:˜jÓ)ˆØ�j‰j˜ÓˆØ—
‘
˜7Ó#ˆáØØØÜÐ"2Ô3ØØØØô	
ˆˆw‰ð ˆøô3 ò 	ÜðAóð ð	ús   ‚B/ Â/CÚtextsc           
      ól  — ddl m} |j                  | j                  j                  «      }d}g }	 t        dt        |«      |«      D ]¯  }||||z    }t        |«      D ��	cg c]!  \  }}	|j                  t        |«      |	¬«      ‘Œ# }
}}	| j                  j                  |
«      }|j                  |j                  D �cg c].  }t        |j                  j                  d   j                   «      ‘Œ0 c}«       Œ± 	 |S c c}	}w c c}w # t"        $ r#}t$        j'                  d|› �«       Y d}~|S d}~ww xY w)z´Call 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.inputr0   Úfrom_auth_helperr   Úauth_helperÚrangeÚlenÚ	enumerateÚget_text_inputÚstrÚpredictÚextendÚoutputsÚlistÚdataÚ
embeddingsÚvectorÚ	ExceptionÚloggerÚerror)Úselfr.   r0   Ú	input_objÚ
batch_sizerB   ÚiÚbatchr#   ÚinpÚinput_batchÚpredict_responseÚoutputÚes                 r,   Úembed_documentsz"ClarifaiEmbeddings.embed_documentsS   s9  € õ 	1à×+Ñ+¨D¯J©J×,BÑ,BÓCˆ	Øˆ
Øˆ
ð	<Ü˜1œc %›j¨*Ö5�Ø˜a ! j¡.Ð1�ô $-¨UÔ#3ôá#3™˜˜Cð ×,Ñ,´c¸"³gÈÐ,ÕLØ#3ð ñ ð $(§:¡:×#5Ñ#5°kÓ#BÐ Ø×!Ñ!ð '7×&>Ò&>óá&>˜Fô ˜VŸ[™[×3Ñ3°AÑ6×=Ñ=Õ>Ø&>ñõñ 6ð" Ðùóùòøô ò 	<Ü�L‰LÐ6°q°cÐ:×;Ð;àÐûð	<ús5   ±/D Á &C<Â7D Â=3D
Ã0	D Ã<D Ä	D3ÄD.Ä.D3Útextc                 óP  — 	 | j                   j                  t        |d«      d¬«      }|j                  D �cg c].  }t	        |j
                  j                  d   j                  «      ‘Œ0 }}|d   S c c}w # t        $ r&}t        j                  d|› �«       Y d}~d   S d}~ww xY w)zœCall out to Clarifai's embedding models.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        zutf-8rR   )Ú
input_typer   r4   N)r   Úpredict_by_bytesÚbytesr?   r@   rA   rB   rC   rD   rE   rF   )rG   rR   rN   ÚoprB   rP   s         r,   Úembed_queryzClarifaiEmbeddings.embed_queryv   s±   € ð		<Ø#Ÿz™z×:Ñ:Ü�d˜GÓ$°ð  ;ó  Ðð >N×=UÒ=UóÙ=U°r”�R—W‘W×'Ñ'¨Ñ*×1Ñ1Õ2Ð=Uð ð ð ˜!‰}Ðùòøô ò 	<Ü�L‰LÐ6°q°cÐ:×;Ð;à˜!‰}Ðûð	<ús(   ‚5A6 ·3A1Á*A6 Á1A6 Á6	B%Á?B Â B%)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r<   Ú__annotations__r   r   r   r   r
   r   r   r   r   r   r	   Úmodel_configr   Úclassmethodr   r-   r   ÚfloatrQ   rX   r   ó    r,   r   r   
   s  … ñð$  $€Iˆx˜‰}Ó#ØØ"€Hˆh�s‰mÓ"ØØ&*Ð�h˜s‘mÓ*Ø"Ø €FˆH�S‰MÓ Ø)Ø!€GˆX�c‰]Ó!Ø"Ù t°TÔ:€Cˆ�#‰Ó:Ø0Ù ¨°tÔ<€Eˆ8�C‰=Ó<Ø(Ù˜t¨TÔ2€Eˆ3Ó2Ø.€HˆcÓ.á HÀ2ÔF€Lá˜(Ô#Øð¨$ð °3ò ó ó $ððB! T¨#¡Yð !°4¸¸U¹Ñ3Dó !ðF ð ¨¨U©ô ra   r   )ÚloggingÚtypingr   r   r   r   Úlangchain_core.embeddingsr   Úpydanticr   r	   r
   r   Ú	getLoggerrY   rE   r   r   ra   r,   Ú<module>rg      s9   ðÛ ß ,Ó ,å 0ß BÓ Bà	ˆ×	Ñ	˜8Ó	$€ôA˜ Jõ Ara   