Python/Node.js 如何通过 OpenAI SDK 调用 Claude 3.5 Sonnet?(附代码示例)
摘要: 在进行 AI 应用开发时,我们经常需要同时对接 GPT-4 和 Claude 3.5 等多种模型。本文介绍如何利用开源的 API 聚合方案,使用统一的 OpenAI SDK 格式来调用 Claude 模型,解决开发中的 SDK 碎片化问题。
一、 开发背景
目前市面上大模型层出不穷,Anthropic 的 Claude 3.5 Sonnet 在代码生成方面表现优异,而 GPT-4o 在逻辑推理上依然强劲。
但在实际开发中,维护两套不同的 SDK(openai 和 anthropic)非常麻烦。为了降低维护成本,最佳实践是将所有模型请求统一为 OpenAI 的接口格式。
本文将演示如何通过修改 Base URL 的方式,用一套代码调用所有主流模型。
二、 环境准备
我们将使用标准的 openai 官方库。
Bash
# 安装官方库
pip install openai
三、 代码实现 (Python)
这里的核心技巧在于替换 API 的接入点。我们不直接连接官方端点,而是指向一个兼容协议的中转网关(这里以开源社区维护的 OKRouter 接口为例)。
1. 调用 Claude 3.5 Sonnet
注意看代码中的 base_url 配置,这是实现跨模型调用的关键。
Python
from openai import OpenAI
# 初始化客户端
# 技巧:通过修改 base_url,我们可以连接到支持多模型的聚合接口
client = OpenAI(
api_key="sk-okrouter-你的Key", # 这里的 Key 需要在聚合平台获取
base_url="https://api.okrouter.com/v1" # 关键:配置聚合接口地址
)
print("正在尝试调用 Claude 3.5...")
try:
response = client.chat.completions.create(
# 直接填写 anthropic 的模型名称,无需更换 SDK
model="anthropic/claude-3.5-sonnet",
messages=[
{"role": "system", "content": "你是一个资深全栈工程师。"},
{"role": "user", "content": "请用 Python 写一个快速排序算法,并解释原理。"}
],
stream=True # 支持流式输出
)
for chunk in response:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="")
except Exception as e:
print(f"调用失败: {e}")
2. 无缝切换到 GPT-4o
如果想换回 OpenAI 的模型,无需修改任何代码逻辑,只需更改 model 参数:
Python
# ... client 初始化同上 ...
response = client.chat.completions.create(
model="gpt-4o", # 瞬间切换回 GPT-4o
messages=[{"role": "user", "content": "Hello!"}]
)
四、 进阶配置:在 Cursor 中使用
Cursor 编辑器允许用户配置自定义的模型接入点。这对于想要在编辑器内使用 Claude 3.5 的开发者非常有用。
- 进入 Cursor 设置 (Settings)。
- 找到
Models->OpenAI API Key。 - 点击
Override OpenAI Base URL。 - 填入地址:
https://api.okrouter.com/v1。 - 填入对应的 Key 即可生效。
五、 总结与资源
通过统一接口标准,我们可以极大简化 AI 应用的后端逻辑。
本项目已在 GitHub 开源,提供了更多关于 Node.js、LangChain 的集成示例,欢迎 Star ⭐️。
- GitHub 项目地址 (含详细文档): 点击跳转 GitHub 仓库
(注:请将上面的 GitHub 链接换成你刚才改名后的那个仓库链接)