大模型应用基础
流式输出与 SSE
介绍大模型流式输出的价值、SSE 事件设计、Java 转发和前端展示边界。
大模型应用基础beginnerSSEStreamingWebClient前端展示
流式输出与 SSE
流式输出的价值,不只是“用户更快看到字出来了”。一旦改成流式,事件协议、错误处理、成本确认和后端边界都会跟着变化。它看起来像交互优化,实际是一次链路设计变化。
所以理解 SSE,关键不在浏览器怎么显示,而在系统怎样把一条长过程拆成可持续推送的事件流。
为什么很多 AI 功能天然适合流式
因为模型生成本来就是增量的。对用户来说,等待完整结果再一次性返回,往往既慢又不透明;改成流式后,系统至少能更早暴露这些状态:
- 已开始生成。
- 正在检索。
- 正在返回文本片段。
- 已完成或出错。
这会明显改善等待感,但也把更多中间状态暴露给前后端。
一旦流式,系统要多接住什么
流式真正新增的难点通常是:
- 浏览器断开时怎么收尾。
- 后端什么时候记日志和结算额度。
- 错误是在流中返回,还是直接断开连接。
- 检索状态、引用和正文是否走同一事件协议。
这些都不是“前端小细节”,而是完整链路问题。
SSE 为什么常是更实际的选择
在 Web 场景里,SSE 的好处很现实:
- 单向推送就够用。
- 浏览器支持直接消费。
- 文本和状态事件都容易组织。
它不是万能方案,但对知识库问答、Copilot、流式生成这类场景,通常比引入更重的实时协议更合适。
最容易忽视的边界
流式最容易被低估的一点,是业务入口层的职责。前端不该直接连内部 AI 服务,真正对外的入口通常仍然要负责:
- 登录和权限
- 额度控制
- 请求追踪
- 失败降级
也就是说,SSE 不是把后端绕开,而是让后端换了一种交付结果的方式。
一句话先记住
流式输出不是单纯让回答更快出现,而是把一次 AI 调用拆成了一条持续交付的事件流。
继续阅读
10-backend-for-ai-agent/003-sse-in-java.md09-ai-agent-engineering/002-ai-call-log.md