流式输出(SSE)
边生成边接收响应:在任一端点设置 stream:true,Anthropic 的 SSE 事件会原样到达。附 Python、Node 和 fetch 示例。
在任一端点上设置 stream:true。Anthropic 的 SSE 事件类型会原样、无缓冲地送达。
全部模型、功能与价格 面向 AI 智能体的文档索引:https://oneprovider.dev/docs/llms.txt 为什么要用流式输出
- 首个 token 的等待时间从数秒降到约 100 毫秒。
- 较长的工具调用循环不会触及“响应须在 6 分钟内开始”的限制,因为流式请求会立即开始返回。任何请求最长为 10 分钟,详见错误码 。
- 体验更好:内容逐步渲染,而不是一直转圈。
事件类型
message_start:第一个事件,返回助手的元数据。content_block_start·content_block_delta·content_block_stop:每个 text 或 tool_use 块对应一组。delta 为text_delta或input_json_delta(用于工具输入)。message_delta:结束时更新 stop_reason 和 usage。message_stop:最后一个事件。ping:每约 15 秒一次的保活事件。
Python (Anthropic SDK)
pythonwith client.messages.stream(
model="claude-sonnet-5-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Tell me a haiku about Frankfurt."}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
final = stream.get_final_message()
print("\n--", final.usage) Node / TypeScript
tsconst stream = client.messages.stream({
model: "claude-sonnet-5-5",
max_tokens: 1024,
messages: [{ role: "user", content: "Tell me a haiku about Frankfurt." }],
});
for await (const event of stream) {
if (event.type === "content_block_delta" && event.delta.type === "text_delta") {
process.stdout.write(event.delta.text);
}
}
const final = await stream.finalMessage();
console.log("--", final.usage); 原生 fetch(浏览器、edge runtime)
tsconst r = await fetch("https://api.oneprovider.dev/v1/messages", {
method: "POST",
headers: {
"x-api-key": KEY,
"anthropic-version": "2023-06-01",
"content-type": "application/json",
},
body: JSON.stringify({
model: "claude-sonnet-5-5",
max_tokens: 1024,
stream: true,
messages: [{ role: "user", content: "stream me a poem" }],
}),
});
const reader = r.body!.pipeThrough(new TextDecoderStream()).getReader();
while (true) {
const { value, done } = await reader.read();
if (done) break;
process.stdout.write(value);
} 无缓冲 事件在模型产生后会立即送达您的客户端。任何请求(包括流式请求)最长为 10 分钟;详见错误码 。 快速解答
该使用哪个 base URL?
Claude Code 和 Anthropic SDK 使用 https://api.oneprovider.dev。OpenAI SDK 和兼容 OpenAI 的客户端使用 https://api.oneprovider.dev/v1。同一个密钥可用于这两个地址;模型列表见模型页面 ,费率见价格页面 。
如何进行身份验证?
将完整的 sk-… 密钥放在 x-api-key 或 Authorization: Bearer 中,二选一,不要同时使用。请把密钥存放在环境变量中,不要写进会被提交的文件。了解更多身份验证说明 。
在哪里获取密钥?
在 Telegram 机器人 @oneprovider_robot 或 app.oneprovider.dev 打开您的个人中心,为余额充值,然后点击“签发密钥”。每个密钥都可以设置各自的消费限额。个人中心与 API 密钥 。
401、404 和 429 是什么意思?
401:密钥缺失、拼写有误或放错了请求头;请粘贴完整的密钥,不要带引号或空格。404:通常是 base URL 不对,例如缺少或重复了 /v1。429 且提示“Insufficient balance”:个人中心余额或密钥的消费限额已用完,请充值,不要反复重试;其他 429 属于速率限制,请等待 Retry-After 指定的时间。详情见:错误码 和故障排查 。
流式输出为什么会中断或被重置?
VPN 和 VLESS 代理常常会缓冲 SSE,或破坏 HTTP/2 协商。OneProvider 没有地区限制,也不会缓冲流式输出,请关闭代理后重试。
以上都没解决,该去哪里咨询?
请在 Telegram 联系 @Oneproviderhelpbot ,或在网页个人中心打开“客服”,并附上 HTTP 状态码和完整的错误信息。客服如何运作 。
最后更新: 2026-11-08 发现问题? @Oneproviderhelpbot