
    Ng                        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dS )    )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dS )+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_keyvaluesr   returnc                t    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   )clsr   s     ]/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/llms/baichuan.pyvalidate_environmentz BaichuanLLM.validate_environment"   sW    %: );=OPP&
 &
!" ';E	'
 '
 '
"#     c                :    | j         | j        | j        d| j        S )N)r   r   r   )r   r   r   r   selfs    r&   _default_paramszBaichuanLLM._default_params/   s0     Z+Z
 
 	
 	
r(   requestr   c                v   dd| j                                          d}	 t          j        | j        ||| j                  }|j        dk    r3t          j        |j	                  }|d         d         d         d	         S |
                                 d S # 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_coder1   loadstextraise_for_status	Exception
ValueError)r+   r-   r0   responseparsed_jsones         r&   _postzBaichuanLLM._post8   s    .Qt'<'M'M'O'OQQ
 
	<}&	  H #s**"j77"9-a0;IFF))+++++ 	< 	< 	<:q::;;;	<s   AB B 
B8!B33B8promptstopOptional[List[str]]run_manager"Optional[CallbackManagerForLLMRun]kwargsc                    | j         }d|dg|d<   |                    |           |                     |          }|t          ||          }|S )Nuser)roler5   messages)r,   updaterB   r   )r+   rC   rD   rF   rH   r-   r;   s          r&   _callzBaichuanLLM._callM   s^     &(.6BBC
vzz'""&tT22Dr(   c                    dS )zReturn type of chat_model.zbaichuan-llm r*   s    r&   	_llm_typezBaichuanLLM._llm_type\   s	     ~r(   )r   r   r    r   )r    r   )r-   r   r    r   )NN)
rC   r   rD   rE   rF   rG   rH   r   r    r   )r    r   )__name__
__module____qualname____doc__r   __annotations__r   r   r   r   dictr   r   r   r   r'   propertyr,   rB   rN   rQ   rP   r(   r&   r   r      s<        ))'E'''' KEG#(5#>#>#>L>>>>'+++++,00000
 
 
 X
 
 
 
 X
< < < <0 %):>	        X  r(   r   )
__future__r   r1   loggingtypingr   r   r   r   r7   langchain_core.callbacksr   #langchain_core.language_models.llmsr	   langchain_core.utilsr
   r   r   pydanticr   r   langchain_community.llms.utilsr   	getLoggerrR   loggerr   rP   r(   r&   <module>rc      s   " " " " " "   , , , , , , , , , , , ,  = = = = = = 3 3 3 3 3 3 V V V V V V V V V V % % % % % % % % > > > > > >		8	$	$M M M M M# M M M M Mr(   