Ë
    µŒjh  ã                   ó”   — 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y)é    )ÚAnyÚDictÚListÚOptionalÚcastN)ÚCallbackManagerForLLMRun)ÚLLM)Úconvert_to_secret_strÚget_from_dict_or_envÚpre_init)Ú	BaseModelÚ
ConfigDictÚ	SecretStrc                   óf   — 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	<   y
)Ú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   © ó    úg/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/ai21.pyr   r   
   sC   … Ù+à€Eˆ3ƒNØ#Ð˜Ó#Ø $Ð˜Ó$Ø€N�DÓØ!Ð�dÓ!Ø€M�4Ôr    r   c                   óÚ  — 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$y)#Ú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                 ó<   — 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   s+   € ô -Ü  ¨¸ÓHó
ˆð ".ˆˆ~ÑØˆr    c           
      ó"  — | j                   | j                  | j                  | 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   sp   € ð  ×+Ñ+ØŸ™ØŸ™Ø—I‘IØ#×3Ñ3×8Ñ8Ó:Ø ×-Ñ-×2Ñ2Ó4Ø $× 5Ñ 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™JÐ'Ð@¨4×+?Ñ+?Ð@Ð@r    c                  ó   — y)zReturn type of llm.Úai21r   r=   s    r!   Ú	_llm_typezAI21._llm_typeh   s   € ð r    Ú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                  j                  «       › �i||d	œ|¥¬
«      }|j                  dk7  r:|j                  «       j                  d«      }t        d|j                  › d|› �«      ‚|j                  «       }	|	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.")
        z2`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   sW  € ð* �9‰9Ð  TÐ%5ÜÐQÓRÐRØ�Y‰YÐ"Ø—9‘9‰DØˆ\ØˆDØ�=‰=Ð$Ø—}‘}‰Hà�z‰zÐ4Ñ4ØH‘à;�Ø3�D×(Ñ(Ð3¨FÐ3ˆÜ ¤¨D×,=Ñ,=Ó>ˆÔÜ—=‘=Ø�*˜A˜dŸj™j˜\¨Ð3Ø$¨°×0AÑ0A×0RÑ0RÓ0TÐ/UÐ&VÐWØ"°TÑD¸VÐDô
ˆð
 ×Ñ 3Ò&Ø&Ÿm™m›o×1Ñ1°'Ó:ˆOÜØ>¸x×?SÑ?SÐ>Tð UØ,Ð-ð/óð ð !Ÿ™›ˆØ˜]Ñ+¨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€O�_Ó8Ø$á$3Ó$5€L�/Ó5Ø7á(7Ó(9Ð�oÓ9Ø;à€J�ÓØ;à,0€Iˆx˜˜S %˜ZÑ(Ñ)Ó0ØDà(,€L�(˜9Ñ%Ó,à $€Dˆ(�4˜‘9Ñ
Ó$à"€Hˆh�s‰mÓ"Ø?áØô€Lð ð¨$ð °4ò ó ðð ð
  c¨3 h¡ò 
ó ð
ð ðA T¨#¨s¨(¡^ò Aó ðAð ð˜3ò ó ðð %)Ø:>ñ	0?àð0?ð �t˜C‘yÑ!ð0?ð Ð6Ñ7ð	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ã Ý =Ý 3ß VÑ Vß 5Ñ 5ô�iô ôH?ˆ3õ H?r    