Python/Node.js 如何通过 OpenAI SDK 调用 Claude 3.5 Sonnet?(附代码示例)

114 阅读2分钟

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(openaianthropic)非常麻烦。为了降低维护成本,最佳实践是将所有模型请求统一为 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 的开发者非常有用。

  1. 进入 Cursor 设置 (Settings)。
  2. 找到 Models -> OpenAI API Key
  3. 点击 Override OpenAI Base URL
  4. 填入地址:https://api.okrouter.com/v1
  5. 填入对应的 Key 即可生效。

五、 总结与资源

通过统一接口标准,我们可以极大简化 AI 应用的后端逻辑。

本项目已在 GitHub 开源,提供了更多关于 Node.js、LangChain 的集成示例,欢迎 Star ⭐️。

(注:请将上面的 GitHub 链接换成你刚才改名后的那个仓库链接)