Claude API 调用教程:Python 接入 Claude API 完整示例(含流式输出与 429 重试)
Claude API 怎么调用?这篇 Claude API 调用教程用 Python 从零演示:安装 anthropic SDK、配置 API Key 与 base_url、发送第一条消息、多轮对话、流式输出、Prompt 缓存,以及 429 限速重试和常见报错排查,国内开发者通过中转站也能 5 分钟跑通。
SupaStore 开发者体验组 ·

Claude API 调用只需要准备三样东西:一个 API Key、一个接口地址(base_url)和一个模型 ID。这篇 Claude API 调用教程用 Python 官方 SDK 从零开始,带你发出第一条消息,再依次加上多轮对话、流式输出、Prompt 缓存和 429 重试,每段代码都可以直接复制运行。
国内开发者如果还没有 Key,可以先看《Claude API 中转怎么用?国内 Claude Code 中转站配置教程》,通过中转站获取 Key 后,本文的代码只需要改一行 base_url。
调用 Claude API 前的准备
1. 获取 Claude API Key
Claude API Key 有两种获取方式:
- Anthropic 官方:在 Claude Console 注册开发者账号、预充值后创建
sk-ant-开头的 Key,需要支持地区的账号和外币信用卡。 - Claude API 中转站:以 SupaStore 为例,登录 控制台 →【令牌管理】→【添加令牌】,勾选可用的 Claude 模型并设置额度上限,复制
sk-开头的 Key。
两种方式的详细步骤和费用差别,见《Claude API 价格是多少?2026 Claude API 收费标准与省钱指南》。
2. 安装 Claude API Python SDK
建议使用 Python 3.10 及以上版本,安装 Anthropic 官方 SDK:
pip install -U anthropic
3. 用环境变量保存 API Key
不要把 Key 写死在代码里,放进环境变量:
# macOS / Linux
export ANTHROPIC_API_KEY="sk-your-api-key"
# Windows PowerShell
$env:ANTHROPIC_API_KEY="sk-your-api-key"
SDK 会自动读取 ANTHROPIC_API_KEY,代码里不用再传 Key。
第一个 Claude API 调用示例
直连 Anthropic 官方
import anthropic
client = anthropic.Anthropic() # 自动读取 ANTHROPIC_API_KEY
response = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=16000,
messages=[{"role": "user", "content": "用三句话解释什么是 Prompt 缓存"}],
)
for block in response.content:
if block.type == "text":
print(block.text)
print(response.usage)
response.content 是一个内容块列表,先判断 type == "text" 再取文字;response.usage 会返回本次请求的输入、输出和缓存 Token 数,用它就能算出这次 Claude API 调用花了多少钱。usage 各字段的含义见《AI Token 是什么?》。
通过中转站调用 Claude API
国内网络直连官方接口容易超时,改用中转站时只需要多传一个 base_url:
import anthropic
client = anthropic.Anthropic(
base_url="https://api.supastore.cc/v1", # 中转站接口地址,需带 /v1
)
SupaStore 的接口地址统一为 https://api.supastore.cc/v1,/v1 不能省略,末尾也不要多加 /(各类工具的填写规则见《Base URL 是什么?API Base URL 怎么填》)。之后的所有代码与直连官方完全一样,只是请求改为发往中转站。
用 cURL 快速验证 Key
在写代码之前,也可以先用 cURL 确认 Key 和模型可用:
curl https://api.supastore.cc/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-5-5",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "你好"}]
}'
返回 JSON 中有 content 和 usage 字段,就说明 Claude API 调用成功。
Claude API 常用参数说明
| 参数 | 作用 | 建议 |
|---|---|---|
model |
模型 ID | 日常用 claude-sonnet-5-5,难题用 claude-opus-5-5,高并发简单任务用 claude-haiku-5-5 |
max_tokens |
单次回复的输出上限 | 不要设得太小,否则回答会被截断;非流式请求建议 16000 左右 |
messages |
对话消息列表 | user 和 assistant 交替排列 |
system |
系统提示词 | 放角色设定和固定规则,适合配合 Prompt 缓存 |
output_config |
输出配置,其中 effort 控制思考强度 |
简单任务设 {"effort": "low"} 可以减少思考 Token |
注意,新一代 Claude 模型的思考按输出 Token 计费;Opus 5.5 的 effort 默认是 medium。各模型的 Claude API 价格见模型广场和《Claude API 价格是多少?》。
多轮对话:让 Claude 记住上下文
Claude API 本身不保存会话,多轮对话需要你把历史消息一起发过去:
history = []
def chat(user_text: str) -> str:
history.append({"role": "user", "content": user_text})
response = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=16000,
system="你是一名耐心的 Python 讲师,回答尽量简短并附代码。",
messages=history,
)
history.append({"role": "assistant", "content": response.content})
return "".join(b.text for b in response.content if b.type == "text")
print(chat("列表推导式怎么写?"))
print(chat("再给一个带条件过滤的例子"))
把 response.content 原样追加到历史里,而不是只存文字,这样思考块、工具调用等内容也能完整保留。对话越长,每次请求的输入 Token 越多,这也是 Claude Code 这类工具费 Token 的原因,详见《Claude Code Token 消耗太快?10 个 Claude Code 省 Token 技巧》。
Claude API 流式输出(Streaming)
聊天界面需要边生成边显示,长回答也容易触发 HTTP 超时,这两种情况都应该用流式输出:
with client.messages.stream(
model="claude-sonnet-5-5",
max_tokens=64000,
messages=[{"role": "user", "content": "写一篇 500 字的 Python 入门指南"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
final = stream.get_final_message()
print()
print(final.usage)
stream.text_stream 逐段返回文字,get_final_message() 在结束后拿到完整消息和 usage。max_tokens 很大时,SDK 会要求使用流式请求,以免连接超时。
用 Prompt 缓存降低 Claude API 调用成本
如果每次请求都带着相同的长系统提示词或文档,加上 cache_control 就能让重复部分按缓存价计费:
response = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=16000,
cache_control={"type": "ephemeral"}, # 自动缓存最后一个可缓存块
system=long_product_manual, # 很长且固定的内容
messages=[{"role": "user", "content": "退货政策是什么?"}],
)
print(response.usage.cache_creation_input_tokens) # 写入缓存的 Token
print(response.usage.cache_read_input_tokens) # 命中缓存的 Token
缓存写入比普通输入贵 25%,命中后 Sonnet 5.5 和 Opus 5.5 只收输入价的 5%,默认有效期 5 分钟。要注意三点:
- 缓存按前缀匹配,固定内容放最前面,每次变化的问题放最后;
- 系统提示词里不要放当前时间、请求 ID 这类每次都变的内容;
- 前缀太短不会被缓存,连续几次请求
cache_read_input_tokens都是 0,就要检查前缀是否被改动。
手动断点、1 小时 TTL 和缓存命中率排查的完整方法,见《Claude Prompt 缓存怎么用?Prompt Caching 教程》。
Claude API 429 限速与重试
429 是什么意思
429(rate_limit_error)表示请求数或 Token 数超过了 Key 或组织的速率限制。响应头里的 retry-after 会告诉你需要等待多少秒。
SDK 自带自动重试
Anthropic Python SDK 默认会对 408、409、429、5xx 和连接错误自动重试 2 次,并做退避等待。你可以调整次数和超时:
client = anthropic.Anthropic(
max_retries=5, # 默认 2
timeout=600.0, # 单位:秒,默认 10 分钟
)
按错误类型分别处理
重试用完仍然失败时,按错误类型处理,不要用一个宽泛的异常吞掉所有错误:
try:
response = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=16000,
messages=[{"role": "user", "content": "你好"}],
)
except anthropic.RateLimitError as e:
wait = e.response.headers.get("retry-after", "?")
print(f"触发限速,建议 {wait} 秒后重试")
except anthropic.APIConnectionError:
print("网络连接失败,检查 base_url 和网络")
except anthropic.APIStatusError as e:
print(f"请求失败:{e.status_code} {e.message}")
批量任务频繁 429 时,优先降低并发;不需要实时返回的任务改用 Batch API,速率限制独立且费用减半。
Claude API 调用常见报错
| 状态码 | 常见原因 | 处理方法 |
|---|---|---|
400 |
参数错误、模型 ID 拼写错误,或 Key 未勾选该模型 | 检查请求体,在模型广场核对模型 ID |
401 |
Key 错误、过期,或复制时多了空格 | 重新复制 Key,检查环境变量是否生效 |
402 / 余额不足 |
账户余额或 Key 额度用完 | 充值或调高 Key 的额度上限 |
404 |
base_url 写错,比如漏写了 /v1 或末尾多了 / |
严格填写 https://api.supastore.cc/v1 |
429 |
触发速率限制 | 等待 retry-after 秒后重试,降低并发 |
529 |
上游服务过载 | 稍后重试,与你的额度无关 |
每个错误码的详细原因和新模型特有的 400 报错,见《Claude API 报错怎么办?2026 Claude API 错误码大全》;更多排查步骤见常见问题排查。如果你的项目已经在用 OpenAI SDK,也可以用同一个 Key 通过 OpenAI 兼容接口调用 Claude,见《如何通过单 API Key 统一接入 40+ 主流大模型》。
常见问题 (FAQ)
Q: Claude API 调用需要什么?
答: 需要一个 Claude API Key、一个接口地址和一个模型 ID;用 Python 调用时安装 anthropic SDK,把 Key 放进 ANTHROPIC_API_KEY 环境变量,再调用 client.messages.create 即可。
Q: Claude API 有免费额度吗?
答: Claude API 没有长期免费层,新注册的开发者账号可能获得少量测试额度,用完后需要预充值;claude.ai 的 Pro、Max 订阅与 API 分开计费,不能抵扣 API 费用。
Q: Claude API 可以用 OpenAI SDK 调用吗?
答: 可以通过 OpenAI 兼容接口调用,但工具调用、思考、Prompt 缓存等 Claude 特有功能在原生 Messages 接口上支持最完整,新项目建议直接使用 anthropic SDK。
Q: Python 调用 Claude API 报 404 怎么办?
答: 大多是 base_url 写错,使用 SupaStore 时 base_url 应严格填写 https://api.supastore.cc/v1,不能漏掉 /v1,末尾也不要多加斜杠。
Q: Claude API 调用一次多少钱?
答: 费用等于输入、缓存和输出 Token 分别乘以对应单价之和,每次响应的 usage 字段都会返回这几项 Token 数,代入价格表即可算出。