Anthropic API 调用实操:密钥配置与 Python 请求示例
Anthropic API 是调用 Claude 系列模型的官方接口。
想跑通第一次请求,核心就三步:在 Console 创建 API Key、用官方 SDK 或 REST 接口发请求、确认返回内容。
下面按实际操作顺序讲清楚,并附上新手最容易踩的坑。
调用前需要准备什么
- 一个 Anthropic Console 账号,并完成必要的验证和充值。API 调用按用量计费,账户没有可用额度时请求会失败。
- 在 Console 的 API Keys 页面创建密钥。密钥只在创建时完整显示一次,复制后立即保存到安全位置。
- 本地或服务器安装 Python 3.8 及以上版本,并用
pip install anthropic安装官方 SDK。 - 不要把密钥写死在代码里。建议用环境变量管理,例如在 Linux 下执行
export ANTHROPIC_API_KEY="你的密钥",或写入~/.bashrc后重新加载。
用 Python 发出第一个请求
安装 SDK 后,新建一个 test_claude.py,写入以下内容:
import anthropic
client = anthropic.Anthropic() # 自动读取 ANTHROPIC_API_KEY
message = client.messages.create(
model="claude-3-5-sonnet-latest",
max_tokens=300,
messages=[
{"role": "user", "content": "用三句话解释什么是 API"}
],
)
print(message.content[0].text)
执行 python test_claude.py,如果终端输出了模型回复,说明密钥和网络都正常。
这里有两个参数需要留意:model 必须填当前可用的模型名,max_tokens 控制回复长度,设置过小可能导致输出被截断。
不用 SDK 时怎么直接发 HTTP 请求
有些环境不方便安装 SDK,可以用 curl 直接调 REST 接口:
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-3-5-sonnet-latest",
"max_tokens": 200,
"messages": [{"role": "user", "content": "你好,请回复一句测试消息"}]
}'
注意请求头里用的是 x-api-key,不是常见的 Authorization: Bearer。anthropic-version 请求头也不能省略,否则接口可能直接拒绝。
常见报错与排查方向
遇到报错先看 HTTP 状态码,比反复改代码更快。
- 401 Unauthorized:密钥无效或没有正确传入。检查环境变量是否拼写正确,
echo $ANTHROPIC_API_KEY看是否为空。 - 403 Forbidden:账号权限或所在地区受限。确认账号状态正常,并检查当前网络环境是否被允许。
- 429 Too Many Requests:触发速率限制。降低并发或增加请求间隔,不要用循环无间隔重试。
- 400 Bad Request:请求体格式不对。常见原因是
messages数组格式错误、缺少max_tokens,或模型名拼写有误。 - 连接超时:优先排查服务器到
api.anthropic.com的网络连通性,可以用curl -v https://api.anthropic.com看握手是否正常。
密钥安全与成本控制
API Key 等同于账户调用权限,一旦泄露可能产生费用。
生产环境建议为不同项目创建独立密钥,便于单独停用;
密钥只放在服务端环境变量或密钥管理服务中,不要提交到 Git 仓库,也不要写进前端代码。
成本方面,输入和输出 token 分别计费,回复越长费用越高。
测试阶段把 max_tokens 设小一些,上线前在 Console 查看用量统计,必要时设置预算提醒。
验证调用是否成功
除了看终端是否输出文本,还可以检查返回对象中的 stop_reason 字段:正常结束通常是 end_turn,如果是 max_tokens 说明回复被长度限制截断,需要调大 max_tokens 或缩短输入。
把这一步作为每次调整参数后的固定检查项,能减少很多“看起来没报错但结果不对”的情况。
如果请求一直失败,先回到密钥和网络两个基础项排查,再考虑模型名和参数问题。
按本文顺序走一遍,大多数首次调用的问题都能定位到具体原因。