从 OpenAI 官方 API 迁到聚合网关:只改两行代码
本文演示 OpenAI API 迁移到 metaproxy 聚合网关的完整步骤:Python、Node、LangChain、curl 四种客户端各改两行,附检查清单与避坑指南。

从 OpenAI 官方 API 迁到聚合网关:只改两行代码
如果你正在找一个 OpenAI 平替——价格更便宜、能同时用多家厂商模型、又不用重写业务代码——结论很简单:任何遵循 OpenAI 接口协议的客户端,只需要改 base_url 和 api_key 两行配置,其余代码(流式、函数调用、JSON mode、重试逻辑)原样保留。网关地址是 https://api.metaproxy.ai/v1。
下面按四种最常见的客户端逐个演示,最后给出迁移检查清单和三个实测踩过的坑。
1. OpenAI Python SDK
改前:
from openai import OpenAI
client = OpenAI(
base_url="https://api.openai.com/v1",
api_key=os.environ["OPENAI_API_KEY"],
)
改后:
from openai import OpenAI
client = OpenAI(
base_url="https://api.metaproxy.ai/v1",
api_key=os.environ["METAPROXY_API_KEY"],
)
就这两行。之后的 client.chat.completions.create(...) 调用、流式迭代、错误处理一律不用动。注意 model 字段现在可以填网关上架的任何模型,不止 openai 系——换成别的厂商的模型,同样走这套接口。这才是迁过来的意义。
2. OpenAI Node SDK
改前:
import OpenAI from 'openai'
const client = new OpenAI({
baseURL: 'https://api.openai.com/v1',
apiKey: process.env.OPENAI_API_KEY,
})
改后:
import OpenAI from 'openai'
const client = new OpenAI({
baseURL: 'https://api.metaproxy.ai/v1',
apiKey: process.env.METAPROXY_API_KEY,
})
Node 端同理,baseURL 换成网关地址即可,TypeScript 类型不变。
3. LangChain Python
LangChain 封装了官方 SDK,同样支持自定义端点。
改前:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-4o",
api_key=os.environ["OPENAI_API_KEY"],
)
改后:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-4o", # 可换成网关上任何上架模型
base_url="https://api.metaproxy.ai/v1",
api_key=os.environ["METAPROXY_API_KEY"],
)
链、Agent、工具调用的组装代码零改动。
4. curl 直连
改前:
curl https://api.openai.com/v1/chat/completions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-4o", "messages": [{"role": "user", "content": "hi"}]}'
改后:
curl https://api.metaproxy.ai/v1/chat/completions \
-H "Authorization: Bearer $METAPROXY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-4o", "messages": [{"role": "user", "content": "hi"}]}'
只改了域名和 key。请求体、响应结构完全一致。这条 curl 也是迁移后第一分钟的冒烟测试——能返回正常 completion,说明 key、端点、模型名三者都对。
迁移检查清单
-
base_url末尾必须带/v1,写成https://api.metaproxy.ai会 404。 - 流式(SSE)发一条验证,确认逐 token 返回正常,不只是非流式能通。
- 函数调用 / JSON mode 各发一条验证(如果你的应用用到的话)。
- key 在控制台创建,完整密钥只在创建时显示一次,先存进密钥管理器再贴进环境变量。
- 用 key 的额度上限功能先设一个小额度跑一天,确认账单和用量符合预期再放开。
三个常见坑
坑一:环境变量没 reload。 改了 .env 但进程没重启,或者部署平台的环境变量改了没重新部署,SDK 拿到的还是旧 key 和官方端点。现象是「明明改了配置却还是打 OpenAI」。验证方法:在进程里打印一次 base_url 和 key 的前 8 位。
坑二:官方 key 和网关 key 混用。 网关 key 打官方端点会得到 401,官方 key 打网关端点也是 401,错误信息一模一样,很容易查错方向。两套 key 用不同环境变量名(OPENAI_API_KEY vs METAPROXY_API_KEY)物理隔离,不要复用同一个变量。
坑三:SDK 版本太老,硬编码了 openai.com 域名。 早期的一些 SDK 和封装库不支持自定义 base_url,或者参数名不同(有的叫 api_base)。升级 SDK,或换成明确支持自定义端点的版本——OpenAI 官方 SDK 从 1.0 起都支持。
下一步
上面的 chat/completions 是迁移的主路径。其他端点(如 embeddings)的可用范围以控制台实际可用为准,接入前先确认。
迁移完成后,你可以在 /integrate/ 查看完整的接入方案和进阶配置;还没有账号的话,去 /app/register 注册,创建第一个 key 只需要一分钟。
OpenAI API 迁移这件事,本质上就是两行配置加上一张检查清单。剩下的,交给网关。
跑通第一条请求,只要一分钟。
免费注册base_url = "https://api.metaproxy.ai/v1"
model = "claude-opus-5"
POST https://api.metaproxy.ai/v1/chat/completions