Claude API Examples
本页面提供Agentsflare Claude API的使用示例,帮助您快速集成和使用Claude AI服务。
基础配置
在开始使用API之前,请确保您已经获取了API Key。如果还没有,请参考创建API Key。
基础信息
- API Base URL:
https://api.agentsflare.com/anthropic/v1/messages - 认证方式: API Key(
x-api-key请求头) - 内容类型:
application/json
请求示例
curl --location --request POST 'https://api.agentsflare.com/anthropic/v1/messages' \
--header 'Content-Type: application/json' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'anthropic-version: 2023-06-01' \
--data-raw '{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "你好,请介绍一下你自己"
}
]
}'import anthropic
client = anthropic.Anthropic(
api_key="YOUR_API_KEY",
base_url="https://api.agentsflare.com/anthropic"
)
message = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "你好,请介绍一下你自己"
}
]
)
print(message.content[0].text)import anthropic
client = anthropic.Anthropic(
api_key="YOUR_API_KEY",
base_url="https://api.agentsflare.com/anthropic"
)
message = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "你好,请介绍一下你自己"
}
],
stream=True
)
for event in message:
if event.type == "content_block_delta":
delta = event.delta
if delta.type == "text_delta":
print(delta.text, end="", flush=True)import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: process.env.AGENTSFLARE_API_KEY,
baseURL: "https://api.agentsflare.com/anthropic"
});
async function main() {
try {
const message = await client.messages.create({
model: "claude-sonnet-5",
max_tokens: 1024,
messages: [
{
role: "user",
content: "你好,请介绍一下你自己"
}
]
});
console.log(message.content[0].text);
} catch (err) {
console.error(err?.response?.data ?? err);
}
}
main();import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: process.env.AGENTSFLARE_API_KEY,
baseURL: "https://api.agentsflare.com/anthropic"
});
async function main() {
try {
const stream = await client.messages.create({
model: "claude-sonnet-5",
max_tokens: 1024,
messages: [
{
role: "user",
content: "你好,请介绍一下你自己"
}
],
stream: true
});
for await (const event of stream) {
if (event.type === 'content_block_delta') {
if (event.delta.type === 'text_delta') {
process.stdout.write(event.delta.text);
}
}
}
} catch (err) {
console.error(err?.response?.data ?? err);
}
}
main();const Anthropic = require("@anthropic-ai/sdk");
const client = new Anthropic({
apiKey: process.env.AGENTSFLARE_API_KEY,
baseURL: "https://api.agentsflare.com/anthropic"
});
async function main() {
try {
const message = await client.messages.create({
model: "claude-sonnet-5",
max_tokens: 1024,
messages: [
{
role: "user",
content: "你好,请介绍一下你自己"
}
]
});
console.log(message.content[0].text);
} catch (err) {
console.error(err?.response?.data ?? err);
}
}
main();package main
import (
"context"
"fmt"
"log"
"os"
"github.com/anthropics/anthropic-sdk-go"
"github.com/anthropics/anthropic-sdk-go/option"
)
func main() {
apiKey := os.Getenv("AGENTSFLARE_API_KEY")
if apiKey == "" {
log.Fatal("missing env AGENTSFLARE_API_KEY")
}
client := anthropic.NewClient(
option.WithAPIKey(apiKey),
option.WithBaseURL("https://api.agentsflare.com/anthropic"),
)
ctx := context.Background()
message, err := client.Messages.New(ctx, anthropic.MessageNewParams{
Model: anthropic.F("claude-sonnet-5"),
MaxTokens: anthropic.F(int64(1024)),
Messages: anthropic.F([]anthropic.MessageParam{
anthropic.NewUserMessage(anthropic.NewTextBlock("你好,请介绍一下你自己")),
}),
})
if err != nil {
log.Fatalf("message creation failed: %v", err)
}
fmt.Println(message.Content[0].Text)
}响应示例
非流式响应
{
"id": "msg_01XFDUDYJgAACzvnptvVoYEL",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "你好!我是Claude,是由Anthropic开发的AI助手。我的特点是能够进行深入、细致的对话,帮助用户解决各种问题。我可以协助你完成写作、分析、编程、学习等多种任务。有什么我可以帮助你的吗?"
}
],
"model": "claude-sonnet-5",
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 15,
"output_tokens": 89
}
}流式响应
event: message_start
data: {"type":"message_start","message":{"id":"msg_123","type":"message","role":"assistant","content":[],"model":"claude-sonnet-5","stop_reason":null,"usage":{"input_tokens":15,"output_tokens":0}}}
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"你好"}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"!"}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":89}}
event: message_stop
data: {"type":"message_stop"}请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | 是 | 模型名称,如 claude-sonnet-5 |
| messages | array | 是 | 消息数组,包含 role 和 content |
| max_tokens | integer | 是 | 最大生成token数 |
| stream | boolean | 否 | 是否启用流式响应,默认为false |
| system | string | 否 | 系统提示词 |
注意:Claude Opus 4.7 及更新模型系列对
temperature、top_p、top_k的非默认值可能返回 HTTP 400。除非目标模型明确支持,否则请省略这些参数。
特性说明
流式输出
Claude API 支持流式输出(SSE),通过设置 stream: true 启用。流式响应可以实时获取生成内容,提供更好的用户体验。
系统提示词
Claude 支持通过 system 参数设置系统级提示词,用于定义助手的角色和行为。
结构化输出
需要 Claude 返回符合 JSON Schema 的有效 JSON 时,请使用 output_config.format。format 必须是包含 type: "json_schema" 和嵌套 schema 的对象,不能直接写成字符串 "json"。
curl -s https://api.agentsflare.com/anthropic/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "请返回摘要和关键点。"}
],
"output_config": {
"format": {
"type": "json_schema",
"schema": {
"type": "object",
"properties": {
"summary": {"type": "string"},
"key_points": {"type": "array", "items": {"type": "string"}}
},
"required": ["summary", "key_points"],
"additionalProperties": false
}
}
}
}'多轮对话
在 messages 数组中携带之前的用户与助手消息:
messages = [
{"role": "user", "content": "什么是机器学习?"},
{"role": "assistant", "content": "机器学习是人工智能的一个分支……"},
{"role": "user", "content": "它有哪些应用?"},
]
message = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=messages,
)Claude 4.7+ 迁移与高级特性
从较早版本升级时,尤其是从 Opus 4.6 迁移到 Opus 4.7 或更新模型,请注意以下兼容性变化。
| 变化 | 兼容性影响 | 建议做法 |
|---|---|---|
| 采样参数 | 更新模型系列对非默认 temperature、top_p、top_k 可能返回 HTTP 400 | 除非目标模型明确支持,否则省略这些字段 |
| Thinking 模式 | Claude 4.6 已弃用 thinking.type: "enabled",Claude 4.7+ 会直接拒绝 | 改用 thinking.type: "adaptive",通过 output_config.effort 控制推理深度 |
| Assistant prefill | 从 Claude 4.6 系列开始,不再支持以最后一条 assistant 消息预填回答 | 将约束放入 system,需要固定 JSON 结构时使用结构化输出 |
| Thinking 可见性 | Thinking 文本默认省略 | 需要可读思考摘要时设置 display: "summarized" |
Adaptive Thinking 示例
curl -s https://api.agentsflare.com/anthropic/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-opus-4-7",
"max_tokens": 16000,
"messages": [
{"role": "user", "content": "分析这个架构方案的取舍。"}
],
"thinking": {
"type": "adaptive",
"display": "summarized"
},
"output_config": {
"effort": "high"
}
}'OpenAI SDK 兼容接口
通过 OpenAI 兼容的 /v1 接口调用 Claude 时,请把 thinking 与 output_config 放入 extra_body。完整示例见 Claude Reasoning。
Prompt Caching(提示缓存)
Claude API 支持 Prompt Caching 功能,允许缓存 system 或 messages 中的大段上下文(如项目规范、参考文档等),后续请求可复用缓存内容,显著降低 token 消耗和响应延迟。
使用限制
| 项目 | 限制 |
|---|---|
| Claude Fable 5.1 / Opus 5 / Fable 5 / Mythos 5 | 512 tokens |
| Claude Opus 4.7 | 2,048 tokens |
| Claude Opus 4.6 / Opus 4.5 / Haiku 4.5 | 4,096 tokens |
| Claude Opus 4.8 / Sonnet 5 / Sonnet 4.6 / Sonnet 4.5 | 1,024 tokens |
| 默认缓存有效期 | 300 秒(5 分钟);仅支持的模型/通道可使用 1 小时 TTL |
短于对应模型最低要求的提示词仍会正常处理,但不会写入缓存,也不会返回错误。
使用方式
在 system 中使用数组格式,对需要缓存的内容块添加 cache_control 字段。
建议
将稳定内容放在缓存断点之前,把时间戳、随机值和每次请求变化的内容放在断点之后。
curl -s https://api.agentsflare.com/anthropic/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"system": [
{
"type": "text",
"text": "[Project: project-alpha]\n\n这里放置需要缓存的大段上下文内容,例如项目规范、技术文档、代码标准等...",
"cache_control": {"type": "ephemeral"}
}
],
"messages": [
{
"role": "user",
"content": "基于上述规范,帮我review这段代码。"
}
]
}'响应示例
首次请求(创建缓存):
{
"usage": {
"input_tokens": 29,
"cache_creation_input_tokens": 2480,
"cache_read_input_tokens": 0,
"output_tokens": 655
}
}后续请求(命中缓存):
{
"usage": {
"input_tokens": 33,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 2480,
"output_tokens": 1024
}
}返回字段说明
| 字段 | 说明 |
|---|---|
cache_creation_input_tokens | 本次新创建缓存的 token 数。大于 0 表示缓存创建成功 |
cache_read_input_tokens | 本次从缓存读取的 token 数。大于 0 表示缓存命中成功 |
input_tokens | 未被缓存的常规输入 token 数(如 messages 中的用户消息) |
缓存命中规则与排查
- 缓存按前缀匹配;断点前任意字节变化都会使该断点及其后的缓存失效。
- 缓存层级按
tools→system→messages排列;修改工具列表或切换模型会使对应前缀失效。 - 每个请求最多可设置 4 个显式缓存断点。
- 避免在断点前加入时间戳、随机 ID、键顺序不稳定的 JSON 或其他动态内容。
- 应通过
usage.cache_creation_input_tokens和usage.cache_read_input_tokens判断缓存是否创建或命中;两者均为0时,通常是未达到模型最低长度、前缀发生变化或缓存已过期。
注意事项
- API Key 安全:请勿在代码中硬编码 API Key,建议使用环境变量
- 请求频率:请遵守 API 调用频率限制
- 错误处理:建议实现完善的错误处理机制
- Token 限制:注意不同模型的上下文窗口限制
相关链接
支持的模型
以下模型可通过本接口调用(按推荐程度排序):
claude-fable-5-1Newclaude-opus-5Newclaude-mythos-5claude-fable-5claude-opus-4-8claude-opus-4-7claude-opus-4-6claude-opus-4-5-20251101claude-opus-4-1-20250805已下线claude-sonnet-5claude-sonnet-4-6claude-sonnet-4-5-20250929claude-haiku-4-5-20251001claude-sonnet-4-20250514已下线claude-opus-4-20250514已下线claude-3-haiku-20240307已下线
💡 提示
请求示例中的 model 字段可替换为上方任意模型名称。
