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 参数设置系统级提示词,用于定义助手的角色和行为。

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 协议。