一、简介与适用场景
「中转站」指的是那些自己不训练模型、而是把上游厂商的 API 二次转售的站点。它们通常用开源的 one-api、new-api 之类的项目搭建,对外提供一个统一的 OpenAI 兼容地址,卖点是「便宜」「不用魔法上网」「一个 Key 用所有模型」。
本站的明确立场是:不收录任何具体中转站的域名、价格与模型清单。 这不是保守,而是基于三条实打实的理由:
第一,生命周期极短。中转站从上线到跑路的中位数以月计,今天写进文章的域名,三个月后大概率变成死链,甚至被人抢注做成钓鱼站。收录等于给用户挖坑。
第二,密钥链路不可控。你的请求要经过站长的服务器才到上游,站长有能力记录你发送的全部内容——包括你贴进去的代码、文档和商业信息。多数中转站的隐私政策要么没有,要么形同虚设。
第三,我们无法核实其真实上游。有的中转站宣称转售官方接口,实际上把请求转给了另一个更小的中转站,甚至偷偷降级到小模型。你测到的效果和你以为的模型可能根本不是一回事。
所以本篇教的不是「用哪个中转站」,而是如果你已经决定要用,怎么把损失控制在可承受范围内。
二、评估与获取 Key
拿到任何一个中转站之前,先过这几道自检:
- 查上游真实性:调用
/v1/models看返回的模型列表是否与其宣传一致,再用同一个提示词对比官方 API 的输出风格差异。 - 查计费透明度:有没有可查的用量明细?扣费口径是按 token 还是按次?说不清楚的直接排除。
- 控制充值金额:只充够用一周的钱。中转站的「充值优惠」越夸张,跑路概率通常越高。
- 单独建 Key:即便平台支持多 Key,也为每个用途分开建,出事能精准吊销。
- 绝不复用密码:注册时用独立密码和独立邮箱。
三、Base URL 与鉴权
中转站基本都完整复刻 OpenAI 协议,所以形态是固定的:
- Base URL:站长提供的地址,通常形如
https://某域名/v1 - 鉴权方式:
Authorization: Bearer sk-xxxxxxxx - 对话端点:
/chat/completions
必须检查的一点:地址是不是 https。如果站长给的是明文 http 地址,你的 API Key 会以明文形式在网络上传输,任何一个中间节点都能截获。遇到 http 地址请立刻放弃这个站点,没有任何商量余地。
四、客户端接入与隔离配置
接入方式与任何 OpenAI 兼容供应商相同,在客户端里新建一个自定义供应商,填地址和 Key 即可。真正要做的是隔离:
- 用一个专门的浏览器配置文件或独立客户端来跑中转站,不与日常账号混用。
- 不要在走中转站的会话里粘贴任何真实的代码、合同、客户信息。
- 应用侧把中转站配成「可降级」的选项,主链路仍指向官方或大平台,中转站只做成本兜底。
- 给中转站的调用单独打日志,方便在异常时快速定位是不是它的问题。
五、代码示例
curl(先验证上游模型列表):
curl https://your-relay-domain.example/v1/models \
-H "Authorization: Bearer $RELAY_API_KEY"
Python(带超时与自动降级到官方通道):
import os
from openai import OpenAI
relay = OpenAI(
api_key=os.environ["RELAY_API_KEY"],
base_url=os.environ["RELAY_BASE_URL"],
timeout=30.0,
max_retries=1,
)
official = OpenAI(api_key=os.environ["DEEPSEEK_API_KEY"], base_url="https://api.deepseek.com/v1")
def ask(prompt: str) -> str:
"""优先走中转站,失败立刻回落到官方通道。"""
for client, model in ((relay, "deepseek-chat"), (official, "deepseek-chat")):
try:
resp = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}],
)
return resp.choices[0].message.content or ""
except Exception as exc: # 网络错误、鉴权失败、站点跑路都会走到这里
print(f"通道不可用,尝试下一条:{exc}")
raise RuntimeError("所有通道均不可用")
print(ask("用一句话解释什么是 API"))
Node.js:
import OpenAI from 'openai';
const relay = new OpenAI({
apiKey: process.env.RELAY_API_KEY,
baseURL: process.env.RELAY_BASE_URL,
timeout: 30_000,
maxRetries: 1,
});
try {
const resp = await relay.chat.completions.create({
model: 'deepseek-chat',
messages: [{ role: 'user', content: '用一句话解释什么是 API' }],
});
console.log(resp.choices[0].message.content);
} catch (error) {
console.error('中转通道异常,请切换到官方供应商:', error);
}
六、常见错误排查
| 错误码 | 现象 | 原因 | 解决方案 |
|---|---|---|---|
| 401 | 鉴权失败 | 站长重置了系统,或你的 Key 被清理 | 联系站长确认;反复发生说明该站不稳定 |
| 402 | 提示余额不足 | 扣费口径与宣传不符 | 核对用量明细,对不上就停止使用 |
| 404 | 模型不存在 | 宣传的模型实际未接入 | 先用 /v1/models 核实真实可用清单 |
| 502 / 504 | 间歇性网关错误 | 站长上游被限流或服务器过载 | 加降级逻辑;频繁出现就更换方案 |
| 输出质量骤降 | 同样提示词效果明显变差 | 上游被偷偷降级到小模型 | 用固定题目定期抽测,发现即止损 |
| 域名解析失败 | 突然完全无法访问 | 站点跑路或被封停 | 立刻切换备用通道,不要再充值 |
最后再说一遍:中转站省下的钱,和泄露一次密钥或丢失一次业务数据的代价相比,通常不成比例。能用官方就用官方,能用大平台的免费额度就用免费额度——本站 API 中心里那些标注「永久免费」的条目,足够覆盖绝大多数个人场景。