DOCAI · 概念 · L2
什么是流式输出
一句话定义
模型边生成边把 token 推给客户端,用户不必等整段写完才看到第一个字。
开发者更新 2026-11-13核验 2026-11-13 · docai 编辑部
它解决什么
模型是一个 token 一个 token 生成的。等整段写完再返回,用户要盯着空白屏幕几秒到几十秒。
流式输出把这几十秒摊开:第一个 token 一出来就发,后面持续追加。
体感延迟从「总生成时间」变成「首字延迟」。
怎么工作
- 请求里打开
stream: true。 - 服务端用 SSE(Server-Sent Events)持续推事件。
- 客户端逐条读取,拼接增量文本。
- 最后一条通常是结束事件,可能带用量统计。
断流与超时
流式最常见的坑不是「连不上」,而是「连上了但中途断」:
| 现象 | 常见原因 | 处理 |
|---|---|---|
| 几十秒没有任何数据 | 首字延迟高、排队 | 设首字节超时,别只设总超时 |
| 中途停止 | 网络抖动、代理缓冲 | 客户端重连;服务端不支持续传就要整段重发 |
| 一直不结束 | 输出没有上限 | 设 max_tokens 与总超时 |
注意:重发意味着输入 token 再算一次,成本会上去。
三个常见误解
- 「流式让生成更快」:总时间基本不变,变的是「什么时候看到第一个字」。
- 「流式可以随时中断并续上」:多数服务不支持从断点续传,断了就得重来。
- 「流式不需要超时」:更需要。没有总超时,一个卡住的连接会一直占着资源。
延伸阅读
- 首字延迟是什么:什么是首字延迟
- 请求发到哪:什么是 endpoint