流式响应接入指南:让界面像打字机一样输出
发布于 2026-09-25
流式响应接入指南:让界面像打字机一样输出
大模型生成一段回答可能需要几秒到几十秒。如果等全部生成完再返回,用户面对的就是一个“转圈”的界面。流式输出(SSE)把回答切成一个个 token 推送过来,体验完全不同。
开启只需要一个参数
APIBridger 兼容 OpenAI 协议,把 stream 设为 true 即可:
前端渲染的三个细节
1. 增量拼接而不是覆盖:每个 chunk 里的 delta.content 是新增片段,往已有文本后面追加;
2. 区分生成中与已结束:渲染时区分“生成中”(可显示光标动画)与“已结束”(finishreason 有值),避免用户在结束后还以为在等;
3. 滚动跟随但可打断:自动滚到底部,但用户手动上滚时应暂停跟随——否则用户没法回看前面的内容。
常见坑
超时设置:流式连接持续时间长,HTTP 客户端与网关的读超时要留足,不要按普通接口的默认值来;
工具调用:函数调用场景下 delta 的结构不同,需要按协议处理参数片段的拼接;
错误中断:流中途断开时给用户“重试”入口,并把已收到的内容保留在界面上。
什么时候不用流式
需要完整结果再做后处理(如结构化抽取、批量离线任务)时,非流式更简单可靠。面向人的对话用流式,面向程序的调用用非流式,按这个原则选就不会错。