Claude API 快速开始
这页我按 Anthropic 官方 Get started 和 API overview 重新核过了。当前最基础的起手式仍然是:拿到 ANTHROPIC_API_KEY,然后直接用 Messages API 发一个最小请求。
准备工作
1. 获取 API Key
- 打开 Anthropic Console
- 创建账号或登录
- 在设置里生成 API key
- 立即保存
2. 设置环境变量
# macOS / Linux
export ANTHROPIC_API_KEY="sk-ant-..."
# Windows PowerShell
$env:ANTHROPIC_API_KEY="sk-ant-..."
3. 第一次请求
Python
Anthropic 官方 API overview 当前的 Python 最小示例是这样的:
from anthropic import Anthropic
client = Anthropic()
message = client.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello, Claude"}],
)
print(message.content[0].text)
curl
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data '{
"model": "claude-opus-4-6",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, Claude"}
]
}'
我这里直接按 Anthropic 官方 overview 页面给的示例模型名来写,没有继续沿用之前那批旧 snapshot。
先只掌握这几个点
第一次接入时,我建议只关心:
x-api-keyanthropic-versionmessagesmax_tokensmodel
先把请求打通,再去研究 tool use、streaming、batch 和 prompt caching。
官方参考
- API overview: https://platform.claude.com/docs/en/api/overview
class ChatBot:
def __init__(self, system_prompt: str = None):
self.client = anthropic.Anthropic()
self.system = system_prompt
self.messages = []
def chat(self, user_input: str) -> str:
self.messages.append({"role": "user", "content": user_input})
response = self.client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
system=self.system,
messages=self.messages
)
assistant_message = response.content[0].text
self.messages.append({"role": "assistant", "content": assistant_message})
return assistant_message
# 使用
bot = ChatBot("你是一个友好的编程助手")
print(bot.chat("你好"))
print(bot.chat("Python 怎么读文件?"))
print(bot.chat("那写文件呢?")) # 记住上下文
响应结构
message = client.messages.create(...)
# 响应对象
print(message.id) # 消息 ID
print(message.model) # 使用的模型
print(message.role) # "assistant"
print(message.content) # 内容列表
print(message.stop_reason) # 停止原因
# 获取文本内容
text = message.content[0].text
# Token 使用
print(message.usage.input_tokens)
print(message.usage.output_tokens)
错误处理
import anthropic
client = anthropic.Anthropic()
try:
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}]
)
except anthropic.AuthenticationError:
print("API Key 无效")
except anthropic.RateLimitError:
print("请求太频繁,请稍后重试")
except anthropic.APIStatusError as e:
print(f"API 错误: {e.status_code} - {e.message}")
费用监控
message = client.messages.create(...)
# Token 使用
usage = message.usage
print(f"输入 tokens: {usage.input_tokens}")
print(f"输出 tokens: {usage.output_tokens}")
# 估算费用 (以 claude-sonnet-4-20250514 为例)
# 输入: $3/M tokens, 输出: $15/M tokens
input_cost = usage.input_tokens * 3 / 1_000_000
output_cost = usage.output_tokens * 15 / 1_000_000
print(f"估算费用: ${input_cost + output_cost:.4f}")
与 OpenAI 的区别
| 特性 | Claude API | OpenAI API |
|---|---|---|
| 认证 | x-api-key header | Authorization: Bearer |
| 系统提示 | system 参数 | messages 中的 system 角色 |
| max_tokens | 必需参数 | 可选参数 |
| 函数调用 | Tool Use | Function Calling |
| 版本控制 | anthropic-version header | 无 |
新手常见误区
- 忘记
max_tokens(Claude 里是必需参数) - 把所有业务规则堆进一段超长 system,导致维护困难
- 没有保存请求样本,后续无法做回归对比
一句轻松提醒:
API 接入像开店,第一次开门很重要;
但真正决定能不能长期营业的,是你的流程、监控和复盘机制。
下一步
提示:Claude API 的
max_tokens是必需参数,与 OpenAI 不同。