§
    šŠtjh  ã                   ó¢   — d dl 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  G d„ de¦  «        Z G d	„ d
e
¦  «        ZdS )é    )ÚAnyÚDictÚListÚOptionalÚcastN)ÚCallbackManagerForLLMRun)ÚLLM)Úconvert_to_secret_strÚget_from_dict_or_envÚpre_init)Ú	BaseModelÚ
ConfigDictÚ	SecretStrc                   óh   — e Zd ZU dZdZeed<   dZeed<   dZ	eed<   dZ
eed<   dZeed<   dZeed	<   d
S )ÚAI21PenaltyDataz!Parameters for AI21 penalty data.r   ÚscaleTÚapplyToWhitespacesÚapplyToPunctuationsÚapplyToNumbersÚapplyToStopwordsÚapplyToEmojisN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚintÚ__annotations__r   Úboolr   r   r   r   © ó    ú[/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/llms/ai21.pyr   r   
   sx   € € € € € € Ø+Ð+à€Eˆ3€N€N�NØ#Ð˜Ð#Ð#Ñ#Ø $Ð˜Ð$Ð$Ñ$Ø€N�DÐÐÑØ!Ð�dÐ!Ð!Ñ!Ø€M�4ÐÐÑÐÐr    r   c                   óN  — e Zd ZU dZdZeed<   	 dZeed<   	 dZ	e
ed<   	 dZe
ed	<   	 d
Zeed<   	  e¦   «         Zeed<   	  e¦   «         Zeed<   	  e¦   «         Zeed<   	 dZe
ed<   	 dZeeeef                  ed<   	 dZee         ed<   dZeee                  ed<   dZe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def
d!„Z$dS )#ÚAI21ag  AI21 large language models.

    To use, you should have the environment variable ``AI21_API_KEY``
    set with your API key or pass it as a named parameter to the constructor.

    Example:
        .. code-block:: python

            from langchain_community.llms import AI21
            ai21 = AI21(ai21_api_key="my-api-key", model="j2-jumbo-instruct")
    zj2-jumbo-instructÚmodelgffffffæ?Útemperatureé   Ú	maxTokensr   Ú	minTokensg      ð?ÚtopPÚpresencePenaltyÚcountPenaltyÚfrequencyPenaltyé   Ú
numResultsNÚ	logitBiasÚai21_api_keyÚstopÚbase_urlÚforbid)ÚextraÚvaluesÚreturnc                 óL   — t          t          |dd¦  «        ¦  «        }||d<   |S )z,Validate that api key exists in environment.r0   ÚAI21_API_KEY)r
   r   )Úclsr5   r0   s      r!   Úvalidate_environmentzAI21.validate_environmentK   s3   € õ -Ý  ¨¸ÑHÔHñ
ô 
ˆð ".ˆˆ~ÑØˆr    c           
      óà   — | j         | j        | j        | j        | j                             ¦   «         | j                             ¦   «         | j                             ¦   «         | j        | j	        dœ	S )z0Get the default parameters for calling AI21 API.)	r%   r'   r(   r)   r*   r+   r,   r.   r/   )
r%   r'   r(   r)   r*   Údictr+   r,   r.   r/   ©Úselfs    r!   Ú_default_paramszAI21._default_paramsT   sh   € ð  Ô+ØœØœØ”IØ#Ô3×8Ò8Ñ:Ô:Ø Ô-×2Ò2Ñ4Ô4Ø $Ô 5× :Ò :Ñ <Ô <Øœ/Øœð

ð 

ð 
	
r    c                 ó&   — i d| j         i¥| j        ¥S )zGet the identifying parameters.r$   )r$   r?   r=   s    r!   Ú_identifying_paramszAI21._identifying_paramsc   s   € ð A�7˜DœJÐ'Ð@¨4Ô+?Ð@Ð@r    c                 ó   — dS )zReturn type of llm.Úai21r   r=   s    r!   Ú	_llm_typezAI21._llm_typeh   s	   € ð ˆvr    ÚpromptÚrun_managerÚkwargsc                 ó`  — | j         �|�t          d¦  «        ‚| j         �| j         }n|€g }| j        �| j        }n| j        dv rd}nd}i | j        ¥|¥}t          t          | j        ¦  «        | _        t          j	        |› d| j        › d�dd	| j         
                    ¦   «         › �i||d
