跳到主内容
快讯直播
AI智模界
AI 词典

流式输出(Streaming / SSE):打字机效果背后,服务端如何把字一个个推给你

一句话定义:流式输出(Streaming)是指服务端不等全部结果算完,就把已经生成的内容分片、持续推给客户端;SSE(Server-Sent Events,服务器发送事件)是其中最常见的服务端推送协议。

把它想成上菜:普通请求像点了一桌菜,后厨全做完才一起端上来,等待久;流式输出像做好一道就端一道,你马上能吃到第一口。大模型生成文字时,每算出一个词元(token)或一小段,就立刻发出去,前端收到一段就追加一段,于是出现打字机效果。注意:打字机效果是前端渲染,流式输出是后端数据到达方式;如果后端一次性返回,前端也能用定时器“假装”逐字显示,但那只是动画。

SSE 怎么工作:客户端发起一个 HTTP 请求,服务端返回 Content-Type: text/event-stream,然后保持连接不关闭,按 data: ... 的格式持续发送小消息。浏览器有原生 EventSource 接口接收。它本质是单向:服务器→客户端。很多大模型 API 用 POST 发提示词,所以不一定用原生 EventSource,而是用 fetch 读取响应流(ReadableStream),再手动解析 SSE 格式;也有服务用 chunked 传输编码或 NDJSON(每行一个 JSON)达到类似效果。

和相邻概念的区别

概念方向典型用途特点
普通 HTTP请求→响应一次性拿完整结果简单,但等待久
轮询(Polling)客户端反复问看任务好没延迟高、请求多
SSE服务器→客户端聊天、通知、日志基于 HTTP,文本友好,可自动重连
WebSocket双向协同编辑、游戏全双工,但更重
流式输出体验/数据形态大模型对话不是具体协议,SSE 只是载体之一

对实际工作的意义:对 AI 从业者,首字延迟(TTFT,Time To First Token)往往比总生成时间更影响体感。要做流式,得注意代理和网关别缓冲响应,否则字会攒着一次性出现;前端要能增量渲染 Markdown、处理半截 JSON 和代码块;用户点“停止”时,用 AbortController 断开连接,服务端是否停止计算取决于实现。对普通人,流式输出让等待变得可感知、可打断,长回答不用干等;但它不会让模型算得更快,只是把结果更早露出来。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。