# SPDX-License-Identifier: Apache-2.0# SPDX-FileCopyrightText: Copyright contributors to the vLLM project"""This file demonstrates using the `LLMEngine`for processing prompts with various sampling parameters."""importargparsefromvllmimportEngineArgs,LLMEngine,RequestOutput,SamplingParamsfromvllm.utils.argparse_utilsimportFlexibleArgumentParserdefcreate_test_prompts()->list[tuple[str,SamplingParams]]:"""Create a list of test prompts with their sampling parameters."""return[("A robot may not injure a human being",SamplingParams(temperature=0.0,logprobs=1,prompt_logprobs=1),),("To be or not to be,",SamplingParams(temperature=0.8,top_k=5,presence_penalty=0.2),),("What is the meaning of life?",SamplingParams(n=2,temperature=0.8,top_p=0.95,frequency_penalty=0.1),),]defprocess_requests(engine:LLMEngine,test_prompts:list[tuple[str,SamplingParams]]):"""Continuously process a list of prompts and handle the outputs."""request_id=0print("-"*50)whiletest_promptsorengine.has_unfinished_requests():iftest_prompts:prompt,sampling_params=test_prompts.pop(0)engine.add_request(str(request_id),prompt,sampling_params)request_id+=1request_outputs:list[RequestOutput]=engine.step()forrequest_outputinrequest_outputs:ifrequest_output.finished:print(request_output)print("-"*50)definitialize_engine(args:argparse.Namespace)->LLMEngine:"""Initialize the LLMEngine from the command line arguments."""engine_args=EngineArgs.from_cli_args(args)returnLLMEngine.from_engine_args(engine_args)defparse_args():parser=FlexibleArgumentParser(description="Demo on using the LLMEngine class directly")parser=EngineArgs.add_cli_args(parser)returnparser.parse_args()defmain(args:argparse.Namespace):"""Main function that sets up and runs the prompt processing."""engine=initialize_engine(args)test_prompts=create_test_prompts()process_requests(engine,test_prompts)if__name__=="__main__":args=parse_args()main(args)