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: 数据帧,并以完成标记结束。客户端需要:
- 按数据帧读取,而不是等待整个响应体。
- 忽略空行并解析每个
data:片段。 - 识别完成标记。
- 处理中途断线、超时和非200状态。
- 不要把网络分片边界当作完整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)做好断线与重试设计
流式请求已产生部分输出后,不应无条件自动重放,否则可能造成重复内容或重复计费。应用需要记录是否已收到数据,再决定提示用户还是重新请求。
反向代理注意事项
如果你在自己的服务前再加一层代理,应关闭不必要的响应缓冲,并为长连接设置合理超时。具体配置取决于你的代理软件。