Skip to content

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

请求示例

bash
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": "你好,请介绍一下你自己"
        }
    ]
}'
python
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)
python
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)
javascript
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();
javascript
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();
javascript
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();
go
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)
}

响应示例

非流式响应

json
{
  "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
  }
}

流式响应

json
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"}

请求参数

参数类型必填说明
modelstring模型名称,如 claude-sonnet-5
messagesarray消息数组,包含 role 和 content
max_tokensinteger最大生成token数
streamboolean是否启用流式响应,默认为false
systemstring系统提示词

注意:Claude Opus 4.7 及更新模型系列对 temperaturetop_ptop_k 的非默认值可能返回 HTTP 400。除非目标模型明确支持,否则请省略这些参数。

特性说明

流式输出

Claude API 支持流式输出(SSE),通过设置 stream: true 启用。流式响应可以实时获取生成内容,提供更好的用户体验。

系统提示词

Claude 支持通过 system 参数设置系统级提示词,用于定义助手的角色和行为。

结构化输出

需要 Claude 返回符合 JSON Schema 的有效 JSON 时,请使用 output_config.formatformat 必须是包含 type: "json_schema" 和嵌套 schema 的对象,不能直接写成字符串 "json"

bash
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 数组中携带之前的用户与助手消息:

python
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 或更新模型,请注意以下兼容性变化。

变化兼容性影响建议做法
采样参数更新模型系列对非默认 temperaturetop_ptop_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 示例

bash
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 时,请把 thinkingoutput_config 放入 extra_body。完整示例见 Claude Reasoning

Prompt Caching(提示缓存)

Claude API 支持 Prompt Caching 功能,允许缓存 systemmessages 中的大段上下文(如项目规范、参考文档等),后续请求可复用缓存内容,显著降低 token 消耗和响应延迟

使用限制

项目限制
Claude Fable 5.1 / Opus 5 / Fable 5 / Mythos 5512 tokens
Claude Opus 4.72,048 tokens
Claude Opus 4.6 / Opus 4.5 / Haiku 4.54,096 tokens
Claude Opus 4.8 / Sonnet 5 / Sonnet 4.6 / Sonnet 4.51,024 tokens
默认缓存有效期300 秒(5 分钟);仅支持的模型/通道可使用 1 小时 TTL

短于对应模型最低要求的提示词仍会正常处理,但不会写入缓存,也不会返回错误。

使用方式

system 中使用数组格式,对需要缓存的内容块添加 cache_control 字段。

建议

将稳定内容放在缓存断点之前,把时间戳、随机值和每次请求变化的内容放在断点之后。

bash
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这段代码。"
      }
    ]
  }'

响应示例

首次请求(创建缓存):

json
{
  "usage": {
    "input_tokens": 29,
    "cache_creation_input_tokens": 2480,  
    "cache_read_input_tokens": 0,         
    "output_tokens": 655
  }
}

后续请求(命中缓存):

json
{
  "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 中的用户消息)

缓存命中规则与排查

  • 缓存按前缀匹配;断点前任意字节变化都会使该断点及其后的缓存失效。
  • 缓存层级按 toolssystemmessages 排列;修改工具列表或切换模型会使对应前缀失效。
  • 每个请求最多可设置 4 个显式缓存断点
  • 避免在断点前加入时间戳、随机 ID、键顺序不稳定的 JSON 或其他动态内容。
  • 应通过 usage.cache_creation_input_tokensusage.cache_read_input_tokens 判断缓存是否创建或命中;两者均为 0 时,通常是未达到模型最低长度、前缀发生变化或缓存已过期。

注意事项

  1. API Key 安全:请勿在代码中硬编码 API Key,建议使用环境变量
  2. 请求频率:请遵守 API 调用频率限制
  3. 错误处理:建议实现完善的错误处理机制
  4. Token 限制:注意不同模型的上下文窗口限制

相关链接

支持的模型

以下模型可通过本接口调用(按推荐程度排序):

  • claude-fable-5-1 New
  • claude-opus-5 New
  • claude-mythos-5
  • claude-fable-5
  • claude-opus-4-8
  • claude-opus-4-7
  • claude-opus-4-6
  • claude-opus-4-5-20251101
  • claude-opus-4-1-20250805 已下线
  • claude-sonnet-5
  • claude-sonnet-4-6
  • claude-sonnet-4-5-20250929
  • claude-haiku-4-5-20251001
  • claude-sonnet-4-20250514 已下线
  • claude-opus-4-20250514 已下线
  • claude-3-haiku-20240307 已下线

💡 提示

请求示例中的 model 字段可替换为上方任意模型名称。

本文档遵循 CC BY-SA 4.0 协议。