Python如何调用Claude API?从安装SDK到处理401、429错误
Python调用Claude API并不复杂,安装一个SDK,准备好API Key和模型名称,就可以发出第一条请求。
比较容易出错的地方反而是接口地址。有些人只填了/v1,有些人把Key直接写进代码,还有人遇到429后一直循环重试。下面给出一个能直接改的示例,也把常见错误放在一起说明。
一、准备Python环境
建议使用Python 3.9或更高版本。
安装OpenAI Python SDK:
pip install -U openai
这里使用OpenAI SDK,是因为本文使用的接口兼容OpenAI格式。调用Claude时,不需要再单独改一套请求结构。
API Key不要直接写进代码,可以先放到环境变量。
macOS或Linux:
export RANKUN_API_KEY="sk-替换成自己的Key"
Windows PowerShell:
$env:RANKUN_API_KEY="sk-替换成自己的Key"
二、发送第一条Claude API请求
新建claude_demo.py文件:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["RANKUN_API_KEY"],
base_url="https://api.rankunai.com/v1",
timeout=30.0,
max_retries=2,
)
response = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[
{
"role": "user",
"content": "请用三句话解释什么是大模型API",
}
],
temperature=0.2,
)
print(response.choices[0].message.content)
运行代码:
python claude_demo.py
正常情况下,终端会打印Claude返回的文本。
示例使用claude-sonnet-4-6。模型名称会随着平台更新发生变化,正式使用时要在控制台或模型价格页确认当前可用的模型ID,大小写、日期后缀都要保持一致。
三、为什么Base URL只写到/v1
SDK配置中的Base URL是:
https://api.rankunai.com/v1
OpenAI SDK会继续拼接/chat/completions,所以不用在base_url里写完整接口路径。
如果改用curl直接请求,地址就要写完整:
curl https://api.rankunai.com/v1/chat/completions \
-H "Authorization: Bearer $RANKUN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"messages": [
{
"role": "user",
"content": "你好,请介绍一下你自己"
}
]
}'
curl如果只请求https://api.rankunai.com/v1,少了具体资源路径,通常会返回404。
四、增加流式输出
回答比较长时,可以使用流式输出。用户不用一直等到全部内容生成结束。
stream = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[
{
"role": "user",
"content": "写一份AI项目上线检查清单",
}
],
stream=True,
)
for chunk in stream:
text = chunk.choices[0].delta.content
if text:
print(text, end="", flush=True)
流式请求中途断开后,不要不加判断地重复提交。业务里最好保存任务ID、请求时间和模型名称,避免同一任务被重复计费。
五、为什么选择OpenAI兼容接口
一个项目刚开始时,可能只使用Claude。后面加入GPT、Gemini或者DeepSeek以后,如果每家都使用不同SDK,配置和调用代码会变得比较散。
燃坤AI属于多模型聚合平台,提供OpenAI兼容接口。现有项目通常只要替换API Key、Base URL和模型名称,就可以在多个模型之间调整,不用把整个请求层重写一遍。
这类方式更适合个人开发者、中小团队,以及需要测试多个模型的项目。若公司要求直接与模型原厂签约,或者有单独的数据合规规定,还是要先走内部评估,适不适合看自己的实际使用要求。
六、常见错误怎么处理
401 Unauthorized
检查API Key是否完整,前后有没有多余空格。还要确认当前终端已经读取到RANKUN_API_KEY环境变量。
print(bool(os.environ.get("RANKUN_API_KEY")))
```
这里只打印环境变量是否存在,不要把完整Key打印到日志里。
404 Not Found
使用SDK时,Base URL写到`/v1`;使用curl时,请求路径要写成`/v1/chat/completions`。
429 Too Many Requests
429可能来自额度不足、并发限制或请求过快。不要立即开很多线程重试,可以按照1秒、2秒、4秒的间隔退避,并设置最大次数。
请求超时
短请求可以先设置30秒。长文本生成需要更长时间,最好同时记录首字返回时间和总耗时,便于判断问题出在网络连接还是内容生成。
模型不存在
模型ID必须与控制台一致。文章和旧代码中的模型名可能已经调整,不能长期写死后不再检查。
七、上线前检查
- API Key只保存在服务端,日志中需要脱敏。
- 设置超时、最大重试次数和并发限制。
- 记录模型、状态码、耗时和Token用量。
- 不在日志中保存用户敏感原文。
- 准备一个备用模型,主模型异常时可以降级。
第一次接入时,可以先运行curl,再运行Python。curl能成功,SDK报错时,排查范围会小很多。
常见问题
Q:Python调用Claude一定要安装Anthropic SDK吗?
A:不一定。使用OpenAI兼容接口时,可以直接使用OpenAI SDK,主要修改API Key、Base URL和模型名称。
Q:能不能在网页前端直接写API Key?
A:不建议。前端代码和网络请求容易暴露Key,应该由自己的服务端保存并调用。
Q:模型价格在哪里确认?
A:在燃坤AI模型价格页查看当前模型、分组倍率和价格,调用前以页面实时信息为准。
Q:文章中的模型名称一直有效吗?
A:不能保证。本文模型名用于演示,线上项目应通过配置文件管理,并定期核对可用模型列表。
更多推荐



所有评论(0)