o
    Zh%                     @   sl   d dl mZmZmZmZ d dlmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlmZ G dd deZd	S )
    )AnyDictListOptional)CallbackManagerForLLMRun)BaseLLM)
Generation	LLMResult)pre_init)Fieldc                   @   s  e Zd ZU dZdZeed< 	 dZee	 ed< 	 dZ
ee ed< 	 dZe	ed< 	 d	Ze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< 	 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< 	 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< 	 d	Z ee!e  ed < 	 d	Z"ee!e	  ed!< 	 dZ#eed"< 	 d#Z$e	ed$< 	 d	Z%ee	 ed%< 	 d	Z&ee	 ed&< 	 d	Z'ee!e	  ed'< 	 d(Z(eed)< 	 d(Z)eed*< 	 d	Z*ee+eef  ed+< 	 d,Z,eed-< 	 d	Z-ee ed.< 	 d	Z.ee ed/< 	 e/e0d0Z1e+ee2f ed1< 	 d	Z3e2ed2< e4d3e+d4e+fd5d6Z5e6d4e+ee2f fd7d8Z7				d@d9e!e d ee!e  d:ee8 d;e2d4e9f
d<d=Z:e6d4efd>d?Z;d	S )A	AphroditezAphrodite language model. model   tensor_parallel_sizeFtrust_remote_codenNbest_ofg        presence_penaltyfrequency_penaltyg      ?repetition_penaltytemperaturetop_ptop_ktop_amin_ptfs
eta_cutoffepsilon_cutoff	typical_pr   mirostat_modemirostat_tauuse_beam_searchlength_penaltyearly_stoppingstopstop_token_ids
ignore_eosi   
max_tokenslogprobsprompt_logprobscustom_token_bansTskip_special_tokensspaces_between_special_tokens
logit_biasautodtypedownload_dirquantization)default_factoryaphrodite_kwargsclientvaluesreturnc                 C   sb   zddl m} W n ty   tdw |d|d |d |d |d |d d	|d
 |d< |S )z3Validate that python package exists in environment.r   )LLMzhCould not import aphrodite-engine python package. Please install it with `pip install aphrodite-engine`.r   r   r   r1   r2   )r   r   r   r1   r2   r5   r6   N )	aphroditer9   ImportError)clsr7   ZAphroditeModelr:   r:   Y/var/www/html/lang_env/lib/python3.10/site-packages/langchain_community/llms/aphrodite.pyvalidate_environment   s"   

	zAphrodite.validate_environmentc                 C   s   i d| j d| jd| jd| jd| jd| jd| jd| jd	| jd
| j	d| j
d| jd| jd| jd| jd| jd| j| j| j| j| j| j| j| j| j| j| j| jdS )z1Get the default parameters for calling aphrodite.r   r   r)   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   )r$   r%   r#   r&   r(   r*   r+   r,   r-   r.   r/   )r   r   r)   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r$   r%   r#   r&   r(   r*   r+   r,   r-   r.   r/   selfr:   r:   r>   _default_params   s^   	
zAphrodite._default_paramspromptsrun_managerkwargsc                 K   s   ddl m} i | j|d|i}d|v r|d= |di |}| j||}g }	|D ]}
|
jd j}|	t|dg q*t	|	dS )	z*Run the LLM on the given prompt and input.r   )SamplingParamsr&   r/   )text)generationsNr:   )
r;   rF   rB   r6   generateoutputsrG   appendr   r	   )rA   rC   r&   rD   rE   rF   paramsZsampling_paramsrJ   rH   outputrG   r:   r:   r>   	_generate   s   	
zAphrodite._generatec                 C   s   dS )zReturn type of llm.r;   r:   r@   r:   r:   r>   	_llm_type   s   zAphrodite._llm_type)NN)<__name__
__module____qualname____doc__r   str__annotations__r   r   intr   boolr   r   r   floatr   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r   r'   r(   r)   r*   r+   r,   r-   r.   r/   r   r1   r2   r3   r   dictr5   r   r6   r
   r?   propertyrB   r   r	   rN   rO   r:   r:   r:   r>   r   
   s   
 $

r   N)typingr   r   r   r   Zlangchain_core.callbacksr   Zlangchain_core.language_modelsr   Zlangchain_core.outputsr   r	   Zlangchain_core.utilsr
   Zpydanticr   r   r:   r:   r:   r>   <module>   s    