Python怎么调用Claude API?Claude中转接口配置与代码教程
Python怎么调用Claude API?Claude中转接口配置与代码教程
想用 Python 调用 Claude,却不知道 API Key 怎么填、请求地址怎么配置,或者模型名称应该写什么?
对于准备接入 Claude 的开发者来说,最容易卡住的地方往往是:已经有了调用代码,却没有把密钥、地址和接口格式对应起来。
这篇文章围绕 Python 调用 Claude API 展开,介绍如何通过 Claude 中转接口完成以下操作:
- 配置 Claude API Key
- 设置 Base URL 和模型名称
- 发送第一个 Claude 请求
- 实现 Claude 多轮对话
- 接收 Claude 流式输出
- 排查鉴权、限流和接口地址错误
本文使用 OpenAI 兼容格式演示 Claude 调用。接入前,请先确认所选 Claude 中转站支持 /v1/chat/completions 接口。
Claude API 接入入口:
实际接口地址、可用模型和计费方式,请以平台控制台与开发文档为准。
Python调用Claude API需要准备什么?
在写代码之前,先准备三个必要信息。
| 配置信息 | 作用 | 从哪里获取 |
|---|---|---|
| API Key | 验证请求身份 | 服务平台的密钥管理页面 |
| Base URL | 指定请求发送到哪里 | 平台开发文档 |
| 模型名称 | 指定调用哪个Claude模型 | 平台模型列表 |
这三个信息需要对应同一个服务平台。
例如,使用某个 Claude 中转站创建的 API Key,就应该配置该平台提供的请求地址,并选择该平台允许调用的 Claude 模型。
**Claude 网页端订阅和 Claude API 是不同的服务。**拥有聊天产品订阅,不代表已经获得 API 调用额度;使用中转服务时,也需要按该平台的规则管理余额和密钥。
先确认Claude接口格式
Claude 中转接口常见的接入方式有两种:
| 接口格式 | 常见路径 | Python调用方式 |
|---|---|---|
| OpenAI兼容格式 | /v1/chat/completions |
使用OpenAI Python SDK |
| Claude原生Messages格式 | /v1/messages |
使用Anthropic Python SDK或HTTP请求 |
两种方式都可以用于调用 Claude,但请求结构和返回结构有所区别。
本文的代码适用于第一种方式。如果平台只提供 Claude 原生 Messages 接口,需要使用对应的请求格式。
尤其要注意系统提示词的位置:
- OpenAI 兼容格式通常把系统提示词放在
messages的system消息中。 - Claude 原生 Messages 格式通常使用顶层
system参数。
不能只替换接口路径,就假设两种格式可以直接通用。
第一步:安装Python依赖
建议在项目的虚拟环境中安装依赖,方便管理版本。
创建虚拟环境:
1 | |
macOS 或 Linux 激活环境:
1 | |
Windows PowerShell 激活环境:
1 | |
安装调用示例使用的 SDK:
1 | |
这里使用 OpenAI Python SDK,是因为所选接口兼容它的请求格式。实际调用的模型由 model 参数决定,本文配置的是 Claude 模型。
第二步:设置Claude API环境变量
不要把真实 API Key 直接写进 Python 文件。使用环境变量,可以减少密钥随代码泄露的风险。
macOS 或 Linux:
1 | |
Windows PowerShell:
1 | |
以上值都是占位内容,需要替换后才能调用。
Base URL应该填到哪里?
对于本文使用的 SDK,base_url 通常填写:
1 | |
SDK 会在这个地址后面拼接聊天接口路径。
因此,一般不要把下面的完整请求地址直接填进 base_url:
1 | |
如果平台使用特殊路径,请按平台文档配置。
Claude模型名称怎么填?
直接从平台模型列表复制准确名称。
不要把“Claude Sonnet”“Claude Opus”这样的系列名称,直接当作一定可用的 API 模型标识。平台可能要求填写包含版本信息的名称,也可能使用自己的模型别名。
第三步:发送第一个Claude API请求
新建 claude_demo.py 文件,写入以下代码:
1 | |
运行:
1 | |
如果终端输出了模型回答,说明基础调用已经跑通。
这段代码完成了三个动作:
- 从环境变量读取 Claude 接口配置。
- 向平台支持的 Claude 模型发送消息。
- 从兼容格式的响应中提取回答文本。
第一次测试建议使用短问题和较小的输出上限,方便定位问题,也能减少测试消耗。
Python调用Claude时,常用参数是什么意思?
model:指定Claude模型
1 | |
这个参数决定请求使用哪个模型。切换模型时,可以修改环境变量,但需要确认新模型的调用权限和参数支持情况。
messages:传入问题和上下文
1 | |
messages 是消息列表。每条消息通常包含 role 和 content,分别表示消息角色和具体内容。
max_tokens:限制输出长度
1 | |
在本文的兼容接口示例中,max_tokens 用于限制生成的 token 数量。
Token 不等于中文字数,也不等于英文单词数。如果输出上限过小,回答可能被截断;如果任务需要长篇分析,则应按需求提高上限。
timeout:设置请求超时
1 | |
这里配置的是 SDK 请求超时,单位为秒。长文档分析可能需要更长时间,应结合业务需求和平台限制调整。
max_retries:控制自动重试
1 | |
SDK 会对部分连接错误、限流和服务异常进行有限重试。不要再无条件叠加大量业务重试,否则可能延长等待时间,并产生重复请求。
如何用Python实现Claude多轮对话?
在本文使用的 Chat Completions 调用方式中,后续请求需要携带相关历史消息,Claude 才能结合前文回答。
下面是一个终端对话示例:
1 | |
例如,先问:
1 | |
再问:
1 | |
因为第二次请求包含前面的消息,模型可以理解“例子”指的是 Python 装饰器。
多轮对话为什么会增加费用?
每次请求携带的历史消息,通常都会成为本次请求的输入内容,并按平台规则计费。
对话越来越长时,输入消耗和响应时间都可能增加。实际项目中可以:
- 保留最近几轮相关对话。
- 将较早的对话整理成摘要。
- 删除重复、无关或过长的内容。
- 根据模型上下文限制控制消息长度。
不要只统计用户最新输入的那一句话。
Python怎么接收Claude流式输出?
如果你在开发 Claude 聊天页面,通常希望用户尽早看到回答,而不是等整段内容生成完才显示。
这时可以使用流式输出:
1 | |
流式响应中的部分片段可能没有正文,因此代码需要检查 choices 和 content。
**流式输出主要改善内容展示体验,并不意味着同样的回答会自动降低费用。**实际消耗仍应查看平台的用量记录。
如何查看Claude API的Token用量?
非流式调用时,如果中转接口返回兼容的 usage 数据,可以这样读取:
1 | |
通常可以按下面的思路理解文本请求费用:
1 | |
如果报价单位是“每百万 token”,需要先将 token 数量除以一百万,再乘对应单价。
缓存输入、工具调用或其他能力可能有单独规则。最终费用应以所用 Claude 中转站的价格说明和账单记录为准。
价格信息可以查看:
Python调用Claude API常见报错
KeyError:环境变量没有设置
如果出现:
1 | |
说明当前 Python 进程读取不到对应环境变量。
检查是否在运行程序的同一个终端中完成了配置。通过 IDE、容器或服务器启动程序时,需要在对应运行环境中设置变量。
同样的方法也适用于:
1 | |
401:鉴权失败
常见原因包括:
- API Key 复制不完整。
- Key 已被禁用或失效。
- Key 与请求地址不属于同一个平台。
- 所选接口需要不同的鉴权方式。
先核对密钥来源和 Base URL,再检查平台文档。反复重试通常无法解决配置错误。
400:请求参数不正确
重点检查:
- 模型名称是否准确。
messages是否符合要求。- 输出上限是否超过模型限制。
- 是否添加了平台不支持的参数。
- 是否混用了兼容格式和 Claude 原生格式。
排查时可以回到本文的最小请求,只保留模型、消息和输出上限。
404:接口路径错误
常见问题是把完整的 /v1/chat/completions 地址填进 SDK 的 base_url,或者重复填写了 /v1。
此外,模型不存在时,部分平台也可能返回 404。应结合返回的错误内容判断。
429:限流或额度问题
先查看响应内容,区分是请求频率过高,还是账户额度不足。
- 限流时,可以降低并发、排队并进行有限重试。
- 额度不足时,需要检查余额或配额。
- 不要对所有 429 错误持续重试。
连接超时
检查接口地址是否可以访问,并用短问题测试。
如果短请求正常、长请求超时,可以进一步检查输入长度、模型响应时间和超时设置。SDK 超时只代表客户端停止等待,不能据此确认服务端一定没有处理请求。
Claude Python接口怎么接到自己的项目里?
跑通脚本后,可以把 Claude 调用封装成后端函数:
1 | |
网站或 App 可以通过自己的后端调用这个函数,再把回答返回给用户:
1 | |
上线前,应在后端增加用户身份校验、请求频率限制、输入长度限制和用量记录。API Key 保存在服务器环境中,避免出现在浏览器代码里。
如果向 Claude 发送业务文档或客户资料,也需要确认所用服务的数据处理规则。
Claude API Python调用常见问题
使用OpenAI SDK,调用的还是Claude吗?
是。SDK 用于构造请求和读取响应,实际调用哪个模型取决于请求地址与 model 配置。
前提是服务平台确实提供对应 Claude 模型,并支持该兼容接口。
所有Claude中转站都能运行本文代码吗?
不一定。
本文代码要求平台支持 OpenAI 兼容的 Chat Completions 接口。只支持 Claude 原生 Messages 接口的平台,需要使用相应 SDK 和请求结构。
Claude模型切换只需要改model吗?
在同一个兼容接口下,基础文本任务通常可以先修改 model 测试。
但不同模型的输出上限、能力和可用参数可能不同,切换后仍需要验证实际业务请求。
Claude流式输出能直接显示到网页上吗?
可以由后端接收流式内容,再通过 SSE 等方式传给网页。
浏览器调用自己的后端接口,Claude API Key 由服务器保存。
为什么代码运行成功,却没有显示完整回答?
可能是输出上限过小,也可能是请求中断或接口返回了不同类型的内容。
对于本文的兼容接口,可以检查:
1 | |
如果平台返回 length,通常表示生成触及了长度限制,需要结合任务调整输出上限。
开始你的第一次Python Claude调用
第一次接入时,建议按这个顺序操作:
- 确认平台支持 OpenAI 兼容的 Claude 接口。
- 获取 API Key、Base URL 和准确模型名称。
- 安装 SDK 并设置环境变量。
- 运行最小 Python 示例。
- 查看回答和 token 用量。
- 再添加多轮对话、流式输出和业务逻辑。
Claude API 接入入口:
接入前可查看:
先用一个短问题验证配置,再使用真实业务样本测试效果,能更快完成 Python 与 Claude API 的接入。