指南
流式传输
流式传输是改善聊天、copilot 和交互式生成流程中感知延迟的最简单方式。
流式传输是改善聊天、copilot 和交互式生成流程中感知延迟的最简单方式。
当用户能从部分输出中受益时,使用流式传输。不要把它当作异步任务 API 的替代品:视频、音乐和其他资产工作流仍然可能需要创建任务、轮询或回调。
已发布的流式传输接入点
| 接口 | 如何启用 |
|---|---|
| OpenAI 兼容聊天 | 设置 stream: true 开启 /openai/v1/chat/completions |
| Gemini 流式传输 | 调用 streamGenerateContent?alt=sse |
何时使用流式传输
- 聊天界面
- 在 IDE 或 copilot 中进行渐进式生成
- 长时间运行的答案生成,其中首个 token 延迟很重要
何时不应使用流式
| 场景 | 更适合 |
|---|---|
| route 创建视频、音乐或其他异步资产 | 任务创建加轮询或回调 |
| 客户端必须先校验一个完整 JSON 对象才能展示 | 非流式响应,或服务端缓冲后校验 |
| 用户不会交互式查看输出 | 批处理请求并存储最终响应 |
| 网络层无法处理 server-sent events | 先使用非流式,在客户端支持验证后再开启流式 |
流的样子
- 兼容 OpenAI 的聊天会返回 SSE 分块,格式为
chat.completion.chunk格式 - Gemini 流式传输使用已发布的
streamGenerateContent?alt=sse路由 - 在流关闭之前,不应将任何一个流视为最终答案
OpenAI 兼容示例
curl https://api.anyint.ai/openai/v1/chat/completions \
-H "Authorization: Bearer $ANYINT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"stream": true,
"messages": [
{"role": "user", "content": "Stream three short bullets about API gateways."}
]
}'Gemini 兼容示例
curl "https://api.anyint.ai/gemini/v1beta/models/gemini-3-flash-preview:streamGenerateContent?alt=sse" \
-H "Authorization: Bearer $ANYINT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"role": "user",
"parts": [{"text": "Stream a short answer about model routing."}]
}
]
}'实现提示
- 将每个分块视为部分状态,而不是最终答案
- 让服务器能够容忍连接中断
- 如果需要审计或回放,请存储最终组装后的输出
- 将 UI 渲染与业务侧完成逻辑分离
- 将流中断与模型拒答、无效请求错误分开处理
- 使用生产中同样的代理、CDN 或服务端框架做测试
生产检查清单
| 检查 | 为什么重要 |
|---|---|
| 客户端收到多个 chunk | 确认客户端没有一直缓冲到完成才展示 |
| UI 可以取消流 | 用户离开页面后避免继续浪费 token |
| 服务端能处理连接中断 | 移动端和浏览器客户端经常断连 |
| 必要时存储最终组装输出 | 审计和回放需要完整文本,而不只是 UI chunk |
| 错误路径可见 | 如果流提前停止,用户需要清晰的失败状态 |