流式输出失效问题
当流式输出不工作时,通常有以下几种原因。
常见问题
1. stream 参数未设置为 true
# 错误 - 缺少 stream=True
response = client.chat.completions.create(
model="gpt-4o",
messages=[...]
)
# 正确
stream = client.chat.completions.create(
model="gpt-4o",
messages=[...],
stream=True # 开启流式输出
)2. 使用了错误的遍历方式
使用 SDK 时,需要正确遍历流式响应:
# 错误 - 直接访问 response.choices
response = client.chat.completions.create(model="gpt-4o", messages=[...], stream=True)
print(response.choices[0].message.content) # 流式模式下不可这样访问
# 正确 - 遍历 chunks
stream = client.chat.completions.create(model="gpt-4o", messages=[...], stream=True)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")3. 网络代理/防火墙干扰 SSE
某些网络代理或防火墙可能干扰 SSE 长连接。
解决:
- 检查网络代理配置
- 尝试在命令行中直接 cURL 测试,排除代理影响
curl https://ai.amaxsmp.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxx" \
--no-buffer \
-d '{"model": "gpt-4o", "messages": [...], "stream": true}'4. 客户端连接提前关闭
如果你的客户端在处理了一些 chunk 后主动关闭连接,可能影响后续内容的接收。
5. 特定模型不支持流式
虽然绝大多数模型都支持流式输出,但极少数模型可能不支持。建议确认模型能力。
排查步骤
- 确认
stream: true参数已设置 - 用 cURL 测试,确认网关能正常返回 SSE
- 检查 SDK 版本是否最新
- 检查代码中的流式处理逻辑
- 查看 调用日志 确认请求状态