Ë
    µŒjŽ  ã                   ó²   — 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y)é    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y) Ú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} |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   )Ú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              úk/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/clarifai.pyÚvalidate_environmentzClarifai.validate_environment8   sÕ   € ð	Ý3ð —*‘*˜YÓ'ˆØ—‘˜HÓ%ˆØ—:‘:˜jÓ)ˆØ!Ÿ:™:Ð&8Ó9ÐØ—J‘J˜{Ó+ˆ	Ø—:‘:˜jÓ)ˆØ�j‰j˜ÓˆØ—
‘
˜7Ó#ˆáØØØÜÐ"2Ô3ØØØØô	
ˆˆw‰ð ˆøô3 ò 	ÜðAóð ð	ús   ‚B/ Â/Cc                 ó   — i S )z4Get the default parameters for calling Clarifai API.© ©Úselfs    r,   Ú_default_paramszClarifai._default_paramsY   s	   € ð ˆ	ó    c                 ód   — 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^   s2   € ð
à!Ÿ^™^ØŸ<™<ØŸ+™+Ø ŸM™Mñ	ð
ð 	
r3   c                  ó   — y)zReturn type of llm.Úclarifair/   r0   s    r,   Ú	_llm_typezClarifai._llm_typej   s   € ð r3   ÚpromptÚstopÚrun_managerÚinference_paramsÚkwargsc                 ó<  — 	 |€i x}n| | j                   j                  t        |d«      d|¬«      }|j                  d   j                  j
                  j                  }|�t        ||«      }|S # t        $ r#}t        j                  d|› �«       Y d}~S d}~ww xY w)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™z×:Ñ:Ü�f˜gÓ&Ø!Ø!1ð  ;ó  Ðð
 $×+Ñ+¨AÑ.×3Ñ3×8Ñ8×<Ñ<ˆDØÐÜ*¨4°Ó6�ð
 ˆøô ò 	<Ü�L‰LÐ6°q°cÐ:×;Ð;àˆûð	<ús   ‚A+A/ Á/	BÁ8BÂBÚpromptsc           
      ó  — 	 ddl m} g }d}|j                  | j                  j
                  «      }		 t        dt        |«      |«      D ]f  }
||
|
|z    }t        |«      D ��cg c]!  \  }}|	j                  t        |«      |¬«      ‘Œ# }}}|€i x}n| | j                  j                  ||¬«      }Œh j                  D ]k  }|�+t        |j                  j                  j                   |«      }n |j                  j                  j                   }|j#                  t%        |¬«      g«       Œm 	 t-        |¬
«      S # t        $ r t        d«      ‚w xY wc c}}w # t&        $ r"}t(        j+                  d	|› �«       Y d}~ŒPd}~ww xY w)z*Run the LLM on the given prompt and input.r   )ÚInputsr"   é    )Úinput_idÚraw_textN)Úinputsr=   )r@   rB   )Úgenerations)Úclarifai.client.inputrP   r(   Úfrom_auth_helperr   Úauth_helperÚrangeÚlenÚ	enumerateÚget_text_inputÚstrÚpredictrE   r   rF   r@   rG   Úappendr	   rH   rI   rJ   r
   )r1   rN   r;   r<   r=   r>   rP   rU   Ú
batch_sizeÚ	input_objÚiÚbatchr#   ÚinpÚinput_batchrK   Úoutputr@   rL   s                      r,   Ú	_generatezClarifai._generate–   s�  € ð	Ý4ð ˆØˆ
Ø×+Ñ+¨D¯J©J×,BÑ,BÓCˆ	ð	<Ü˜1œc '›l¨JÖ7�Ø  A¨
¡NÐ3�ô $-¨UÔ#3ôá#3™˜˜Cð ×,Ñ,´c¸"³gÈÐ,ÕLØ#3ð ñ ð &Ð-ð )+Ð*Ñ$Ø3CøØ#'§:¡:×#5Ñ#5Ø&Ð9Ið $6ó $Ñ ð 8ð +×2Ô2�ØÐ#Ü.¨v¯{©{×/?Ñ/?×/CÑ/CÀTÓJ‘Dà!Ÿ;™;×+Ñ+×/Ñ/�Dà×"Ñ"¤J°DÔ$9Ð#:Õ;ñ 3ô  [Ô1Ð1øôE ò 	ÜðAóð ð	üóøô& ò 	<Ü�L‰LÐ6°q°cÐ:×;Ñ;ûð	<ús5   ‚D8 ²/E Á!&EÂB$E Ä8EÅE Å	FÅE<Å<F)NNN) Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r]   Ú__annotations__r   r   r   r   r   r   r   r   r   r   r   Úmodel_configr   r   r-   Úpropertyr2   r6   r9   r   r   rM   r
   rg   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Ù ¨°tÔ<€Eˆ8�C‰=Ó<Ø(Ù˜t¨TÔ2€Eˆ3Ó2Ø.€HˆcÓ.áØô€Lð ð¨$ð °4ò ó ðð@ ð  c¨3 h¡ò ó ðð ð	
 T¨#¨s¨(¡^ò 	
ó ð	
ð ð˜3ò ó ðð %)Ø:>Ø59ñ%àð%ð �t˜C‘yÑ!ð%ð Ð6Ñ7ð	%ð
 # 4¨¨S¨¡>Ñ2ð%ð ð%ð 
ó%ðT %)Ø:>Ø59ñ/2à�c‘ð/2ð �t˜C‘yÑ!ð/2ð Ð6Ñ7ð	/2ð
 # 4¨¨S¨¡>Ñ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   Ú	getLoggerrh   rI   ÚEXAMPLE_URLr   r/   r3   r,   Ú<module>ry      sH   ðÛ ß ,Ó ,å =Ý 3ß 8Ý )ß &å >à	ˆ×	Ñ	˜8Ó	$€ð I€ôs2ˆsõ s2r3   