推荐 endpoint
最小请求
{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"stream": true,
"messages": [
{
"role": "user",
"content": [{ "type": "text", "text": "边生成边解释 SSE 流式输出。" }]
}
]
}
cURL 示例
curl https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-N \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"stream": true,
"messages": [
{
"role": "user",
"content": [{ "type": "text", "text": "边生成边解释 SSE 流式输出。" }]
}
]
}'
Python 示例
from anthropic import Anthropic
client = Anthropic(api_key="<ANTHROPIC_API_KEY>")
with client.messages.stream(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [{"type": "text", "text": "边生成边解释 SSE 流式输出。"}],
}
],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
Node.js 示例
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
const stream = client.messages.stream({
model: "claude-sonnet-4-20250514",
max_tokens: 1024,
messages: [
{
role: "user",
content: [{ type: "text", text: "边生成边解释 SSE 流式输出。" }]
}
]
});
for await (const event of stream) {
if (event.type === "content_block_delta" && event.delta?.text) {
process.stdout.write(event.delta.text);
}
}
最佳实践
- Claude 流式返回的是事件流,不是一次性 JSON
- 消费流时保留 content block 边界,不要只拼纯文本
- 如果同时启用工具或 thinking,流处理层要兼容更多事件类型
