流式响应
POST /v1/chat/completions(stream: true)
在请求中设置 stream: true,服务端以 Server-Sent Events (SSE) 逐块返回内容。强烈建议在交互式场景启用 —— 首字等待时间可从 10 秒以上降低到 2–3 秒。
请求示例
cURL
curl https://api.openbili.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "claude-opus-4-8",
"messages": [{"role": "user", "content": "写一首关于春天的短诗"}],
"max_tokens": 1024,
"stream": true
}'Python
import openai
client = openai.OpenAI(api_key="YOUR_API_KEY", base_url="https://api.openbili.com/v1")
stream = client.chat.completions.create(
model="claude-opus-4-8",
messages=[{"role": "user", "content": "写一首关于春天的短诗"}],
max_tokens=1024,
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="", flush=True)Node.js
import OpenAI from "openai";
const client = new OpenAI({ apiKey: "YOUR_API_KEY", baseURL: "https://api.openbili.com/v1" });
const stream = await client.chat.completions.create({
model: "claude-opus-4-8",
messages: [{ role: "user", content: "写一首关于春天的短诗" }],
max_tokens: 1024,
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0].delta.content || "");
}流式返回格式
每个数据块以 data: 开头,内容是一个增量(delta)对象;流结束时返回 data: [DONE]。
data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"春"},"finish_reason":null}]}
data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"风"},"finish_reason":null}]}
data: [DONE]
| 字段 | 类型 | 说明 |
|---|---|---|
object |
string | 固定为 chat.completion.chunk。 |
choices[].delta |
object | 本块的增量内容(content / role / tool_calls)。 |
choices[].finish_reason |
string | null | 结束原因;未结束为 null,结束为 stop 等。 |