Streaming
案例实践
描述
- 什么是Streaming?
- 为什么要使用Streaming?
(使用Streaming的意图?)
(Streaming的作用?)
在实时聊天或长文本生成应用中,长时间的等待会损害用户体验并可能导致触发服务端超时,导致任务失败。流式输出通过持续返回模型生成的文本片段,解决了这两个核心问题。
问题
what where why how
``
``
1 what
什么是流式输出?
- 通过分块传输 来持续接收数据并实时渲染,而非等待完整的响应后在输出渲染,类似"滴水成河"过程。reference - 前端流式输出实现详解:从原理到实践
- 流式传输将您想要通过网络发送或接收的资源分解 为更小的块 。浏览器在接收媒体资源(例如视频缓冲或部分加载图片)时,通常会发生这种情况。

where
流式输出的典型应用场景包括:
AI 对话系统(ChatGPT 式交互)
大文件处理进度
实时日志输出
数据分析报告生成
streaming的特点?
主要:
- 实时性 减少等待,提升用户体验
- 低延迟 减少等待 用户体验
- 渐进式 体验自然
解决-why | how
为什么需要流式输出?
想象一个场景:用户向 AI 助手提问,传统方式需要等待完整答案生成后才能看到结果,可能需要等待数十秒。而流式输出允许答案逐字逐句地呈现,就像真人对话一样自然。这种即时反馈不仅减少了感知等待时间,还增强了应用的互动性。
避免长时间等待
流式消息(Streaming)允许在模型生成响应时实时获取 内容,而不需要等待完整响应 生成完毕。这种方式可以显著改善用户体验,特别是在生成长文本内容时,用户可以立即看到输出开始出现。
how
技术选型:为什么选择 SSE?
技术方案
- http HTTP/2 Server Push
- websocket WebSocket
- 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