a
    bg%                     @   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< e4e+e+d3d4d5Z5e6e+ee2f d6d7d8Z7d>e!e ee!e  ee8 e2e9d9d:d;Z:e6ed6d<d=Z;d	S )?	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   sf   zddl m} W n ty*   tdY n0 |f |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   )	aphroditer9   ImportError)clsr7   ZAphroditeModel r=   p/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/llms/aphrodite.pyvalidate_environment   s     
	
	zAphrodite.validate_environment)r8   c                 C   sv   | j | j| j| j| j| j| j| j| j| j	| j
| j| j| j| j| j| 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@   selfr=   r=   r>   _default_params   s:    zAphrodite._default_params)promptsr&   run_managerkwargsr8   c                 K   s   ddl m} i | j|d|i}d|v r0|d= |f i |}| j||}g }	|D ]"}
|
jd j}|	t|dg qTt	|	dS )z*Run the LLM on the given prompt and input.r   )SamplingParamsr&   r/   )text)generations)
r:   rG   rC   r6   generateoutputsrH   appendr   r	   )rB   rD   r&   rE   rF   rG   paramsZsampling_paramsrK   rI   outputrH   r=   r=   r>   	_generate   s    	zAphrodite._generatec                 C   s   dS )zReturn type of llm.r:   r=   rA   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?   propertyrC   r   r	   rO   rP   r=   r=   r=   r>   r   
   sj   
$  
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   