Claude API 快速开始
本指南帮助你在 5 分钟内完成 Claude API 的第一次调用。
如果你第一次接入 Claude API,把目标设为“先跑通,再规范”。
先点亮第一盏灯,再升级配电系统,比一上来追求完美架构更稳。
准备工作
1. 获取 API Key
- 访问 Anthropic Console
- 注册或登录账号
- 进入 API Keys 页面
- 点击 "Create Key"
- 复制并安全保存
⚠️ 重要:API Key 只显示一次,请立即保存!
读者任务目标
- 目标 1:完成一次成功调用并拿到文本输出
- 目标 2:掌握
system+messages的基础组织方式 - 目标 3:建立最小错误处理和费用观察能力
2. 设置环境变量
# macOS / Linux
export ANTHROPIC_API_KEY="sk-ant-..."
# Windows PowerShell
$env:ANTHROPIC_API_KEY="sk-ant-..."
# 或在 .env 文件中
ANTHROPIC_API_KEY=sk-ant-...
Python 快速开始
安装
pip install anthropic
第一次调用
import anthropic
client = anthropic.Anthropic() # 自动读取环境变量
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[
{"role": "user", "content": "用一句话介绍 Claude"}
]
)
print(message.content[0].text)
运行结果
Claude 是 Anthropic 开发的 AI 助手,以安全、有帮助和诚实为核心设计理念。
Node.js 快速开始
安装
npm install @anthropic-ai/sdk
第一次调用
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic(); // 自动读取环境变量
async function main() {
const message = await client.messages.create({
model: 'claude-sonnet-4-20250514',
max_tokens: 1024,
messages: [
{ role: 'user', content: '用一句话介绍 Claude' }
]
});
console.log(message.content[0].text);
}
main();
使用 curl
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-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "用一句话介绍 Claude"}
]
}'
核心概念
Messages 结构
messages = [
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好!有什么我可以帮助你的?"},
{"role": "user", "content": "介绍一下你自己"}
]
# 使用 system 参数设置系统提示
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
system="你是一个专业的 Python 程序员",
messages=messages
)
角色说明
| 角色 | 作用 |
|---|---|
| user | 用户的输入 |
| assistant | AI 的回复(多轮对话时需要包含) |
| system | 通过 system 参数设置 |
常用参数
message = client.messages.create(
model="claude-sonnet-4-20250514", # 模型
max_tokens=1024, # 必需:最大输出 token
system="系统提示", # 可选:系统指令
messages=[...], # 必需:对话消息
temperature=0.7, # 可选:创造性 (0-1)
top_p=0.9, # 可选:采样参数
stop_sequences=["END"] # 可选:停止词
)
temperature 参数
0.0 - 最确定,适合代码/分析
0.5 - 平衡
1.0 - 最有创意
一个好记类比:
temperature 像“开会时允许自由发挥的比例”。
越低越像按流程办事,越高越像头脑风暴。
模型选择
推荐模型
| 模型 | 特点 | 价格 |
|---|---|---|
| claude-sonnet-4-20250514 | 最强综合性能 | 中等 |
| claude-3-opus-20240229 | 最强推理 | 最高 |
| claude-3-5-haiku-20241022 | 最快最便宜 | 最低 |
模型 ID
# 推荐日常使用
model = "claude-sonnet-4-20250514"
# 复杂推理任务
model = "claude-3-opus-20240229"
# 预算敏感/高并发
model = "claude-3-5-haiku-20241022"
完整示例
简单问答
import anthropic
client = anthropic.Anthropic()
def ask(question: str) -> str:
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[
{"role": "user", "content": question}
]
)
return message.content[0].text
# 使用
answer = ask("Python 和 JavaScript 的主要区别是什么?")
print(answer)
带系统提示
def ask_expert(question: str, expertise: str) -> str:
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
system=f"你是一位{expertise}专家,用简洁专业的语言回答问题。",
messages=[
{"role": "user", "content": question}
]
)
return message.content[0].text
# 使用
answer = ask_expert(
"如何优化 React 应用性能?",
"前端开发"
)
多轮对话
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 不同。