Way To Agent
大模型应用基础

流式输出与 SSE

介绍大模型流式输出的价值、SSE 事件设计、Java 转发和前端展示边界。

大模型应用基础beginnerSSEStreamingWebClient前端展示

流式输出与 SSE

流式输出的价值,不只是“用户更快看到字出来了”。一旦改成流式,事件协议、错误处理、成本确认和后端边界都会跟着变化。它看起来像交互优化,实际是一次链路设计变化。

所以理解 SSE,关键不在浏览器怎么显示,而在系统怎样把一条长过程拆成可持续推送的事件流。

为什么很多 AI 功能天然适合流式

因为模型生成本来就是增量的。对用户来说,等待完整结果再一次性返回,往往既慢又不透明;改成流式后,系统至少能更早暴露这些状态:

  • 已开始生成。
  • 正在检索。
  • 正在返回文本片段。
  • 已完成或出错。

这会明显改善等待感,但也把更多中间状态暴露给前后端。

一旦流式,系统要多接住什么

流式真正新增的难点通常是:

  • 浏览器断开时怎么收尾。
  • 后端什么时候记日志和结算额度。
  • 错误是在流中返回,还是直接断开连接。
  • 检索状态、引用和正文是否走同一事件协议。

这些都不是“前端小细节”,而是完整链路问题。

SSE 为什么常是更实际的选择

在 Web 场景里,SSE 的好处很现实:

  • 单向推送就够用。
  • 浏览器支持直接消费。
  • 文本和状态事件都容易组织。

它不是万能方案,但对知识库问答、Copilot、流式生成这类场景,通常比引入更重的实时协议更合适。

最容易忽视的边界

流式最容易被低估的一点,是业务入口层的职责。前端不该直接连内部 AI 服务,真正对外的入口通常仍然要负责:

  • 登录和权限
  • 额度控制
  • 请求追踪
  • 失败降级

也就是说,SSE 不是把后端绕开,而是让后端换了一种交付结果的方式。

一句话先记住

流式输出不是单纯让回答更快出现,而是把一次 AI 调用拆成了一条持续交付的事件流。

继续阅读

  • 10-backend-for-ai-agent/003-sse-in-java.md
  • 09-ai-agent-engineering/002-ai-call-log.md