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
  • 认证方式: Bearer Token
  • 内容类型: 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-4-5-20250929",
    "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-4-5-20250929",
    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-4-5-20250929",
    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-4-5-20250929",
      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-4-5-20250929",
      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-4-5-20250929",
      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-4-5-20250929"),
		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-4-5-20250929",
  "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-4-5-20250929","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-4-5-20250929
messagesarray消息数组,包含 role 和 content
max_tokensinteger最大生成token数
streamboolean是否启用流式响应,默认为false
temperaturefloat采样温度,范围0-1,默认为1
top_pfloat核采样参数,默认为1
top_kintegerTop-k采样参数
systemstring系统提示词

特性说明

流式输出

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

系统提示词

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

格式化输出

如果您需要 Claude 按特定结构或格式输出(例如 JSON、表格或自定义 schema),请使用参数 output_config 来配置输出格式。注意:支持的参数名是 output_config,不是 output_format

示例(cURL):

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-4-5-20250929",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "请以 JSON 格式返回摘要和关键点。"}
    ],
    "output_config": {
      "format": "json",
      "json_schema": {
        "type": "object",
        "properties": {
          "summary": {"type": "string"},
          "key_points": {"type": "array", "items": {"type": "string"}}
        },
        "required": ["summary", "key_points"]
      }
    }
  }'

以上示例向模型明确要求返回 JSON 且遵循提供的 json_schema。在 SDK 或客户端中同样传递 output_config 字段以控制输出格式。

Prompt Caching(提示缓存)

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

使用限制

项目限制
最小缓存 token 数1024 tokens(缓存内容不足 1024 tokens 不会被缓存)
单次缓存有效期300 秒(5 分钟),每次被命中后自动刷新过期时间

使用方式

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

建议

在缓存的 text 开头添加项目名称标识(如 [Project: project-alpha]),可以有效实现不同项目之间的缓存资源隔离,避免缓存内容混用。

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-4-5-20250929",
    "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 中的用户消息)

注意事项

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

相关链接

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