œ|¥¬¦  «        }|j        dk    rA|                     ¦   «                              d¦  «        }t          d|j        › d|› �¦  «        ‚|                     ¦   «         }	|	d         d         d         d         S )ad  Call out to AI21's complete 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 = ai21("Tell me a joke.")
        Nz2`stop` found in both the input and default params.)zj1-grande-instructz+https://api.ai21.com/studio/v1/experimentalzhttps://api.ai21.com/studio/v1ú/z	/completeÚAuthorizationzBearer )rE   ÚstopSequences)ÚurlÚheadersÚjsonéÈ   Úerrorz,AI21 /complete call failed with status code z. Details: Úcompletionsr   ÚdataÚtext)r1   Ú
ValueErrorr2   r$   r?   r   r   r0   ÚrequestsÚpostÚget_secret_valueÚstatus_coderN   Úget)
r>   rE   r1   rF   rG   r2   ÚparamsÚresponseÚoptional_detailÚresponse_jsons
             r!   Ú_callz
AI21._callm   sp  € ð* Œ9Ð  TÐ%5ÝÐQÑRÔRÐRØŒYÐ"Ø”9ˆDˆDØˆ\ØˆDØŒ=Ð$Ø”}ˆHˆHàŒzÐ4Ð4Ð4ØH��à;�Ø3�DÔ(Ð3¨FÐ3ˆÝ ¥¨DÔ,=Ñ>Ô>ˆÔÝ”=ØÐ3Ð3˜dœjÐ3Ð3Ð3Ø$Ð&V°Ô0A×0RÒ0RÑ0TÔ0TÐ&VÐ&VÐWØ"°TÐDÐD¸VÐDð
ñ 
ô 
ˆð
 Ô 3Ò&Ð&Ø&Ÿmšm™oœo×1Ò1°'Ñ:Ô:ˆOÝð/¸xÔ?Sð /ð /Ø,ð/ð /ñô ð ð !Ÿš™œˆØ˜]Ô+¨AÔ.¨vÔ6°vÔ>Ð>r    )NN)%r   r   r   r   r$   Ústrr   r%   Úfloatr'   r   r(   r)   r   r*   r+   r,   r.   r/   r   r   r0   r   r1   r   r2   r   Úmodel_configr   r:   Úpropertyr   r?   rA   rD   r   r^   r   r    r!   r#   r#      s}  € € € € € € ð
ð 
ð %€Eˆ3Ð$Ð$Ñ$Øà€K�ÐÐÑØ+à€IˆsÐÐÑØEà€IˆsÐÐÑØEà€Dˆ%ÐÐÑØDà'6 Ñ'8Ô'8€O�_Ð8Ð8Ñ8Ø$à$3 OÑ$5Ô$5€L�/Ð5Ð5Ñ5Ø7à(7¨Ñ(9Ô(9Ð�oÐ9Ð9Ñ9Ø;à€J�ÐÐÑØ;à,0€Iˆx˜˜S %˜ZÔ(Ô)Ð0Ð0Ñ0ØDà(,€L�(˜9Ô%Ð,Ð,Ñ,à $€Dˆ(�4˜”9Ô
Ð$Ð$Ñ$à"€Hˆh�sŒmÐ"Ð"Ñ"Ø?à�:Øðñ ô €Lð ð¨$ð °4ð ð ð ñ „Xðð ð
  c¨3 h¤ð 
ð 
ð 
ñ „Xð
ð ðA T¨#¨s¨(¤^ð Að Að Añ „XðAð ð˜3ð ð ð ñ „Xðð %)Ø:>ð	0?ð 0?àð0?ð �t˜C”yÔ!ð0?ð Ð6Ô7ð	0?ð
 ð0?ð 
ð0?ð 0?ð 0?ð 0?ð 0?ð 0?r    r#   )Útypingr   r   r   r   r   rU   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr	   Úlangchain_core.utilsr
   r   r   Úpydanticr   r   r   r   r#   r   r    r!   ú<module>rh      s   ðØ 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2à €€€Ø =Ð =Ð =Ð =Ð =Ð =Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð �iñ ô ð ðH?ð H?ð H?ð H?ð H?ˆ3ñ H?ô H?ð H?ð H?ð H?r    