a
    bgf                     @   s   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 d dlmZ d dlmZ G d	d
 d
eZG dd deZdS )    )AnyDictListOptional)CallbackManagerForLLMRun)BaseLLM)
Generation	LLMResult)pre_init)Field)
BaseOpenAI)is_openai_v1c                   @   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e  ed< dZeed< dZe	ed< d	Zee	 ed< dZeed< d	Zee ed< eedZeee f ed< d	Z!e ed< e"eedd d!Z#e$eee f d"d#d$Z%d*ee eee  ee& e e'd%d&d'Z(e$ed"d(d)Z)d	S )+VLLMzVLLM language model. model   tensor_parallel_sizeFtrust_remote_codenNbest_ofg        presence_penaltyfrequency_penaltyg      ?temperaturetop_ptop_kuse_beam_searchstop
ignore_eosi   max_new_tokenslogprobsautodtypedownload_dir)default_factoryvllm_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   )LLMzPCould not import vllm python package. Please install it with `pip install vllm`.r   r   r   r"   r#   )r   r   r   r"   r#   r%   r&   )vllmr)   ImportError)clsr'   ZVLLModel r-   k/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/llms/vllm.pyvalidate_environmentM   s     

	zVLLM.validate_environmentr(   c                 C   s6   | j | j| j| j| j| j| j| j| j| j	| j
| jdS )z,Get the default parameters for calling vllm.)r   r   Z
max_tokensr   r   r   r   r   r   r   r   r    )r   r   r   r   r   r   r   r   r   r   r   r    selfr-   r-   r.   _default_paramsd   s    zVLLM._default_params)promptsr   run_managerkwargsr(   c                    s   ddl m} |dd}i | j|d|i}|j  |f i  fdd| D }|rp| jj|||d}	n| j||}	g }
|	D ]"}|j	d j
}|
t|d	g qt|
d
S )z*Run the LLM on the given prompt and input.r   )SamplingParamslora_requestNr   c                    s   i | ]\}}| v r||qS r-   r-   ).0kvZ
known_keysr-   r.   
<dictcomp>       z"VLLM._generate.<locals>.<dictcomp>)r8   )text)generations)r*   r7   popr3   __annotations__keysitemsr&   generateoutputsr?   appendr   r	   )r2   r4   r   r5   r6   r7   r8   paramsZsample_paramsrF   r@   outputr?   r-   r<   r.   	_generatev   s"    
zVLLM._generatec                 C   s   dS )Return type of llm.r*   r-   r1   r-   r-   r.   	_llm_type   s    zVLLM._llm_type)NN)*__name__
__module____qualname____doc__r   strrB   r   r   intr   boolr   r   r   floatr   r   r   r   r   r   r   r   r   r    r"   r#   r   dictr%   r   r   r&   r
   r/   propertyr3   r   r	   rJ   rL   r-   r-   r-   r.   r      sF   
  
$r   c                   @   sN   e Zd ZdZeedddZeee	e
f dddZee	dddZd	S )

VLLMOpenAIz!vLLM OpenAI-compatible API clientr0   c                 C   s   dS )NFr-   )r,   r-   r-   r.   is_lc_serializable   s    zVLLMOpenAI.is_lc_serializablec                 C   s6   d| j i| jddi}t s2|| j| jd |S )z,Get the parameters used to invoke the model.r   Z
logit_biasN)Zapi_keyZapi_base)Z
model_namer3   r   updateZopenai_api_keyZopenai_api_base)r2   rH   r-   r-   r.   _invocation_params   s    zVLLMOpenAI._invocation_paramsc                 C   s   dS )rK   zvllm-openair-   r1   r-   r-   r.   rL      s    zVLLMOpenAI._llm_typeN)rM   rN   rO   rP   classmethodrS   rX   rV   r   rQ   r   rZ   rL   r-   r-   r-   r.   rW      s   rW   N)typingr   r   r   r   Zlangchain_core.callbacksr   Z#langchain_core.language_models.llmsr   Zlangchain_core.outputsr   r	   Zlangchain_core.utilsr
   Zpydanticr   Zlangchain_community.llms.openair   Z langchain_community.utils.openair   r   rW   r-   r-   r-   r.   <module>   s    