~/docs/api/streaming/

流式响应

将 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 为空的事件视为元数据或结束信号。
  • 客户端断开时及时关闭响应连接。
  • 如果业务需要完整文本,在服务端累积所有内容后再持久化。
  • 流式传输无法撤回已经发送给客户端的内容,展示前可按业务需要增加审核。