流式响应
将 stream 设置为 true 后,模型会通过 Server-Sent Events(SSE)逐段返回生成结果,适合聊天界面实时展示。
请求示例
curl https://ai.agriwis.com/api/v1/chat/completions \
-H "Authorization: Bearer $SHUNONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "auto",
"messages": [{"role": "user", "content": "介绍蜀农 API"}],
"stream": true
}'
响应由多条 data: 事件组成,最后以 [DONE] 表示结束:
data: {"choices":[{"delta":{"content":"蜀农"}}]}
data: {"choices":[{"delta":{"content":"智能体"}}]}
data: [DONE]
Python 示例
stream = client.chat.completions.create(
model="auto",
messages=[{"role": "user", "content": "写一段欢迎词。"}],
stream=True,
)
for chunk in stream:
if chunk.choices:
text = chunk.choices[0].delta.content
if text:
print(text, end="", flush=True)
处理建议
- 读取每个 chunk 前检查
choices是否为空。 - 将
delta.content为空的事件视为元数据或结束信号。 - 客户端断开时及时关闭响应连接。
- 如果业务需要完整文本,在服务端累积所有内容后再持久化。
- 流式传输无法撤回已经发送给客户端的内容,展示前可按业务需要增加审核。