流式输出
流式请求会在模型生成内容时逐段返回,适合聊天界面和长回复。
curl 示例
bash
curl -N https://coffeecatbox.cc/v1/chat/completions \
-H "Authorization: Bearer $NEWAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "控制台中的模型名",
"messages": [
{"role": "user", "content": "分三点解释流式输出"}
],
"stream": true
}'-N 会关闭 curl 的输出缓冲。响应通常采用 Server-Sent Events 格式:
text
data: {"choices":[{"delta":{"content":"第一"}}]}
data: {"choices":[{"delta":{"content":"点"}}]}
data: [DONE]处理原则
- 逐行读取响应;
- 忽略空行;
- 去掉每行开头的
data:; - 收到
[DONE]后结束; - 解析 JSON 并拼接增量内容;
- 正确处理连接中断和错误事件。
反向代理注意事项
如果你在自己的服务前增加 Nginx,需避免缓存流式响应:
nginx
location / {
proxy_pass https://coffeecatbox.cc;
proxy_http_version 1.1;
proxy_buffering off;
proxy_read_timeout 300s;
}不要把 API 令牌硬编码在公开的 Nginx 配置仓库中。
常见问题
内容最后一次性出现
通常是客户端、网关或 CDN 缓冲了响应。检查是否关闭代理缓冲,并确认客户端按流读取。
中途断开
检查客户端超时、反向代理读取超时和网络稳定性。长时间无输出的推理模型可能需要更长的读取超时。
重试导致重复内容
流式请求断开后,无法保证从原位置续传。自动重试时应把新请求当作完整的新响应,并避免直接拼到旧内容后面。