
    dhh                         S SK JrJrJrJrJr  S SKrS SKJr  S SK	J
r
  S SKJrJrJr  S SKJrJrJr   " S S\5      r " S	 S
\
5      rg)    )AnyDictListOptionalcastN)CallbackManagerForLLMRun)LLM)convert_to_secret_strget_from_dict_or_envpre_init)	BaseModel
ConfigDict	SecretStrc                   n    \ rS rSr% SrSr\\S'   Sr\	\S'   Sr
\	\S'   Sr\	\S'   Sr\	\S	'   Sr\	\S
'   Srg)AI21PenaltyData
   z!Parameters for AI21 penalty data.r   scaleTapplyToWhitespacesapplyToPunctuationsapplyToNumbersapplyToStopwordsapplyToEmojis N)__name__
__module____qualname____firstlineno____doc__r   int__annotations__r   boolr   r   r   r   __static_attributes__r       U/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/llms/ai21.pyr   r   
   sC    +E3N## $$ND!d!M4r#   r   c                      \ rS rSr% SrSr\\S'    Sr\	\S'    Sr
\\S'    S	r\\S
'    Sr\	\S'    \" 5       r\\S'    \" 5       r\\S'    \" 5       r\\S'    Sr\\S'    Sr\\\\	4      \S'    Sr\\   \S'   Sr\\\      \S'   Sr\\   \S'    \" SS9r\S\S\4S j5       r\S\\\ 4   4S j5       r!\S\\\ 4   4S j5       r"\S\4S j5       r#  S$S\S\\\      S \\$   S!\ S\4
S" jjr%S#r&g)%AI21   aK  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                 :    [        [        USS5      5      nX!S'   U$ )z,Validate that api key exists in environment.r4   AI21_API_KEY)r
   r   )clsr9   r4   s      r$   validate_environmentAI21.validate_environmentK   s)     - H
 ".~r#   c           
      "   U R                   U R                  U R                  U R                  U R                  R                  5       U R                  R                  5       U R                  R                  5       U R                  U R                  S.	$ )z0Get the default parameters for calling AI21 API.)	r)   r+   r,   r-   r.   r/   r0   r2   r3   )
r)   r+   r,   r-   r.   dictr/   r0   r2   r3   selfs    r$   _default_paramsAI21._default_paramsT   sp      ++II#3388: --224 $ 5 5 : : <//

 
	
r#   c                 :    0 SU R                   0EU R                  E$ )zGet the identifying parameters.r(   )r(   rD   rB   s    r$   _identifying_paramsAI21._identifying_paramsc   s$     A7DJJ'@4+?+?@@r#   c                     g)zReturn type of llm.ai21r   rB   s    r$   	_llm_typeAI21._llm_typeh   s     r#   promptrun_managerkwargsc                    U R                   b  Ub  [        S5      eU R                   b  U R                   nOUc  / nU R                  b  U R                  nOU R                  S;   a  SnOSn0 U R                  EUEn[        [        U R                  5      U l        [        R                  " U SU R                   S3SSU R                  R                  5        30XS	.UES
9nUR                  S:w  a:  UR                  5       R                  S5      n[        SUR                   SU 35      eUR                  5       n	U	S   S   S   S   $ )a  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 )rM   stopSequences)urlheadersjson   errorz,AI21 /complete call failed with status code z. Details: completionsr   datatext)r5   
ValueErrorr6   r(   rD   r   r   r4   requestspostget_secret_valuestatus_coderV   get)
rC   rM   r5   rN   rO   r6   paramsresponseoptional_detailresponse_jsons
             r$   _call
AI21._callm   sU   * 99 T%5QRRYY"99D\D==$}}Hzz44H;3D((3F3 D,=,=>==*Adjj\3$0A0A0R0R0T/U&VW"DVD

 3&&mmo11':O>x?S?S>T U,-/  !]+A.v6v>>r#   )r4   )NN)'r   r   r   r   r   r(   strr    r)   floatr+   r   r,   r-   r   r.   r/   r0   r2   r3   r   r   r4   r   r5   r   r6   r   model_configr   r>   propertyr   rD   rG   rK   r   rf   r"   r   r#   r$   r&   r&      s   
 %E3$K+IsEIsED%D'6'8O_8$$3$5L/57(7(9o9;J;,0IxS%Z()0D(,L(9%, $D(49
$"Hhsm"?L $ 4   
c3h 
 
 AT#s(^ A A 3   %):>	0?0? tCy!0? 67	0?
 0? 
0? 0?r#   r&   )typingr   r   r   r   r   r]   langchain_core.callbacksr   #langchain_core.language_models.llmsr	   langchain_core.utilsr
   r   r   pydanticr   r   r   r   r&   r   r#   r$   <module>rq      s:    2 2  = 3 V V 5 5i H?3 H?r#   