Home >博客

如何把 OpenAI SDK 切换到 BigModel 兼容接口:Base URL、API Key 与模型名

Published Updated

如果现有项目已经使用 OpenAI SDK,切换到 BigModel 兼容接口通常不需要重写业务调用逻辑。核心是替换三个配置:base_url(或 baseURL)、API Key,以及请求中的模型名。BigModel 站点提供 API 文档和代码示例,兼容网关使用 https://api.bigmodel.org/v1,模型可以先通过 /v1/models 查询。

这篇文章解决什么问题

本文适合已经接入 OpenAI SDK、希望把同一套聊天调用代码指向 BigModel 的开发者。文章用 Python 和 Node.js 分别展示切换前后的代码,并说明哪些参数可以先保持不变,哪些值必须根据 BigModel 账号当前可用模型重新配置。

切换前先准备三项配置

  • BigModel API Key:在 BigModel 控制台创建或复制 API Key,建议放入环境变量或服务端密钥管理系统。
  • 兼容接口地址:https://api.bigmodel.org/v1。使用 SDK 时把它作为基础地址,不要把 /chat/completions 重复拼进 base_url
  • 可用模型名:先请求 https://api.bigmodel.org/v1/models,从返回结果的 data[].id 中选择当前账号可用的模型。

Python:OpenAI SDK 切换前后对照

切换前:使用 OpenAI 默认配置

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["OPENAI_API_KEY"]
)

response = client.chat.completions.create(
    model="OPENAI_MODEL_NAME",
    messages=[
        {"role": "user", "content": "用一句话解释 API。"}
    ],
)

print(response.choices[0].message.content)

切换后:指向 BigModel 兼容接口

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["BIGMODEL_API_KEY"],
    base_url="https://api.bigmodel.org/v1",
)

response = client.chat.completions.create(
    model="MODEL_ID_FROM_V1_MODELS",
    messages=[
        {"role": "user", "content": "用一句话解释 API。"}
    ],
)

print(response.choices[0].message.content)

对比两段代码,业务调用仍然是 client.chat.completions.create()。实际变化集中在 API Key、base_urlmodel 三个位置。

Node.js:OpenAI SDK 切换前后对照

切换前:默认 OpenAI 地址

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
});

const response = await client.chat.completions.create({
  model: "OPENAI_MODEL_NAME",
  messages: [
    { role: "user", content: "用一句话解释 API。" },
  ],
});

console.log(response.choices[0].message.content);

切换后:设置 BigModel 的 baseURL

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.BIGMODEL_API_KEY,
  baseURL: "https://api.bigmodel.org/v1",
});

const response = await client.chat.completions.create({
  model: "MODEL_ID_FROM_V1_MODELS",
  messages: [
    { role: "user", content: "用一句话解释 API。" },
  ],
});

console.log(response.choices[0].message.content);

Node.js SDK 使用 baseURL,Python SDK 使用 base_url。不要把两个写法混用。

先查询模型,再填写 model

不要直接复制旧教程里的模型名。先用 API Key 请求模型列表:

curl "https://api.bigmodel.org/v1/models" \
  -H "Authorization: Bearer $BIGMODEL_API_KEY"

把响应中可用的 data[].id 填入 SDK 调用的 model。模型是否可用取决于当前账号和服务配置,因此把模型名写成固定常量前,应先完成一次列表检查。

参数说明

base_url 或 baseURL

它决定 SDK 请求发送到哪个兼容网关。BigModel 的基础地址是 https://api.bigmodel.org/v1。SDK 会在此基础上调用聊天补全等资源路径,基础地址不要重复添加具体接口路径。

api_key 或 apiKey

它会被 SDK 转换为 Bearer 鉴权请求头。请使用 BigModel API Key,不要继续使用原来的 OpenAI Key;也不要把真实 Key 写进前端代码、提交到仓库或输出到日志。

model

这是本次请求使用的模型标识。优先使用 /v1/models 返回的 data[].id,这样可以减少模型不存在、模型不可用或模型名称过期造成的错误。

messages

在兼容的聊天补全调用中,messages 仍然由带有 rolecontent 的消息组成。先保留原有消息结构,再逐项添加其他可选参数,便于定位兼容性问题。

