
    7|h                        d dl mZ d dlZd dlZd dl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 d dlmZ  ej.                  e      Z G d	 d
e      Zy)    )annotationsN)AnyDictListOptional)CallbackManagerForLLMRun)LLM)convert_to_secret_strget_from_dict_or_envpre_init)Field	SecretStr)enforce_stop_tokensc                      e Zd ZU dZdZded<   	 dZded<   dZded	<   d
Zded<    e	e
      Zded<   dZded<   dZded<   edd       Zedd       ZddZ	 	 d	 	 	 	 	 	 	 	 	 ddZedd       Zy) BaichuanLLMz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                \    t        t        |dd            |d<   t        |ddd      |d<   |S )Nr   BAICHUAN_API_KEYr   BAICHUAN_API_HOSTz/https://api.baichuan-ai.com/v1/chat/completions)default)r
   r   )clsvaluess     `/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/llms/baichuan.pyvalidate_environmentz BaichuanLLM.validate_environment"   sE    %: );=OP&
!" ';E	'
"#     c                b    | j                   | j                  | j                  d| j                  S )N)r   r   r   )r   r   r   r   selfs    r%   _default_paramszBaichuanLLM._default_params/   s5     ZZ++ZZ
 	
 	
r'   c                v   dd| j                   j                          d}	 t        j                  | j                  ||| j
                        }|j                  dk(  r-t        j                  |j                        }|d   d   d   d	   S |j                          y # t        $ r}t        d
|       d }~ww xY w)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_coder/   loadstextraise_for_status	Exception
ValueError)r*   requestr.   responseparsed_jsones         r%   _postzBaichuanLLM._post8   s    .&t'<'<'M'M'O&PQ
	<}}&&	H ##s*"jj7"9-a0;IFF))+ 	<6qc:;;	<s   A(B B 	B8%B33B8c                    | j                   }d|dg|d<   |j                  |       | j                  |      }|t        ||      }|S )Nuser)roler3   messages)r+   updaterA   r   )r*   promptstoprun_managerkwargsr=   r9   s          r%   _callzBaichuanLLM._callM   sR     &&(.6BC
vzz'"&tT2Dr'   c                     y)zReturn type of chat_model.zbaichuan-llm r)   s    r%   	_llm_typezBaichuanLLM._llm_type\   s     r'   )r$   r   returnr   )rO   r   )r=   r   rO   r   )NN)
rG   r   rH   zOptional[List[str]]rI   z"Optional[CallbackManagerForLLMRun]rJ   r   rO   r   )rO   r   )__name__
__module____qualname____doc__r   __annotations__r   r   r   r   dictr   r   r   r   r&   propertyr+   rA   rK   rN   rM   r'   r%   r   r      s    )'E3' KE5GS#(#>L.>'+}+,0)0
 
 
 
<0 %):>	 " 8	
  
  r'   r   )
__future__r   r/   loggingtypingr   r   r   r   r5   langchain_core.callbacksr   #langchain_core.language_models.llmsr	   langchain_core.utilsr
   r   r   pydanticr   r   langchain_community.llms.utilsr   	getLoggerrP   loggerr   rM   r'   r%   <module>ra      sI    "   , ,  = 3 V V % >			8	$M# Mr'   