OpenAI 兼容接口:5 分钟切换 base_url 完成接入
如果一个网关是 OpenAI 兼容 的,那么迁移会是你做过最简单的改动之一:保留代码,换掉 base_url 和 API Key,大约 5 分钟就上线。本文手把手覆盖 Python、Node.js、cURL 以及常见 AI 工具。
"OpenAI 兼容"是什么意思
意思是网关实现了和 OpenAI 一样的 HTTP API——一样的端点(/v1/chat/completions 等)、一样的请求与响应结构、一样的 SDK。你什么都不用重写,只是把官方 OpenAI SDK 指向另一个地址。
你需要从网关拿到两样东西:
- Base URL,例如
https://api.your-gateway.com/v1 - API Key,在网关控制台生成
Python(openai SDK)
from openai import OpenAI
client = OpenAI(
api_key="你的网关Key",
base_url="https://api.your-gateway.com/v1",
)
resp = client.chat.completions.create(
model="gpt-5.4-mini",
messages=[{"role": "user", "content": "用一句话打个招呼。"}],
)
print(resp.choices[0].message.content)
要换模型,把 model 改成 claude-sonnet-4-6、gemini-3.1-pro、deepseek-v4 等即可。
Node.js(openai SDK)
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.GATEWAY_KEY,
baseURL: "https://api.your-gateway.com/v1",
});
const resp = await client.chat.completions.create({
model: "gpt-5.4-mini",
messages: [{ role: "user", content: "用一句话打个招呼。" }],
});
console.log(resp.choices[0].message.content);
cURL
curl https://api.your-gateway.com/v1/chat/completions \
-H "Authorization: Bearer 你的网关Key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.4-mini",
"messages": [{"role": "user", "content": "用一句话打个招呼。"}]
}'
环境变量
大多数代码从环境变量读取 Key 和地址,所以你常常完全不用动源码:
export OPENAI_API_KEY="你的网关Key"
export OPENAI_BASE_URL="https://api.your-gateway.com/v1"
很多 SDK 会自动识别 OPENAI_BASE_URL。
主流 AI 工具
- Cursor / IDE 助手:在设置里填自定义 OpenAI base URL 和 Key。
- Claude Code、Codex、OpenCode 等 CLI:把 base URL/Key 指向网关,选一个支持的模型 id。
- LangChain / LlamaIndex:给 OpenAI 客户端传
base_url/openai_api_base和网关 Key。
验证是否生效
- 发一个请求(上面的 cURL 最快)。
- 确认拿到正常回复。
- 看网关控制台——你的请求、token、费用应该都出现了。
如果报 401,重新检查 Key;如果报模型错误,确认网关支持你写的那个 model id。
常见坑
- base URL 忘了带
/v1。 - Key 用混——要用网关的 Key,不是旧供应商的。
- 模型 id 写错——网关用特定 id,从模型列表复制。
- 写死地址——优先用环境变量,方便区分测试/生产。
常见问题
切换会丢功能吗? 标准对话、工具/函数调用、流式都不会丢。若你依赖某些冷门的厂商专属参数,确认网关支持即可。
能回滚吗? 随时——把 base URL 和 Key 改回原供应商即可。
迁移到底要多久? 普通应用约 5 分钟:改两个值,发个测试请求,搞定。