自建一个 AI 模型中转站

2026-09-30 · New API · 约 8 分钟阅读

手上有好几个模型来源:Gemini 的反代、某东家送的 GPT 额度、智谱清言的游客接口、还有一堆开源模型。 每个客户端都配一遍 key、协议还各不相同,非常难受。于是用一个 New API 把它们收口成 一个兼容 OpenAI 的地址 —— 也就是导航里的那个「AI 模型中转站」。

为什么需要一个中转层

几个真实踩坑

1. 分组是「渠道级」的,不是「模型级」的

New API 里「分组」决定某个用户能用哪些渠道,进而能用哪些模型。 路由表本质是 (分组, 模型, 渠道) 三元组。所以想做「某个分组只能用某几个模型」, 得单独建一条只列那几个模型的渠道 —— 直接改渠道的 models 是最省事的做法。

现象:模型广场里列了 100 多个模型,但用户选其中一大半会直接 503「无可用渠道」。 原因就是广场不按分组过滤,而路由严格按分组找渠道。

2. 倍率口径要对齐

默认 QuotaPerUnit = 500000,也就是 1 美元 = 50 万额度。 倍率 ratio = 1 大致对应 2 美元 / 百万 token。 先把这个口径固定下来,之后所有模型的定价都用同一把尺子,账才对得上。

3. 新模型一定要补价

新加的渠道如果没有对应的 ModelRatio,调用会直接报 模型价格未配置。补价一句话就够:

PUT /api/option/
{"key":"ModelRatio","value":"{\"某模型\": 0.5, ...}"}

4. 首字延迟很多时候不怪你

同一套链路,flash-lite 系 0.5 秒就能出首字,而某些「思考型」模型要 10~20 秒。 先用 stream: true 把「首字节」和「首个有内容的分片」分开计时, 再对比同链路的快模型,就能判断慢是链路问题还是上游固有。

我现在的用法

客户端只管填两个东西:base_url 指向中转站、api_key 用发的那种。 至于背后是 Gemini 还是 GLM,客户端完全不用关心。空闲时再去面板看看哪个渠道额度快用完了, 把它的分组收紧一点即可。

小结

中转站的价值不在「转发」,而在于把一团乱麻的来源变成一个可管理的东西: 统一的入口、统一的账、统一的排障视角。搭一次,能省下后面无数次的重复配置。

← 返回文章列表