
    dh                        S SK Jr  S SKrS SKrS SK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  S SKJr  \R.                  " \5      r " S	 S
\5      rg)    )annotationsN)AnyDictListOptional)CallbackManagerForLLMRun)LLM)convert_to_secret_strget_from_dict_or_envpre_init)Field	SecretStr)enforce_stop_tokensc                      \ rS rSr% SrSrS\S'    SrS\S'   S	rS\S
'   Sr	S\S'   \
" \S9rS\S'   SrS\S'   SrS\S'   \SS j5       r\SS j5       rSS jr  S         S S jjr\S!S j5       rSrg)"BaichuanLLM   zBaichuan large language models.zBaichuan2-Turbo-192kstrmodelg333333?floattemperaturegffffff?top_p<   inttimeout)default_factoryDict[str, Any]model_kwargsNzOptional[str]baichuan_api_hostzOptional[SecretStr]baichuan_api_keyc                V    [        [        USS5      5      US'   [        USSSS9US'   U$ )Nr   BAICHUAN_API_KEYr   BAICHUAN_API_HOSTz/https://api.baichuan-ai.com/v1/chat/completions)default)r
   r   )clsvaluess     Y/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/llms/baichuan.pyvalidate_environment BaichuanLLM.validate_environment"   sE    %: );=OP&
!" ';E	'
"#     c                b    U R                   U R                  U R                  S.U R                  E$ )N)r   r   r   )r   r   r   r   selfs    r&   _default_paramsBaichuanLLM._default_params/   s5     ZZ++ZZ
 	
 	
r)   c                x   SSU R                   R                  5        3S.n [        R                  " U R                  UUU R
                  S9nUR                  S:X  a.  [        R                  " UR                  5      nUS   S   S   S	   $ UR                  5         g ! [         a  n[        S
U 35      eS nAff = f)Nzapplication/jsonzBearer )zContent-TypeAuthorization)headersjsonr      choicesr   messagecontentzAn error has occurred: )r   get_secret_valuerequestspostr   r   status_coder2   loadstextraise_for_status	Exception
ValueError)r,   requestr1   responseparsed_jsones         r&   _postBaichuanLLM._post8   s    .&t'<'<'M'M'O&PQ
	<}}&&	H ##s*"jj7"9-a0;IFF))+ 	<6qc:;;	<s   A(B B 
B9&B44B9c                    U R                   nSUS./US'   UR                  U5        U R                  U5      nUb  [        Xb5      nU$ )Nuser)roler6   messages)r-   updaterD   r   )r,   promptstoprun_managerkwargsr@   r<   s          r&   _callBaichuanLLM._callM   sP     &&(.6BC
vzz'"&t2Dr)   c                    g)zReturn type of chat_model.zbaichuan-llm r+   s    r&   	_llm_typeBaichuanLLM._llm_type\   s     r)   rR   )r%   r   returnr   )rU   r   )r@   r   rU   r   )NN)
rK   r   rL   zOptional[List[str]]rM   z"Optional[CallbackManagerForLLMRun]rN   r   rU   r   )rU   r   )__name__
__module____qualname____firstlineno____doc__r   __annotations__r   r   r   r   dictr   r   r   r   r'   propertyr-   rD   rO   rS   __static_attributes__rR   r)   r&   r   r      s    )'E3' KE5GS#(#>L.>'+}+,0)0
 
 
 
<0 %):>	 " 8	
  
  r)   r   )
__future__r   r2   loggingtypingr   r   r   r   r8   langchain_core.callbacksr   #langchain_core.language_models.llmsr	   langchain_core.utilsr
   r   r   pydanticr   r   langchain_community.llms.utilsr   	getLoggerrV   loggerr   rR   r)   r&   <module>ri      sG    "   , ,  = 3 V V % >			8	$M# Mr)   