Claude API 是 Anthropic 提供的 RESTful 接口,让你在自己的应用中集成 Claude 的智能能力。本文从注册账号到发出第一个 API 调用,全程图文教学。
准备工作
- 注册 Anthropic Console 账号
- 在 Account Settings → API Keys 创建 API Key
- 充值信用额度(新账号赠送部分免费额度)
保管好你的 API Key,不要提交到 Git 仓库!
核心 API 接口
| 接口 | 用途 | 状态 |
|---|---|---|
POST /v1/messages | 发送消息,获取回复 | GA |
POST /v1/messages/batches | 批量处理(省 50% 费用) | GA |
POST /v1/messages/count_tokens | 提前估算 Token 数 | GA |
GET /v1/models | 列出可用模型 | GA |
POST /v1/files | 上传文件跨调用复用 | Beta |
所有请求都发往 https://api.anthropic.com。
必要请求头
http
x-api-key: sk-ant-xxxxx
anthropic-version: 2023-06-01
content-type: application/jsonPython 快速上手
安装 SDK
bash
pip install anthropic第一个调用
python
import anthropic
client = anthropic.Anthropic(api_key="sk-ant-xxxxx")
message = client.messages.create(
model="claude-opus-4-5",
max_tokens=1024,
messages=[
{"role": "user", "content": "用 Python 写一个冒泡排序"}
]
)
print(message.content[0].text)推荐用环境变量存 API Key:
export ANTHROPIC_API_KEY=sk-ant-xxxxx,SDK 会自动读取。
多轮对话
python
messages = [
{"role": "user", "content": "我在学 Python,能教我吗?"},
{"role": "assistant", "content": "当然!你目前到哪个阶段了?"},
{"role": "user", "content": "我刚学完基础语法,想学数据处理"}
]
response = client.messages.create(
model="claude-opus-4-5",
max_tokens=2048,
messages=messages
)
print(response.content[0].text)流式输出(Streaming)
python
with client.messages.stream(
model="claude-opus-4-5",
max_tokens=1024,
messages=[{"role": "user", "content": "写一首关于编程的诗"}]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)System Prompt 设置
python
response = client.messages.create(
model="claude-opus-4-5",
max_tokens=1024,
system="你是一个专业的 Python 导师,回答时给出可运行的代码示例",
messages=[{"role": "user", "content": "如何读取 CSV 文件?"}]
)Node.js / TypeScript 快速上手
安装
bash
npm install @anthropic-ai/sdk基础调用
typescript
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });
const message = await client.messages.create({
model: "claude-opus-4-5",
max_tokens: 1024,
messages: [{ role: "user", content: "解释什么是 async/await" }],
});
console.log(message.content[0].text);流式输出
typescript
const stream = await client.messages.stream({
model: "claude-opus-4-5",
max_tokens: 1024,
messages: [{ role: "user", content: "写一个 React 组件" }],
});
for await (const chunk of stream) {
if (chunk.type === "content_block_delta" && chunk.delta.type === "text_delta") {
process.stdout.write(chunk.delta.text);
}
}直接调用 REST API(不用 SDK)
bash
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" -d '{
"model": "claude-opus-4-5",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, Claude!"}
]
}'常用模型选择
| 模型 | 特点 | 适用场景 |
|---|---|---|
| claude-opus-4-5 | 最强推理能力 | 复杂分析、代码生成 |
| claude-sonnet-4-5 | 速度与质量均衡 | 日常开发首选 |
| claude-haiku-3-5 | 最快、最便宜 | 简单任务、高并发 |
成本控制
提前统计 Token
python
response = client.messages.count_tokens(
model="claude-opus-4-5",
messages=[{"role": "user", "content": "你的问题..."}]
)
print(f"预计消耗: {response.input_tokens} tokens")批量请求省 50%
python
# 批量 API:异步处理大量请求,费用减半
batch = client.messages.batches.create(
requests=[
{"custom_id": "req-1", "params": {"model": "claude-haiku-3-5", "max_tokens": 100, "messages": [...]}},
{"custom_id": "req-2", "params": {"model": "claude-haiku-3-5", "max_tokens": 100, "messages": [...]}},
]
)限速策略
新账号默认限速较低,随使用量自动升级。可在 Console 查看当前档位限制。
错误处理
python
import anthropic
client = anthropic.Anthropic()
try:
response = client.messages.create(
model="claude-opus-4-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}]
)
except anthropic.RateLimitError:
print("超出限速,稍后重试")
except anthropic.AuthenticationError:
print("API Key 无效")
except anthropic.APIError as e:
print(f"API 错误: {e.status_code} - {e.message}")三种接入方式对比
| 方式 | 优势 | 适用场景 |
|---|---|---|
| 直接 API | 第一手功能,最新模型 | 新项目首选 |
| AWS Bedrock | 整合 AWS 账单和 IAM | 已有 AWS 基础设施 |
| Google Vertex AI | 整合 GCP 账单 | 已有 GCP 基础设施 |
来源:Anthropic API 文档 | Anthropic 官方