
    7|hf                         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
e      Z G d de      Zy)    )AnyDictListOptional)CallbackManagerForLLMRun)BaseLLM)
Generation	LLMResult)pre_init)Field)
BaseOpenAI)is_openai_v1c                      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      Zeee f   ed<   	 d	Z!e ed<   e"ded efd!       Z#e$d eee f   fd"       Z%	 	 d(d#ee   deee      d$ee&   d%e d e'f
d&Z(e$d efd'       Z)y	))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           	          	 ddl m}  |d|d   |d   |d   |d   |d   d	|d
   |d<   |S # t        $ r t        d      w xY w)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)   VLLModels      \/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/llms/vllm.pyvalidate_environmentzVLLM.validate_environmentM   s    	, $ 
/!'(>!?$%89//
 ]#
x   	= 	s	   - Ac                    | j                   | j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  | j                  | j                  dS )z,Get the default parameters for calling vllm.)r   r   
max_tokensr   r   r   r   r   r   r    r   r"   )r   r   r!   r   r   r   r   r   r   r    r   r"   selfs    r2   _default_paramszVLLM._default_paramsd   sl     ||--ZZZZ++ $ 5 5!%!7!7II//#33
 	
    promptsrun_managerkwargsc           
         ddl m} |j                  dd      }i | j                  |d|i}|j                  j                         } |d	i |j                         D 	
ci c]  \  }	}
|	|v s|	|
 c}
}	}|r| j                  j                  |||      }n| j                  j                  ||      }g }|D ]7  }|j                  d   j                  }|j                  t        |      g       9 t        |      S c c}
}	w )
z*Run the LLM on the given prompt and input.r   )SamplingParamslora_requestNr   )r?   )text)generationsr-   )r.   r>   popr8   __annotations__keysitemsr(   generateoutputsr@   appendr	   r
   )r7   r:   r   r;   r<   r>   r?   params
known_keyskvsample_paramsrG   rA   outputr@   s                   r2   	_generatezVLLM._generatev   s    	(zz.$7 BD((AFAFDA $3388:
& 
 &B1!z/q!tB

 kk**\ + G kk**7MBG 	8F>>!$))D
 567	8 [11! Cs   C=+C=c                      y)Return type of llm.r.   r-   r6   s    r2   	_llm_typezVLLM._llm_type   s     r9   )NN)*__name__
__module____qualname____doc__r   strrC   r   r   intr   boolr   r   r   floatr   r   r   r   r   r   r   r    r!   r"   r$   r%   r   dictr'   r   r   r(   r   r3   propertyr8   r   r
   rO   rR   r-   r9   r2   r   r      s   E3O?*+(3-+V(-x~- AsJD!GXc]!H!e!  #u" K=E5WE3OE!OT!9 $D(49
$KJ# NCC"Hhsm"AE3>"&L(3-&! #("=Kc3h=XFC$ 4  , 
c3h 
 
( %):>	"2c"2 tCy!"2 67	"2
 "2 
"2H 3  r9   r   c                   \    e Zd ZdZedefd       Zedee	e
f   fd       Zede	fd       Zy)
VLLMOpenAIz!vLLM OpenAI-compatible API clientr*   c                      y)NFr-   )r0   s    r2   is_lc_serializablezVLLMOpenAI.is_lc_serializable   s    r9   c                     d| j                   i| j                  ddi}t               s(|j                  | j                  | j
                  d       |S )z,Get the parameters used to invoke the model.r   
logit_biasN)api_keyapi_base)
model_namer8   r   updateopenai_api_keyopenai_api_base)r7   rI   s     r2   _invocation_paramszVLLMOpenAI._invocation_params   s_    
 T__"
"""
 $"

 ~MM#22 $ 4 4 r9   c                      y)rQ   zvllm-openair-   r6   s    r2   rR   zVLLMOpenAI._llm_type   s     r9   N)rS   rT   rU   rV   classmethodrY   r`   r\   r   rW   r   ri   rR   r-   r9   r2   r^   r^      s\    +4   DcN  $ 3  r9   r^   N)typingr   r   r   r   langchain_core.callbacksr   #langchain_core.language_models.llmsr   langchain_core.outputsr	   r
   langchain_core.utilsr   pydanticr   langchain_community.llms.openair    langchain_community.utils.openair   r   r^   r-   r9   r2   <module>rt      s;    , , = 7 8 )  6 9P7 Pf r9   