§
    šŠtj%  ã                   óˆ   — 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dS )é    N)ÚAnyÚDictÚListÚOptional)Ú
Embeddings)Ú	BaseModelÚ
ConfigDictÚFieldÚmodel_validatorc                   óä  — 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dS )Ú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} n# t          $ r t          d¦  «        ‚w xY w|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d	¦  «        }|                     d
¦  «        }	|                     d¦  «        }
 ||||t	          |¬¦  «        |	|
||¬¦  «        |d<   |S )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              úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/embeddings/clarifai.pyÚvalidate_environmentz'ClarifaiEmbeddings.validate_environment0   s   € ð	Ø3Ð3Ð3Ð3Ð3Ð3Ð3øÝð 	ð 	ð 	ÝðAñô ð ð	øøøð
 —*’*˜YÑ'Ô'ˆØ—’˜HÑ%Ô%ˆØ—:’:˜jÑ)Ô)ˆØ!Ÿ:š:Ð&8Ñ9Ô9ÐØ—J’J˜{Ñ+Ô+ˆ	Ø—:’:˜jÑ)Ô)ˆØ�jŠj˜ÑÔˆØ—
’
˜7Ñ#Ô#ˆà˜%ØØØÝÐ"2Ð3Ñ3Ô3ØØØØð	
ñ 	
ô 	
ˆˆw‰ð ˆs   ‚	 ‰#Útextsc                 óÔ  ‡
— ddl m} |                     | j        j        ¦  «        Š
d}g }	 t          dt          |¦  «        |¦  «        D ]h}||||z   …         }ˆ
fd„t          |¦  «        D ¦   «         }| j                             |¦  «        }| 	                    d„ |j
        D ¦   «         ¦  «         Œin4# t          $ r'}	t                               d|	› �¦  «         Y d}	~	nd}	~	ww xY w|S )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é    c                 ó^   •— g | ])\  }}‰                      t          |¦  «        |¬ ¦  «        ‘Œ*S ))Úinput_idÚraw_text)Úget_text_inputÚstr)Ú.0r#   ÚinpÚ	input_objs      €r,   ú
<listcomp>z6ClarifaiEmbeddings.embed_documents.<locals>.<listcomp>e   sF   ø€ ð ð ð á˜˜Cð ×,Ò,µc¸"±g´gÈÐ,ÑLÔLðð ð ó    c                 óV   — g | ]&}t          |j        j        d          j        ¦  «        ‘Œ'S ©r   ©ÚlistÚdataÚ
embeddingsÚvector)r7   Úoutputs     r,   r:   z6ClarifaiEmbeddings.embed_documents.<locals>.<listcomp>k   s=   € ð ð ð à"õ ˜Vœ[Ô3°AÔ6Ô=Ñ>Ô>ðð ð r;   úPredict failed, exception: N)Úclarifai.client.inputr0   Úfrom_auth_helperr   Úauth_helperÚrangeÚlenÚ	enumerateÚpredictÚextendÚoutputsÚ	ExceptionÚloggerÚerror)Úselfr.   r0   Ú
batch_sizerA   ÚiÚbatchÚinput_batchÚpredict_responseÚer9   s             @r,   Úembed_documentsz"ClarifaiEmbeddings.embed_documentsS   sN  ø€ ð 	1Ð0Ð0Ð0Ð0Ð0à×+Ò+¨D¬JÔ,BÑCÔCˆ	Øˆ
Øˆ
ð	<Ý˜1�c %™jœj¨*Ñ5Ô5ð ð �Ø˜a ! j¡.Ð0Ô1�ðð ð ð å#,¨UÑ#3Ô#3ðñ ô �ð $(¤:×#5Ò#5°kÑ#BÔ#BÐ Ø×!Ò!ðð à&6Ô&>ðñ ô ñô ð ð ðøõ ð 	<ð 	<ð 	<Ý�LŠLÐ:°qÐ:Ð:Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;øøøøð	<øøøð Ðs   ¬BB4 Â4
C%Â>C Ã C%Útextc                 óô   — 	 | j                              t          |d¦  «        d¬¦  «        }d„ |j        D ¦   «         }n4# t          $ r'}t
                               d|› �¦  «         Y d}~nd}~ww xY w|d         S )zœCall out to Clarifai's embedding models.

        Args:
            text: The text to embed.

        Returns:
            Embeddings for the text.
        zutf-8rY   )Ú
input_typec                 óV   — g | ]&}t          |j        j        d          j        ¦  «        ‘Œ'S r=   r>   )r7   Úops     r,   r:   z2ClarifaiEmbeddings.embed_query.<locals>.<listcomp>„   s:   € ð ð ð Ø79•�R”WÔ'¨Ô*Ô1Ñ2Ô2ðð ð r;   rD   Nr   )r   Úpredict_by_bytesÚbytesrM   rN   rO   rP   )rQ   rY   rV   rA   rW   s        r,   Úembed_queryzClarifaiEmbeddings.embed_queryv   s­   € ð		<Ø#œz×:Ò:Ý�d˜GÑ$Ô$°ð  ;ñ  ô  Ððð Ø=MÔ=Uðñ ô ˆJˆJøõ ð 	<ð 	<ð 	<Ý�LŠLÐ:°qÐ:Ð:Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;øøøøð	<øøøð ˜!Œ}Ðs   ‚;> ¾
A/ÁA*Á*A/)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r6   Ú__annotations__r   r   r   r   r
   r   r   r   r   r   r	   Úmodel_configr   Úclassmethodr   r-   r   ÚfloatrX   r`   r   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Ø ˜5¨°tÐ<Ñ<Ô<€Eˆ8�CŒ=Ð<Ð<Ñ<Ø(Ø�˜t¨TÐ2Ñ2Ô2€Eˆ3Ð2Ð2Ñ2Ø.€HˆcÐ.Ð.Ñ.à�: HÀ2ÐFÑFÔF€Là€_˜(Ð#Ñ#Ô#Øð¨$ð °3ð ð ð ñ „[ñ $Ô#ððB! T¨#¤Yð !°4¸¸U¼Ô3Dð !ð !ð !ð !ðF ð ¨¨U¬ð ð ð ð ð ð r;   r   )ÚloggingÚtypingr   r   r   r   Úlangchain_core.embeddingsr   Úpydanticr   r	   r
   r   Ú	getLoggerra   rO   r   r   r;   r,   ú<module>rn      sº   ðØ €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bà	ˆÔ	˜8Ñ	$Ô	$€ðAð Að Að Að A˜ Jñ Aô Að Að Að Ar;   