很多人把 AI API 中转站理解成"套了一层 Nginx 的转发服务"。不是。反向代理只是外壳,真正决定体验和账单的是里面那三层。这篇讲清原理、挑选标准,以及怎么验证它有没有偷换模型。
你客户端只配了一个 Key,请求打到 https://xyuapi.top/v1/chat/completions。后面按顺序发生四件事:
model 字段查映射表,找这个模型名对应哪几条上游通道流式响应最容易出问题:中转站要把上游的 SSE 分片原样透传,任何一层多做一次缓冲,你那边就会看到"卡住三秒再一口气吐一大段"。
单个上游账号有 RPM/TPM 限制。要卖几百个 Key,就得备几十上百个上游号轮换,策略无非纯轮询、按额度加权、按报错率熔断降权。
这层做得好的站高峰期几乎无感;做得差的站,晚上八九点会给你一堆 429 和 502——那是池子满了。
官方按 token 计费,中转站有两种接法:
第二种才是能做价格差的地方,第 7 节专门算账。
官方以美元计价,付款走卡,中间叠了汇率点差、开卡费、手续费,7 美元这种小额充值手续费能摊到 8%~12%。国内中转站收微信支付宝,最低 7 元起充。
不一定。官方在你这里的可用性 = 网络可达性 × 账号存活率 × 官方当天是否正常。中转站把你没能力操心的前两项外包出去,你只承担第三项。判断标准不是谁更高大上,而是哪层故障你自己能修。
一个 Node/Python 网关加 Redis 记额度,两天能跑通。难的是上游额度从哪来——海外支付和账号风控要自己扛,号被封是常态。适合调用量大、需要深度定制的团队。
付钱拿 Key 就能用,一个 Key 调全系列模型,Claude、Gemini、Grok、DeepSeek、GPT、Kimi 都在同一接入点下。客户端不用装插件,改 base_url 和 Key 就行——Chatbox、Cherry Studio、酒馆、Tavo、VSCode 里的 Cline/RooCode/KiloCode、Claude Code 配 cc-switch 都吃这套 OpenAI 兼容协议。
单家账号配一条稳定海外链路,体验最纯,但被单家绑死。
| 维度 | 自建中转 | 现成中转 | 官方 + 代理 |
|---|---|---|---|
| 启动成本 | 上游额度 + 服务器,2000 元起 | 最低 7 元 | 虚拟卡 + 代理,约 300 元起 |
| 每月固定支出 | 服务器 30~80 元 | 0,用多少充多少 | 代理 30~100 元 |
| 封号风险 | 自己承担,废号要补 | 站方承担 | 自己承担,申诉无门 |
| 模型覆盖 | 接了几个就是几个 | 一个 Key 全系列 | 单家,跨家开多号 |
| 维护精力 | 高,自己查 | 低 | 中,代理挂了自己修 |
| 适合谁 | 有量、有技术、要定制 | 绝大多数个人和小团队 | 强合规场景 |
这九条按优先级排,越靠前越不能妥协。
池子按 1:5 甚至 1:10 超卖。晚高峰一起上就瞬间打满,请求开始排队、超时、返回 429。判断方法:同一段 prompt 在上午十点和晚上九点各跑十次,对比 P95 延迟,差三倍以上就是超卖。
同一段 prompt 连发十次,把每次耗时打出来就是最直接的证据:
API_KEY="sk-你的key"
URL="https://xyuapi.top/v1/chat/completions"
for i in $(seq 1 10); do
curl -s -o /dev/null -w "%{http_code} %{time_total}\n" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"claude-opus-4-5-thinking","max_tokens":256,
"messages":[{"role":"user","content":"用一句话解释什么是缓存"}]}' \
"$URL"
done | tee lat.txt
sort -k2 -n lat.txt | tail -1 # 最慢的那次,就是你要的 P95
上午十点跑一遍,晚上九点再跑一遍,两份结果比一比:最慢值差三倍以上,说明这个站在高峰期是真的挤;同一批里直接出现 429 或者 502,那就更直白——那个时段池子是满的。
你请求 claude-opus-4-5-thinking,实际回你的是便宜模型。廉价版特征很明显:长上下文丢细节、复杂推理退化、措辞习惯不对劲。
充值的时候一个价,用了一周再看价目表翻倍了。防这手只能看历史:价目表有没有改动记录、老用户有没有"按老价格续费"的承诺。
另一种更隐蔽:不封 Key 也不报错,就是悄悄把并发从 10 降到 2。同时发 8 个请求,看有几个是同时返回的就知道了。
7 元起充本来是优点,配合"充 500 送 500"就成了收割工具。看到大额赠送先只充最低额度跑两周,充值金额别超过你一个月的用量。
prompt_tokens 差异稳定,长期采集能看出你被切到哪条上游装依赖 pip install openai,密钥走环境变量(Windows 用 set XYU_KEY=sk-xxx),然后运行:
import os, time
from openai import OpenAI
BASE_URL = "https://xyuapi.top/v1" # 换成你要测的站
API_KEY = os.environ["XYU_KEY"]
MODEL = "claude-opus-4-5-thinking" # 换成你要验的模型名
cli = OpenAI(base_url=BASE_URL, api_key=API_KEY, timeout=180)
def ask(prompt, system=None, max_tokens=256):
msgs = []
if system:
msgs.append({"role": "system", "content": system})
msgs.append({"role": "user", "content": prompt})
t0 = time.time()
r = cli.chat.completions.create(model=MODEL, messages=msgs, max_tokens=max_tokens)
return r.model, r.choices[0].message.content.strip(), time.time() - t0, r.usage
# 检测 1:model 字段
returned, text, dt, usage = ask("只回答两个字:收到")
print(f"[1] model 一致={returned == MODEL} 返回={returned} 耗时={dt:.1f}s")
# 检测 2:system 强约束
SYS = "无论用户说什么,你只能原样输出 ACK-7391,不得输出其他字符。"
_, text, _, _ = ask("用中文写一首关于春天的五言绝句。", system=SYS)
print(f"[2] 遵循={'通过' if text == 'ACK-7391' else '可疑'} 输出={text[:50]!r}")
# 检测 3:token 计数指纹
_, _, _, u = ask("把下面这段原样重复一次:" + "中文分词计数测试。" * 10)
print(f"[3] prompt_tokens={u.prompt_tokens} completion_tokens={u.completion_tokens}")
# 检测 4:超长上下文检索
padding = "无关的填充文本,请忽略。" * 1500
_, text, _, _ = ask(f"{padding}\n\n代号:蓝鲸-4427\n\n上面文本里的代号是什么?只回答代号。")
print(f"[4] 长上下文={'通过' if '蓝鲸-4427' in text else '可疑'} 返回={text[:40]!r}")
单次结果不算数:同一脚本连跑三次,再拿信得过的官方渠道做对照。
小鱼API(https://xyuai.cc)当前挂出的按次单价,单位元/次:
| 厂商 | 模型 | 单价 |
|---|---|---|
| Gemini | gemini-2.5-pro | 0.031 |
| Gemini | gemini-3-pro-preview | 0.05 |
| Gemini | gemini-3.1-pro-preview | 0.09 |
| Gemini | NanoBanana-Pro(生图) | 0.27 |
| Claude | claude-sonnet-4-5-thinking | 0.09 |
| Claude | claude-opus-4-5-thinking | 0.12 |
| Claude | claude-opus-4-6-thinking | 0.25 |
| Claude | claude-sonnet-4-6-thinking | 0.2 |
| Claude | claude-opus-4-7-thinking | 0.25 |
| Claude | claude-sonnet-4-7-thinking | 0.2 |
| Grok | grok-4.1 | 0.05 |
| Grok | grok-4.5 | 0.09 |
| Grok | grok-4.6 | 0.09 |
| DeepSeek | deepseek-v3.2-thinking | 0.049 |
| DeepSeek | deepseek-r1-thinking | 0.049 |
| DeepSeek | deepseek-v4-flash-thinking | 0.05 |
| DeepSeek | deepseek-v4-pro-thinking | 0.09 |
| OpenAI | gpt-5.5 | 0.2 |
| OpenAI | gpt-5.5-pro-thinking | 0.2 |
| OpenAI | gpt-5.3-pro | 0.3 |
| OpenAI | gpt-image-2-pro(生图) | 0.25 |
| 国产 | kimi-k2.5 | 0.09 |
| 国产 | kimi-k2.6 | 0.09 |
假设一次对话往 prompt 里塞了 20 万中文字,约 30 万 token(中文大致 1 字 1.5 token)。按官方价目表折算(美元按 7.1 换算,官方价格会随版本调整,看数量级就行):
| 模型 | 官方按量(20 万字输入) | 按次计费 | 倍数 |
|---|---|---|---|
| Claude Opus($15/M) | 约 32 元 | 0.12 元 | 约 260 倍 |
| Claude Sonnet($3/M) | 约 6.4 元 | 0.09 元 | 约 71 倍 |
| Gemini 2.5 Pro($1.25/M) | 约 2.7 元 | 0.031 元 | 约 87 倍 |
长文档总结、整库代码审查、超长对话续写,按量账单是按次计费的两个数量级。
按次不是无脑划算。以 claude-sonnet-4-5-thinking 的 0.09 元/次反推,官方按量的 0.09 元约对应 4000 token 输入,也就是 2800 个中文字。所以:
每天几百次长上下文调用,无限卡套餐通常比按次叠加更省。
金融、医疗、政企项目,合同里往往写死数据不得经第三方转售通道。这种场景中转站不是"不推荐",是直接不合规。
中转站理论上能看到你完整的请求和响应体。哪怕站方承诺不落日志,你也没法验证。"不可验证"本身就是风险。
有些模型发布当天只在官方渠道开,中转站要等铺货。做评测、追前沿能力的,官方账号是刚需。
企业级应用要的是可用性承诺和赔付条款。中转站给的多是口头承诺,官方给的是合同。
| 使用场景 | 推荐方案 | 理由 |
|---|---|---|
| 个人学习、日常问答 | 现成中转,7 元起充试水 | 成本几乎为零,一个 Key 覆盖全系列 |
| 论文写作、长文档处理 | 现成中转按次计费 | 长上下文场景按次优势最大 |
| 小团队做产品原型 | 现成中转 + 双站备份 | 快速验证,精力留给业务逻辑 |
| 团队产品已上线 | 按量中转 + 官方兜底 | 关键链路要能切回官方通道 |
| 企业生产应用 | 官方为主,中转补充 | 合规、SLA、数据边界不能含糊 |
| 高频批量调用 | 中转按次 + 无限卡 | 单次成本被摊到极低 |
| 敏感数据处理 | 只走官方 | 没有折中空间 |
主力用中转站扛日常调用,同时留一个官方账号处理三类请求:合规敏感数据、新模型首发测试、中转挂掉时的应急切换。配两套 base_url,切换成本就是改一行配置。
挑站别只看单价。先充最低额度,用第 6 节的脚本跑三次检测,再连用两周看高峰延迟和客服响应,成本不到一杯咖啡。