流式输出(Streaming)实战:让大模型「边想边说」

SSE 原理 · 体验优化 · 前端处理/中断 · 服务端注意点

核心结论:流式不改变「花多少钱」,但彻底改变「用户觉得多快」。把几百毫秒的沉默变成逐字呈现,是 AI 产品最值得做的一处体验优化。

一、原理:从「整段返回」到「逐字推送」

非流式:  提问 ──────等待──────► 整段文本
流式:    提问 ─►字├►字├►字├►…►完成(边生成边推)

底层通常用 SSE(Server-Sent Events),服务端保持连接,每产出一个片段就 data: ... 推一次,前端持续追加。

二、前端处理要点

  1. fetchReadableStream 或 SDK 流式接口读取分块;
  2. 每收到一块就追加渲染,给用户「正在输出」的反馈;
  3. AbortController 支持用户中途停止;
  4. 区分「出错」「正常结束」「被中断」三种终态。

三、服务端注意点

⚠ 权衡:若业务要求「必须返回合法 JSON 才能用」,纯流式会让组装变麻烦。可改为:非流式生成并校验,再通过流式展示,或流式结束后整体校验。

四、常见问题

流式断流/乱码怎么排查?

检查代理是否缓冲了 SSE、字符编码是否一致、以及前端是否正确按块拼接解码。

移动端需要特殊处理吗?

逻辑一致,但要注意弱网下中断更频繁,做好自动重连与续传体验。

通用 API 接入 » · Token 成本优化 » · 函数调用实战 »