
    Ngf                         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dS )    )AnyDictListOptional)CallbackManagerForLLMRun)BaseLLM)
Generation	LLMResult)pre_init)Field)
BaseOpenAI)is_openai_v1c                   t   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)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           	          	 ddl m} n# t          $ r t          d          w xY w |d|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)   VLLModels      Y/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/llms/vllm.pyvalidate_environmentzVLLM.validate_environmentM   s    	,,,,,,, 	 	 	=  	 $8 
/!'(>!?$%89//
 
 ]#
 
x s   	 #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   sT     |-ZZ+ $ 5!%!7I/#3
 
 	
    promptsrun_managerkwargsc                    ddl m} |                    dd          }i | j        |d|i}|j                                         |d
i fd|                                D             }|r| j                            |||          }	n| j                            ||          }	g }
|	D ]8}|j	        d         j
        }|
                    t          |          g           9t          |
	          S )z*Run the LLM on the given prompt and input.r   )SamplingParamslora_requestNr   c                 $    i | ]\  }}|v 	||S r-   r-   ).0kv
known_keyss      r2   
<dictcomp>z"VLLM._generate.<locals>.<dictcomp>   s$    BBB1!z//q!///r9   )r?   )text)generationsr-   )r.   r>   popr8   __annotations__keysitemsr(   generateoutputsrF   appendr	   r
   )r7   r:   r   r;   r<   r>   r?   paramssample_paramsrM   rG   outputrF   rD   s                @r2   	_generatezVLLM._generatev   s;    	('''''zz.$77 BD(AFAFDAA $388::
& 
 
BBBBBBB
 

  	Ck**\ +  GG k**7MBBG 	8 	8F>!$)D
 5 5 567777[1111r9   c                     dS )Return type of llm.r.   r-   r6   s    r2   	_llm_typezVLLM._llm_type   s	     vr9   )NN)*__name__
__module____qualname____doc__r   strrI   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
   rR   rU   r-   r9   r2   r   r      s        E3OOO?*+(3-+++V(-x~--- AsJJJD!GXc]!!!H!e!!!  #u""" K=E5WE3OOOE!OT!!!9 $D(49
$$$KJ# NCC"Hhsm"""AE3>"&L(3-&&&! #(%"="="=Kc3h===XFC$ 4    X, 
c3h 
 
 
 X
( %):>	"2 "2c"2 tCy!"2 67	"2
 "2 
"2 "2 "2 "2H 3    X  r9   r   c                   v    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dS )
VLLMOpenAIz!vLLM OpenAI-compatible API clientr*   c                     dS )NFr-   )r0   s    r2   is_lc_serializablezVLLMOpenAI.is_lc_serializable   s    ur9   c                     d| j         i| j        ddi}t                      s"|                    | 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   rO   s     r2   _invocation_paramszVLLMOpenAI._invocation_params   so    
 T_"
""
 $"
 "

 ~~ 	MM#2 $ 4    r9   c                     dS )rT   zvllm-openair-   r6   s    r2   rU   zVLLMOpenAI._llm_type   s	     }r9   N)rV   rW   rX   rY   classmethodr\   rc   r_   r   rZ   r   rl   rU   r-   r9   r2   ra   ra      s        ++4    [ DcN    X$ 3    X  r9   ra   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   ra   r-   r9   r2   <module>rw      s   , , , , , , , , , , , , = = = = = = 7 7 7 7 7 7 8 8 8 8 8 8 8 8 ) ) ) ) ) )       6 6 6 6 6 6 9 9 9 9 9 9P P P P P7 P P Pf         r9   