朵灵 AI 文档
API 参考

流式响应

使用 Server-Sent Events 持续读取模型输出并正确处理完成与异常。

流式响应可以在模型生成过程中逐步返回内容,适合聊天界面和长输出场景。

cURL示例

使用 -N 关闭cURL输出缓冲:

curl -N https://duolingai.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "your-model",
    "stream": true,
    "messages": [
      {"role": "user", "content": "分三步解释什么是流式响应。"}
    ]
  }'

SSE数据

兼容实现通常通过 text/event-stream 返回若干 data: 数据帧,并以完成标记结束。客户端需要:

  1. 按数据帧读取,而不是等待整个响应体。
  2. 忽略空行并解析每个 data: 片段。
  3. 识别完成标记。
  4. 处理中途断线、超时和非200状态。
  5. 不要把网络分片边界当作完整JSON边界。

Python SDK

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://duolingai.com/v1",
)

stream = client.chat.completions.create(
    model="your-model",
    messages=[{"role": "user", "content": "你好"}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

做好断线与重试设计

流式请求已产生部分输出后,不应无条件自动重放,否则可能造成重复内容或重复计费。应用需要记录是否已收到数据,再决定提示用户还是重新请求。

反向代理注意事项

如果你在自己的服务前再加一层代理,应关闭不必要的响应缓冲,并为长连接设置合理超时。具体配置取决于你的代理软件。

本页目录