o
    :/i                     @   s   d dl Z d dlZd dlmZ d dlmZ d dlmZmZ d dl	m
Z
mZ d dlmZ d dlmZ d dlmZ eeZd	ZG d
d deZG dd deZG dd deZdee fddZde jddfddZdS )    N)AsyncEngineArgs)CLISubcommand)build_and_serve_renderersetup_server)make_arg_parservalidate_parsed_serve_args)VLLM_SUBCMD_PARSER_EPILOG)init_logger)FlexibleArgumentParserz"Launch individual vLLM components.c                   @   sH   e Zd ZU dZeed< ededdfddZe	de
jddfd	d
ZdS )LaunchSubcommandBasez0The base class of subcommands for `vllm launch`.helpparserreturnNc                 C   s   t | dS )zAdd the CLI arguments to the parser.

        By default, adds the standard vLLM serving arguments.
        Subclasses can override to add component-specific arguments.
        N)r   )clsr    r   h/lsinfo/ai/hellotax_ai/llm_service/venv_vllm/lib/python3.10/site-packages/vllm/entrypoints/cli/launch.pyadd_cli_args    s   z!LaunchSubcommandBase.add_cli_argsargsc                 C   s   t N)NotImplementedErrorr   r   r   r   cmd)   s   zLaunchSubcommandBase.cmd)__name__
__module____qualname____doc__str__annotations__classmethodr
   r   staticmethodargparse	Namespacer   r   r   r   r   r      s   
 r   c                   @   s0   e Zd ZdZdZdZedejddfddZ	dS )	RenderSubcommandz*The `render` subcommand for `vllm launch`.renderzKLaunch a GPU-less rendering server (preprocessing and postprocessing only).r   r   Nc                 C   s   t t|  d S r   )uvlooprunrun_launch_fastapir   r   r   r   r   4   s   zRenderSubcommand.cmd)
r   r   r   r   namer   r   r    r!   r   r   r   r   r   r"   .   s    r"   c                   @   sT   e Zd ZdZdZedejddfddZdejddfdd	Z	d
ej
defddZdS )LaunchSubcommandzThe `launch` subcommand for the vLLM CLI.

    Uses nested sub-subcommands so each component can define its own
    arguments independently (e.g. ``vllm launch render``).
    launchr   r   Nc                 C   s*   t | dr| jd ur| j| _| |  d S )N	model_tag)hasattrr*   modellaunch_commandr   r   r   r   r   B   s   zLaunchSubcommand.cmdc                 C   s   t | d S r   )r   )selfr   r   r   r   validateI   s   zLaunchSubcommand.validate
subparsersc              
   C   s   |j | jttd| j dd}|jddd}t D ]1}|j |j|j|jd| j d|j dd}|j|jd	 |	| t
j| j d|j d
|_q|S )Nzvllm z <component> [options])r   descriptionusageTlaunch_component)requireddest z
 [options])r-   )subcmd)
add_parserr'   DESCRIPTIONadd_subparsersr   __subclasses__r   set_defaultsr   r   r   formatepilog)r.   r0   launch_parserlaunch_subparserscmd_clscmd_subparserr   r   r   subparser_initL   s,   

zLaunchSubcommand.subparser_init)r   r   r   r   r'   r   r    r!   r   r/   _SubParsersActionr
   rC   r   r   r   r   r(   9   s    r(   r   c                   C   s   t  gS r   )r(   r   r   r   r   cmd_initi   s   rE   r   c                    st   ddl m} t| \}}t| }| }d|_||d}t|||| I dH }z|I dH  W |  dS |  w )z=Run the online serving layer with FastAPI (no GPU inference).r   )
VllmConfigN)model_config)	vllm.configrF   r   r   from_cli_argscreate_model_configquantizationr   close)r   rF   listen_addresssockengine_argsrG   vllm_configshutdown_taskr   r   r   r&   m   s   


r&   )r    r$   vllm.engine.arg_utilsr   vllm.entrypoints.cli.typesr   "vllm.entrypoints.openai.api_serverr   r    vllm.entrypoints.openai.cli_argsr   r   vllm.entrypoints.utilsr   vllm.loggerr	   vllm.utils.argparse_utilsr
   r   loggerr9   r   r"   r(   listrE   r!   r&   r   r   r   r   <module>   s    0