【Agent | openai | Streaming | 】流式输出Streaming

Streaming

案例实践

02-streaming流式输出()

描述

  • 什么是Streaming?
  • 为什么要使用Streaming?
    (使用Streaming的意图?)
    (Streaming的作用?)

在实时聊天或长文本生成应用中,长时间的等待会损害用户体验并可能导致触发服务端超时,导致任务失败。流式输出通过持续返回模型生成的文本片段,解决了这两个核心问题。

问题

what where why how

``

``

1 what

什么是流式输出?

  • 通过分块传输 来持续接收数据并实时渲染,而非等待完整的响应后在输出渲染,类似"滴水成河"过程。reference - 前端流式输出实现详解:从原理到实践
  • 流式传输将您想要通过网络发送或接收的资源分解 为更小的块 。浏览器在接收媒体资源(例如视频缓冲或部分加载图片)时,通常会发生这种情况。

where

流式输出的典型应用场景包括:

AI 对话系统(ChatGPT 式交互)

大文件处理进度

实时日志输出

数据分析报告生成

streaming的特点?

主要:

  1. 实时性 减少等待,提升用户体验
  2. 低延迟 减少等待 用户体验
  3. 渐进式 体验自然

解决-why | how

为什么需要流式输出?

想象一个场景:用户向 AI 助手提问,传统方式需要等待完整答案生成后才能看到结果,可能需要等待数十秒。而流式输出允许答案逐字逐句地呈现,就像真人对话一样自然。这种即时反馈不仅减少了感知等待时间,还增强了应用的互动性。

避免长时间等待

流式消息(Streaming)允许在模型生成响应时实时获取 内容,而不需要等待完整响应 生成完毕。这种方式可以显著改善用户体验,特别是在生成长文本内容时,用户可以立即看到输出开始出现。

how

技术选型:为什么选择 SSE?

技术方案

  1. http HTTP/2 Server Push
  2. websocket WebSocket
  3. sse (server-sent events)SSE
http
python 复制代码
# Flask 流式响应示例
from flask import Flask, Response
import time

app = Flask(__name__)

@app.route('/stream')
def stream():
    def generate():
        for i in range(10):
            time.sleep(1)
            yield f"data: 这是第 {
     
     i} 条消息\n\n"
    return Response(generate(), mimetype="text/event-stream")
websocket
python 复制代码
// 前端WebSocket接收流式数据
const ws = new WebSocket('ws://example.com/stream');
ws.onmessage = (event) => {
   
   
    console.log('收到数据:', event.data);
};
sse

简单易用 :基于 HTTP 协议,无需复杂握手
自动重连 :浏览器原生支持断线重连
轻量级 :相比 WebSocket 更节省资源
防火墙友好:使用标准 HTTP 端口

python 复制代码
<!-- 前端接收SSE -->
<script>
const eventSource = new EventSource('/stream');
eventSource.onmessage = (e) => {
     
     
    console.log(e.data);
};
</script>

Learn how to stream model responses from the OpenAI API using server-sent events.

how to;

using server-sent events

Copy Page

reference

1.Streaming API responses-streaming-responses

  1. alibaba-Streaming

  2. bigmodel-streaming

  3. LLM 如何流式传输回答-Google

  4. LazyLLM流式输出-cnblogshttps://www.cnblogs.com/Honesty-is-the-best-policy/p/18982901

  5. https://cloud.tencent.com/developer/article/2552560

  6. 流式输出(Streaming)实现:提升用户体验

相关推荐
考研保研资料分享7 小时前
新闻传播保研经验:中传预推免面试、广告学代表作与实习准备(2025)
面试·职场和发展
玖石书7 小时前
Ubuntu 24.04 UFW 全命令攻略:从入门到端口开放实战
linux·运维·ubuntu
夏尔Gaesar10 小时前
解决Ubuntu安装vm tools时选项为灰色问题
ubuntu
智码看视界10 小时前
C++智能指针全景剖析及面试20问
开发语言·c++·深度学习·面试·内存管理·智能指针
触底反弹12 小时前
🎯 LangSmith 学习与面试全攻略:从 Agent「盲盒」到全链路观测与量化评估
人工智能·面试
一tiao咸鱼12 小时前
还在手动海投?我做了个 AI 求职助手,自动筛选 BOSS 职位再精准投递
前端·后端·面试
缘友一世14 小时前
开源 Linux截图工具闪构(SnapForge)
linux·运维·ubuntu·开源·截图
人工智能和FPGA AI技术14 小时前
wbuntu 极点五笔输入法安装记录(两种方法)
ubuntu·软件构建
考研保研资料分享16 小时前
通信工程保研经验合辑:北航、北理工申请与夏令营、预推免面试(2025)
面试·职场和发展
熊猫钓鱼>_>16 小时前
大学图论第 6 讲:网络流与二分图匹配——对偶性让瓶颈自己现形
开发语言·算法·面试·职场和发展·图论·校招·面经