§
    šŠtjU  ã                   ó¶   — 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	 d dl
mZmZ d dlmZ d dlmZmZ d dlmZ  e j        e¦  «        Zd	Z G d
„ de	¦  «        ZdS )é    N)ÚAnyÚDictÚListÚOptional)ÚCallbackManagerForLLMRun)ÚLLM)Ú
GenerationÚ	LLMResult)Úpre_init)Ú
ConfigDictÚField)Úenforce_stop_tokensz8https://clarifai.com/openai/chat-completion/models/GPT-4c                   ó¾  — 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¬¦  «        Zededefd„¦   «         Zedeeef         fd„¦   «         Zedeeef         fd„¦   «         Zedefd„¦   «         Z	 	 	 ddedeee                  dee         deeeef                  dedefd„Z	 	 	 ddee         deee                  dee         deeeef                  dedefd„ZdS ) ÚClarifaia2  Clarifai large language models.

    To use, you should have an account on the Clarifai platform,
    the ``clarifai`` python package installed, and the
    environment variable ``CLARIFAI_PAT`` set with your PAT key,
    or pass it as a named parameter to the constructor.

    Example:
        .. code-block:: python

            from langchain_community.llms import Clarifai
            clarifai_llm = Clarifai(user_id=USER_ID, app_id=APP_ID, model_id=MODEL_ID)
                             (or)
            clarifai_llm = Clarifai(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Ú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   )ÚModelúXCould 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/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/clarifai.pyÚvalidate_environmentzClarifai.validate_environment8   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   ‚	 ‰#c                 ó   — i S )z4Get the default parameters for calling Clarifai API.© ©Úselfs    r,   Ú_default_paramszClarifai._default_paramsY   s	   € ð ˆ	ó    c                 ó<   — i | j         | j        | j        | j        dœ¥S )zGet the identifying parameters.©r   r   r   r   r5   r0   s    r,   Ú_identifying_paramszClarifai._identifying_params^   s/   € ð
à!œ^Øœ<Øœ+Ø œMð	ð ð
ð 	
r3   c                 ó   — dS )zReturn type of llm.Úclarifair/   r0   s    r,   Ú	_llm_typezClarifai._llm_typej   s	   € ð ˆzr3   ÚpromptÚstopÚrun_managerÚinference_paramsÚkwargsc                 ó4  — 	 |€i x}n| | j                              t          |d¦  «        d|¬¦  «        }|j        d         j        j        j        }|�t          ||¦  «        }n4# t          $ r'}t           
                    d|› �¦  «         Y d}~nd}~ww xY w|S )a~  Call out to Clarfai's PostModelOutputs endpoint.

        Args:
            prompt: The prompt to pass into the model.
            stop: Optional list of stop words to use when generating.

        Returns:
            The string generated by the model.

        Example:
            .. code-block:: python

                response = clarifai_llm.invoke("Tell me a joke.")
        Nzutf-8Útext)Ú
input_typer=   r   úPredict failed, exception: )r   Úpredict_by_bytesÚbytesÚoutputsÚdatar@   Úrawr   Ú	ExceptionÚloggerÚerror)	r1   r:   r;   r<   r=   r>   Úpredict_responser@   Úes	            r,   Ú_callzClarifai._callo   sÊ   € ð.	<Ø(8Ð(@ Ð#ÐÐÐFVøØ#œz×:Ò:Ý�f˜gÑ&Ô&Ø!Ø!1ð  ;ñ  ô  Ðð
 $Ô+¨AÔ.Ô3Ô8Ô<ˆDØÐÝ*¨4°Ñ6Ô6�øøåð 	<ð 	<ð 	<Ý�LŠLÐ:°qÐ:Ð:Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;øøøøð	<øøøð ˆs   ‚A!A$ Á$
BÁ.BÂBÚpromptsc                 ó¼  ‡— 	 ddl m} n# t          $ r t          d¦  «        ‚w xY wg }d}|                     | j        j        ¦  «        Š	 t          dt          |¦  «        |¦  «        D ]N}	||	|	|z   …         }
ˆfd„t          |
¦  «        D ¦   «         }|€i x}n| | j         	                    ||¬¦  «        }ŒO|j
        D ]Y}|� t          |j        j        j        |¦  «        }n|j        j        j        }|                     t!          |¬¦  «        g¦  «         ŒZn4# t"          $ r'}t$                               d	|› �¦  «         Y d}~nd}~ww xY wt)          |¬
