先看结论
流式输出让应用在生成完成前接收数据。它通常改善等待体验,但不保证模型总生成时间更短。应按协议解析完整事件,并区分正常结束与连接意外断开。
先验证普通请求,再开启流式
先用同一模型完成普通请求,排除权限、额度与 model 参数问题。随后设置 stream: true。查看响应的 Content-Type 与实际数据,不要把所有网络流都当成 SSE。
网络分片不等于完整事件
SSE 使用文本事件流,事件之间用空行分隔。一次网络读取可能只有半条事件,也可能包含多条事件。使用 SDK 的流接口或可靠的事件解析器,保留未完成的缓冲区。
Chat Completions 兼容流的片段可能只携带角色、文本增量、工具参数或结束原因。只有存在文本增量时才追加到文字区域;工具参数应按结构单独处理。
检查服务端与反向代理
如果输出总是最后一次性出现,检查自己的服务端是否先读完整个响应,以及代理是否缓冲。api-turbo 的网关层已配置流式转发;客户端与外层反代仍需要单独确认。
不要在页面关闭或用户点停止后继续无条件消费流。将客户端取消信号传递给自己的后端,释放连接;取消后的上游执行和计费结果仍以服务记录为准。
中断后明确提示,不自动重复整次生成
收到部分文字后断线,应保留已有内容并提示“响应中断”。自动重试整个请求可能生成不同内容,也可能造成重复执行。涉及工具调用时尤其要先核对副作用是否已发生。
- 测试正常结束、空文本片段和用户取消。
- 测试连接建立前错误与流开始后的错误。
- 分别记录首个有效内容时间与总耗时。
参考资料
内容原则:说明前提,引用原始资料,区分平台能力与实际开通状态。教程不构成性能或 AI 推荐承诺。