§
    šŠtj•  ã                   óÂ   — d dl Z d dlmZmZmZmZmZmZ d dlZd dl	m
Z
 d dlmZ d dlmZmZmZ d dlmZmZmZmZ d dlmZ  e j        e¦  «        Z G d„ d	e¦  «        ZdS )
é    N)ÚAnyÚDictÚListÚMappingÚOptionalÚcast)ÚCallbackManagerForLLMRun)ÚLLM)Úconvert_to_secret_strÚget_from_dict_or_envÚpre_init)Ú
ConfigDictÚFieldÚ	SecretStrÚmodel_validator)Úenforce_stop_tokensc                   óŒ  — e Zd ZU dZdZeed<   	  ee¬¦  «        Z	e
eef         ed<   	 dZee         ed<    ed¬	¦  «        Z ed
¬¦  «        ede
eef         defd„¦   «         ¦   «         Zede
de
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def
d„ZdS )ÚCerebriumAIaH  CerebriumAI large language models.

    To use, you should have the ``cerebrium`` python package installed.
    You should also have the environment variable ``CEREBRIUMAI_API_KEY``
    set with your API key or pass it as a named argument in the constructor.

    Any parameters that are valid to be passed to the call can be passed
    in, even if not explicitly saved on this class.

    Example:
        .. code-block:: python

            from langchain_community.llms import CerebriumAI
            cerebrium = CerebriumAI(endpoint_url="", cerebriumai_api_key="my-api-key")

    Ú Úendpoint_url)Údefault_factoryÚmodel_kwargsNÚcerebriumai_api_keyÚforbid)ÚextraÚbefore)ÚmodeÚvaluesÚreturnc                 ól  — t          t          | j                             ¦   «         ¦  «        ¦  «        }|                     di ¦  «        }t          |¦  «        D ]U}||vrO||v rt          d|› d�¦  «        ‚t                               |› d|› d�¦  «         |                     |¦  «        ||<   ŒV||d<   |S )z>Build extra kwargs from additional params that were passed in.r   zFound z supplied twice.zJ was transferred to model_kwargs.
                    Please confirm that z is what you intended.)	ÚsetÚlistÚmodel_fieldsÚkeysÚgetÚ
ValueErrorÚloggerÚwarningÚpop)Úclsr   Úall_required_field_namesr   Ú
field_names        úb/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/cerebriumai.pyÚbuild_extrazCerebriumAI.build_extra.   sä   € õ $'¥t¨CÔ,<×,AÒ,AÑ,CÔ,CÑ'DÔ'DÑ#EÔ#EÐ à—
’
˜>¨2Ñ.Ô.ˆÝ˜v™,œ,ð 	;ð 	;ˆJØÐ!9Ð9Ð9Ø Ð&Ð&Ý$Ð%J¨jÐ%JÐ%JÐ%JÑKÔKÐKÝ—’Ø#ð Nð NØ)3ðNð Nð Nñô ð ð %+§J¢J¨zÑ$:Ô$:��jÑ!øØ!&ˆˆ~ÑØˆó    c                 óL   — t          t          |dd¦  «        ¦  «        }||d<   |S )z?Validate that api key and python package exists in environment.r   ÚCEREBRIUMAI_API_KEY)r   r   )r*   r   r   s      r-   Úvalidate_environmentz CerebriumAI.validate_environmentA   s7   € õ 4Ý  Ð)>Ð@UÑVÔVñ
ô 
Ðð )<ˆÐ$Ñ%Øˆr/   c                 ó*   — i d| j         i¥d| j        i¥S )zGet the identifying parameters.r   r   )r   r   ©Úselfs    r-   Ú_identifying_paramszCerebriumAI._identifying_paramsJ   s,   € ð
Ø˜tÔ0Ð1ð
à˜tÔ0Ð1ð
ð 	
r/   c                 ó   — dS )zReturn type of llm.Úcerebriumai© r4   s    r-   Ú	_llm_typezCerebriumAI._llm_typeR   s	   € ð ˆ}r/   ÚpromptÚstopÚrun_managerÚkwargsc                 ó\  — t          t          | j        ¦  «                             ¦   «         ddœ}| j        pi }d|i|¥|¥}t          j        | j        ||¬¦  «        }|j        dk    r0| 	                    ¦   «         }	|	d         }
|�t          |
|¦  «        }
|
S |                     ¦   «          dS )Nzapplication/json)ÚAuthorizationzContent-Typer;   )ÚjsonÚheaderséÈ   Úresultr   )r   r   r   Úget_secret_valuer   ÚrequestsÚpostr   Ústatus_coderA   r   Úraise_for_status)r5   r;   r<   r=   r>   rB   ÚparamsÚpayloadÚresponseÚdataÚtexts              r-   Ú_callzCerebriumAI._callW   sÇ   € õ "Ý˜4Ô3ñô çÒÑ Ô Ø.ð	
ð 
ˆð Ô"Ð( bˆØ˜VÐ8 vÐ8°Ð8ˆÝ”= Ô!2¸È'ÐRÑRÔRˆØÔ 3Ò&Ð&Ø—=’=‘?”?ˆDØ˜”>ˆDØÐõ +¨4°Ñ6Ô6�ØˆKà×%Ò%Ñ'Ô'Ð'Øˆrr/   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚstrÚ__annotations__r   Údictr   r   r   r   r   r   r   Úmodel_configr   Úclassmethodr.   r   r2   Úpropertyr   r6   r:   r   r	   rO   r9   r/   r-   r   r      sÃ  € € € € € € ðð ð" €L�#ÐÐÑØà#( 5¸Ð#>Ñ#>Ô#>€L�$�s˜C�x”.Ð>Ð>Ñ>ðð 04Ð˜ )Ô,Ð3Ð3Ñ3à�:Øðñ ô €Lð €_˜(Ð#Ñ#Ô#Øð  c¨3 h¤ð °Cð ð ð ñ „[ñ $Ô#ðð" ð¨$ð °4ð ð ð ñ „Xðð ð
 W¨S°#¨XÔ%6ð 
ð 
ð 
ñ „Xð
ð ð˜3ð ð ð ñ „Xðð %)Ø:>ð	ð àðð �t˜C”yÔ!ðð Ð6Ô7ð	ð
 ðð 
ðð ð ð ð ð r/   r   )ÚloggingÚtypingr   r   r   r   r   r   rF   Úlangchain_core.callbacksr	   Ú#langchain_core.language_models.llmsr
   Úlangchain_core.utilsr   r   r   Úpydanticr   r   r   r   Úlangchain_community.llms.utilsr   Ú	getLoggerrP   r'   r   r9   r/   r-   ú<module>rb      s  ðØ €€€Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;à €€€Ø =Ð =Ð =Ð =Ð =Ð =Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bà >Ð >Ð >Ð >Ð >Ð >à	ˆÔ	˜8Ñ	$Ô	$€ðbð bð bð bð b�#ñ bô bð bð bð br/   