¦  «        S )z*Run the LLM on the given prompt and input.r   )ÚInputsr"   é    c                 ó^   •— g | ])\  }}‰                      t          |¦  «        |¬ ¦  «        ‘Œ*S ))Úinput_idÚraw_text)Úget_text_inputÚstr)Ú.0r#   ÚinpÚ	input_objs      €r,   ú
<listcomp>z&Clarifai._generate.<locals>.<listcomp>¯   sF   ø€ ð ð ð á˜˜Cð ×,Ò,µc¸"±g´gÈÐ,ÑLÔLðð ð r3   N)Úinputsr=   )r@   rB   )Úgenerations)Úclarifai.client.inputrP   r(   Úfrom_auth_helperr   Úauth_helperÚrangeÚlenÚ	enumerateÚpredictrE   r   rF   r@   rG   Úappendr	   rH   rI   rJ   r
   )r1   rN   r;   r<   r=   r>   rP   r\   Ú
batch_sizeÚiÚbatchÚinput_batchrK   Úoutputr@   rL   rY   s                   @r,   Ú	_generatezClarifai._generate–   så  ø€ ð	Ø4Ð4Ð4Ð4Ð4Ð4Ð4øÝð 	ð 	ð 	ÝðAñô ð ð	øøøð ˆØˆ
Ø×+Ò+¨D¬JÔ,BÑCÔCˆ	ð	<Ý˜1�c '™lœl¨JÑ7Ô7ð ð �Ø  A¨
¡NÐ 2Ô3�ðð ð ð å#,¨UÑ#3Ô#3ðñ ô �ð &Ð-ð )+Ð*Ð$Ð$Ø3CøØ#'¤:×#5Ò#5Ø&Ð9Ið $6ñ $ô $Ð Ð ð +Ô2ð <ð <�ØÐ#Ý.¨v¬{Ô/?Ô/CÀTÑJÔJ�D�Dà!œ;Ô+Ô/�Dà×"Ò"¥J°DÐ$9Ñ$9Ô$9Ð#:Ñ;Ô;Ð;Ð;ð<øõ ð 	<ð 	<ð 	<Ý�LŠLÐ:°qÐ:Ð:Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;øøøøð	<øøøõ  [Ð1Ñ1Ô1Ð1s!   ƒ
 Š$ÁCD Ä
EÄ$EÅE)NNN) Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   rV   Ú__annotations__r   r   r   r   r   r   r   r   r   r   r   Úmodel_configr   r   r-   Úpropertyr2   r6   r9   r   r   rM   r
   rj   r/   r3   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Ð.Ð.Ñ.à�:Øðñ ô €Lð ð¨$ð °4ð ð ð ñ „Xðð@ ð  c¨3 h¤ð ð ð ñ „Xðð ð	
 T¨#¨s¨(¤^ð 	
ð 	
ð 	
ñ „Xð	
ð ð˜3ð ð ð ñ „Xðð %)Ø:>Ø59ð%ð %àð%ð �t˜C”yÔ!ð%ð Ð6Ô7ð	%ð
 # 4¨¨S¨¤>Ô2ð%ð ð%ð 
ð%ð %ð %ð %ðT %)Ø:>Ø59ð/2ð /2à�c”ð/2ð �t˜C”yÔ!ð/2ð Ð6Ô7ð	/2ð
 # 4¨¨S¨¤>Ô2ð/2ð ð/2ð 
ð/2ð /2ð /2ð /2ð /2ð /2r3   r   )ÚloggingÚtypingr   r   r   r   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr   Úlangchain_core.outputsr	   r
   Úlangchain_core.utilsr   Úpydanticr   r   Úlangchain_community.llms.utilsr   Ú	getLoggerrk   rI   ÚEXAMPLE_URLr   r/   r3   r,   ú<module>r|      s  ðØ €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à =Ð =Ð =Ð =Ð =Ð =Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø )Ð )Ð )Ð )Ð )Ð )Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &à >Ð >Ð >Ð >Ð >Ð >à	ˆÔ	˜8Ñ	$Ô	$€ð I€ðs2ð s2ð s2ð s2ð s2ˆsñ s2ô s2ð s2ð s2ð s2r3   