📌 内容摘要
- 零基础也能看懂:从注册账号到跑通第一行代码,每一步都有截图说明和解释。
- 覆盖 Python 和 Node.js 两种语言,选你熟悉的那个,不熟悉的也有解释。
- 不只是”Hello World”——教程结束后你能做到:多轮对话、流式输出、设置角色,三个真实可用的功能。
- 附新手最常遇到的5个报错和解决方法,遇到问题不用到处搜索。
一、你需要准备什么
开始之前先确认你有这些:
- 一张境外信用卡(Visa 或 Mastercard)——注册 Anthropic 账号需要,充值最低 $5
- Python 3.8+ 或 Node.js 18+——选一个你熟悉的即可
- 能访问 anthropic.com 的网络环境——国内需要科学上网
- 一个代码编辑器——VS Code 或任何你习惯的工具
API 调用按 token 计费,不是包月制。初学练手的费用极低——本文所有示例代码跑完大概花不到 $0.01。充值 $5 可以练习几个月。账号余额不够时 API 调用会报错,记得查看余额。
二、第一步:注册账号和获取 API Key
注册 Anthropic 账号
访问 console.anthropic.com,点击 Sign Up,用邮箱注册。注册完成后会进入 Anthropic Console 控制台——这是管理你的 API Key 和查看用量的地方,和 claude.ai 聊天界面是两个不同的网站。
充值
在控制台左侧找到 Billing(账单),点击 Add credits,用信用卡充值最少 $5。充值后才能使用 API(新账号有少量免费额度,但很快用完)。
创建 API Key
在控制台左侧找到 API Keys,点击 Create Key,给这个 Key 取个名字(比如”学习用”),点击确认。
API Key 创建后只在这一刻完整显示,关闭窗口后再也看不到完整内容。请立刻复制并保存到安全的地方(比如密码管理器)。如果忘了保存,只能删掉重新创建。
你的 API Key 格式大概是这样:sk-ant-api03-xxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxx
三、第二步:安装 SDK
Python 版本
# 在终端(命令行)运行这一行 pip install anthropic # 验证安装成功 python -c "import anthropic; print(anthropic.__version__)" # 正常会输出版本号,如:0.40.0
Node.js 版本
# 在终端运行
npm install @anthropic-ai/sdk
# 验证安装成功
node -e "const a = require('@anthropic-ai/sdk'); console.log('安装成功')"
四、第三步:设置 API Key
不要把 API Key 直接写在代码里——万一你把代码上传到 GitHub,Key 就泄漏了,别人能用你的额度。正确做法是用环境变量:
Mac / Linux
# 在终端运行(替换成你的真实 Key) export ANTHROPIC_API_KEY="sk-ant-api03-你的key" # 验证设置成功 echo $ANTHROPIC_API_KEY
Windows(PowerShell)
$env:ANTHROPIC_API_KEY = "sk-ant-api03-你的key" # 验证 echo $env:ANTHROPIC_API_KEY
export 设置的环境变量只在当前终端窗口有效,关掉终端就失效了。如果不想每次重新设置,可以把这行命令加到 ~/.zshrc 或 ~/.bashrc 文件里。或者用 python-dotenv 库从 .env 文件读取(后面会讲)。
五、第四步:发出第一个请求
创建一个新文件,复制以下代码,运行试试:
Python 版本(hello.py)
import anthropic
# 创建客户端(自动读取 ANTHROPIC_API_KEY 环境变量)
client = anthropic.Anthropic()
# 发出请求
message = client.messages.create(
model = "claude-haiku-4-5-20251001", # 使用最便宜的模型练习
max_tokens = 256, # 最多生成 256 个 token
messages = [
{
"role": "user",
"content": "你好!请用一句话介绍你自己。"
}
]
)
# 打印回复
print(message.content[0].text)
# 顺便看看这次花了多少 token
print(f"\n--- 用量统计 ---")
print(f"输入:{message.usage.input_tokens} tokens")
print(f"输出:{message.usage.output_tokens} tokens")
# 运行 python hello.py # 正常输出类似: # 我是 Claude,Anthropic 开发的 AI 助手,很高兴认识你! # # --- 用量统计 --- # 输入:18 tokens # 输出:22 tokens
Node.js 版本(hello.js)
const Anthropic = require("@anthropic-ai/sdk");
const client = new Anthropic(); // 自动读取 ANTHROPIC_API_KEY 环境变量
async function main() {
const message = await client.messages.create({
model: "claude-haiku-4-5-20251001",
max_tokens: 256,
messages: [
{
role: "user",
content: "你好!请用一句话介绍你自己。"
}
]
});
console.log(message.content[0].text);
console.log(`\n输入:${message.usage.input_tokens} tokens`);
console.log(`输出:${message.usage.output_tokens} tokens`);
}
main();
node hello.js
如果看到 Claude 的回复,恭喜——你已经成功调用 Claude API 了!
六、理解代码里的关键参数
刚才的代码里有几个参数需要理解,之后写代码时会频繁用到:
| 参数 | 含义 | 新手建议 |
|---|---|---|
model |
使用哪个模型 | 练习用 Haiku(最便宜),正式项目用 Sonnet |
max_tokens |
回复最多多少 token(必填!) | 聊天用 1024,长文章用 4096 |
messages |
对话历史列表 | role 只能是 “user” 或 “assistant” |
system(可选) |
给 Claude 设定角色和规则 | 不放在 messages 里,是独立参数 |
模型选哪个?
| 模型 | model string | 适合场景 | 价格 |
|---|---|---|---|
| Haiku 4.5 | claude-haiku-4-5-20251001 |
练习、分类、简单问答 | 最便宜 |
| Sonnet 4.6 | claude-sonnet-4-6 |
日常开发首选,性价比最高 | 中等 |
| Opus 4.6 | claude-opus-4-6 |
复杂推理、高质量要求 | 最贵 |
七、进阶:三个真实可用的功能
功能一:设置角色(system prompt)
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model = "claude-haiku-4-5-20251001",
max_tokens = 512,
system = "你是一名专业的中文写作助手,擅长把复杂的内容改写得简洁易懂。回答时只使用中文。",
messages = [
{
"role": "user",
"content": "帮我用简单的语言解释什么是 API"
}
]
)
print(response.content[0].text)
功能二:多轮对话
import anthropic
client = anthropic.Anthropic()
# 对话历史:每次都把完整历史传进去
# Claude API 本身不记忆,你需要自己维护历史列表
conversation = []
def chat(user_message: str) -> str:
# 把用户消息加入历史
conversation.append({
"role": "user",
"content": user_message
})
# 带历史发送请求
response = client.messages.create(
model = "claude-haiku-4-5-20251001",
max_tokens = 1024,
system = "你是一个友善的聊天助手。",
messages = conversation, # 传入完整历史
)
# 把 Claude 的回复也加入历史(下次发送时带上)
assistant_reply = response.content[0].text
conversation.append({
"role": "assistant",
"content": assistant_reply
})
return assistant_reply
# 测试多轮对话
print("Claude:", chat("我叫小明,我今年25岁"))
print("Claude:", chat("你还记得我叫什么名字吗?")) # Claude 会记得"小明"
print("Claude:", chat("我多少岁了?")) # Claude 会记得"25岁"
功能三:流式输出(逐字显示)
import anthropic
client = anthropic.Anthropic()
print("Claude 的回复:", end="", flush=True)
# 使用 stream 方法,回复会逐字打印
with client.messages.stream(
model = "claude-haiku-4-5-20251001",
max_tokens = 512,
messages = [{"role": "user", "content": "给我讲一个关于程序员的笑话"}]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True) # end="" 不换行,flush=True 立即显示
print() # 最后换行
八、用 .env 文件管理 API Key(推荐)
比每次设置环境变量更方便的方式是用 .env 文件:
pip install python-dotenv
# 在项目根目录创建 .env 文件,写入: ANTHROPIC_API_KEY=sk-ant-api03-你的key # ⚠️ 重要:把 .env 加入 .gitignore,防止上传到 GitHub echo ".env" >> .gitignore
from dotenv import load_dotenv import anthropic load_dotenv() # 自动读取 .env 文件 client = anthropic.Anthropic() # 此时 API_KEY 已经加载好了 # 后续代码和之前一样...
九、新手最常遇到的5个报错
报错一:AuthenticationError: Invalid API Key
原因:API Key 写错了,或者环境变量没有正确设置。
解决:打印 os.environ.get("ANTHROPIC_API_KEY"),确认 Key 存在且格式正确(以 sk-ant- 开头)。
报错二:BadRequestError: max_tokens: field required
原因:漏掉了 max_tokens 参数——这个参数 Claude 必须传,OpenAI 可以不传。
解决:在 messages.create() 里加上 max_tokens=1024(或其他值)。
报错三:BadRequestError: Invalid role 'system' in messages
原因:把 system prompt 放进了 messages 列表里。
解决:system 是独立的参数,不在 messages 里。正确写法:client.messages.create(system="...", messages=[...])
报错四:RateLimitError: 429
原因:短时间内发送了太多请求,超过了速率限制。
解决:等几秒再试。练习时不用频繁发请求,写好代码再运行。
报错五:ModuleNotFoundError: No module named 'anthropic'
原因:SDK 没有安装,或者安装在了不同的 Python 环境里。
解决:确认运行 pip install anthropic 时用的是你现在正在用的 Python 环境。如果用了虚拟环境(venv),先激活虚拟环境再安装。
十、下一步学什么
跑通了第一个请求之后,可以按以下方向继续深入:
- Tool Use(工具调用):让 Claude 调用你写的函数,实现真正的 Agent——参考本系列”Tool Use 多工具调用”文章
- Prompt 优化:学会写出稳定、高质量输出的 Prompt——参考”Prompt Engineering 完整指南”
- 接入 Web 应用:把 API 调用嵌入 FastAPI 或 Express 后端——参考”Claude 与 FastAPI 集成”文章
- 控制成本:了解 token 计费逻辑,学会用 Batch API 打折——参考”Claude API 计费逻辑全解析”
完整的入门代码汇总
# quickstart.py —— 把本文所有示例汇总在一个文件里
from dotenv import load_dotenv
import anthropic
load_dotenv()
client = anthropic.Anthropic()
print("=" * 40)
print("示例1:基础调用")
print("=" * 40)
msg = client.messages.create(
model = "claude-haiku-4-5-20251001",
max_tokens = 128,
messages = [{"role": "user", "content": "用一句话说你好"}]
)
print(msg.content[0].text)
print("\n" + "=" * 40)
print("示例2:设置角色")
print("=" * 40)
msg = client.messages.create(
model = "claude-haiku-4-5-20251001",
max_tokens = 256,
system = "你是一个用古文回答问题的学者,每句话都要用文言文。",
messages = [{"role": "user", "content": "今天天气真好"}]
)
print(msg.content[0].text)
print("\n" + "=" * 40)
print("示例3:多轮对话")
print("=" * 40)
history = []
for question in ["我叫张三", "我刚才说我叫什么?"]:
history.append({"role": "user", "content": question})
resp = client.messages.create(
model = "claude-haiku-4-5-20251001",
max_tokens = 128,
messages = history,
)
reply = resp.content[0].text
history.append({"role": "assistant", "content": reply})
print(f"用户:{question}")
print(f"Claude:{reply}\n")
print("=" * 40)
print("示例4:流式输出")
print("=" * 40)
print("Claude:", end="", flush=True)
with client.messages.stream(
model = "claude-haiku-4-5-20251001",
max_tokens = 128,
messages = [{"role": "user", "content": "数到5"}]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
print()