You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于vLLM为RAG应用实现LLM实时流式输出?

在vLLM 0.5.0.post1中实现LLM流式输出(用于RAG应用)

针对你的vLLM版本,只需启用流式生成参数并迭代返回的生成器,就能实现实时流式输出。以下是修改后的完整代码及关键说明:

修改后的代码

params = SamplingParams(temperature=TEMPERATURE, 
                      min_tokens=128, 
                      max_tokens=1024)
llm = LLM(MODEL_NAME, 
        tensor_parallel_size=4, 
        dtype="half", 
        gpu_memory_utilization=0.5, 
        max_model_len=27_000)
    
message = SYSTEM_PROMPT + "\n\n" + f"Question: {question}\n\nDocument: {document}"

# 开启流式生成,获取可迭代的生成器对象
stream_response = llm.generate(message, params, stream=True)

# 迭代生成器,实时获取并输出每一批次的内容
full_response = ""
for output in stream_response:
    # 提取当前批次新增的文本(排除已输出的历史内容)
    new_content = output.outputs[0].text[len(full_response):]
    full_response = output.outputs[0].text
    # 实时打印(如果是Web应用,可替换为向前端推送内容的逻辑)
    print(new_content, end="", flush=True)

关键说明

  • stream=True:这是开启流式输出的核心参数,让generate方法返回生成器而非等待完整响应一次性返回。
  • 增量内容提取:通过对比已保存的完整响应长度,每次循环只提取本次新增的文本片段,避免重复输出。
  • flush=True:强制刷新输出缓冲区,确保内容实时显示在终端,不会因缓存延迟影响体验。

扩展适配(Web场景)

如果你的RAG应用是Web服务(如FastAPI/Flask),可将逻辑适配为服务器推送事件(SSE):

  • FastAPI中使用StreamingResponse包装生成器,构建流式接口;
  • 前端通过EventSource监听接口,实时接收并渲染新增内容。

内容的提问来源于stack exchange,提问作者Cihan Yalçın

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 08:56:05