stream、temperature 和 max_tokens

这些参数是否可用要以所选模型和当前接口支持为准。第一次切换时建议先发送最小请求;基础请求成功后,再逐一恢复流式输出或其他生成参数。如果某个可选字段被接口拒绝,就按错误信息移除或调整该字段。

切换后的最小验证流程

  1. 将 BigModel API Key 放入服务端环境变量,例如 BIGMODEL_API_KEY
  2. 请求 https://api.bigmodel.org/v1/models,确认鉴权、基础地址和模型列表都能正常返回。
  3. 把返回的模型 ID 填入 Python 或 Node.js 示例中的 model
  4. 先发送一个非流式聊天请求,确认结果可以从 choices[0].message.content 读取。
  5. 基础请求成功后,再恢复原项目中的系统消息、历史消息、stream 或其他可选参数。

常见错误排查

401 Unauthorized

检查 API Key 是否存在、是否使用了 BigModel 的 Key,以及 SDK 最终请求是否指向 https://api.bigmodel.org/v1。不要把 OpenAI Key 和 BigModel Key 混用。

400 Bad Request

先检查 messages 是否为空、JSON 结构是否有效,再逐一移除最近添加的可选参数。保持第一次验证请求尽量简单。

404 或模型错误

重新请求 /v1/models,使用当前响应中确实存在的模型 ID。也要确认 base_urlbaseURL 没有多写或少写 /v1

请求超时或 5xx

保留 HTTP 状态码和响应内容,先区分网络问题、临时服务错误和请求参数问题。生产代码可以对明确的临时失败做有限次数的重试,不要使用无限重试循环。

安全与维护建议

  • API Key 只放在后端环境变量或密钥管理系统中。
  • .env 加入 .gitignore,避免把密钥提交到代码仓库。
  • 不要在浏览器端直接暴露长期有效的 API Key。
  • 模型列表可能随账号和服务配置变化,遇到模型错误时优先重新查询 /v1/models
  • 把基础地址、API Key 和模型名作为部署配置管理,业务代码只保留 SDK 调用逻辑。

常见问题

切换到 BigModel 后需要重写整个 OpenAI SDK 调用吗?

通常不需要。对于兼容的聊天补全调用,先替换 API Key、基础地址和模型名,再用最小请求验证即可。

BigModel 的 base URL 应该填写什么?

使用 https://api.bigmodel.org/v1。不要把完整的 /chat/completions 路径重复写进 SDK 的基础地址。

model 应该填写哪个值?

先请求 https://api.bigmodel.org/v1/models,再从返回数据的 data[].id 中选择当前账号可用的模型 ID。

原来的 messages 参数还能继续使用吗?

在兼容的聊天补全请求中,常见的 rolecontent 消息结构可以先保留。建议先验证最小请求,再逐项恢复可选字段。

为什么 API Key 不应该写在前端?

前端代码会被用户看到,长期有效的 Key 一旦暴露就可能被他人调用。应在服务端读取环境变量或密钥管理系统中的 Key。

FAQ

切换到 BigModel 后需要重写整个 OpenAI SDK 调用吗?
通常不需要。对于兼容的聊天补全调用,先替换 API Key、基础地址和模型名,再用最小请求验证即可。
BigModel 的 base URL 应该填写什么?
使用 https://api.bigmodel.org/v1。不要把完整的 /chat/completions 路径重复写进 SDK 的基础地址。
model 应该填写哪个值?
先请求 https://api.bigmodel.org/v1/models,再从返回数据的 data[].id 中选择当前账号可用的模型 ID。
原来的 messages 参数还能继续使用吗?
在兼容的聊天补全请求中,常见的 role 与 content 消息结构可以先保留。建议先验证最小请求,再逐项恢复可选字段。
为什么 API Key 不应该写在前端?
前端代码会被用户看到,长期有效的 Key 一旦暴露就可能被他人调用。应在服务端读取环境变量或密钥管理系统中的 Key。

目录

信息

  • 点击10
  • 发布日期2026/09/18
0/500
友善分享您的看法。

更多帖子

探索本节更多文章