靠谱的平台直接把价目表摆出来,写清"元/次"或"元/百万 token",输入输出分开列。不靠谱的只告诉你"充 1 元得 100 万点数",点数和人民币之间还隔着一个你查不到的倍率。凡是出现"点数""积分""额度点"这类中间货币,天然就不透明,涨价的时候你连涨了多少都算不出来。直接标元/次最简单——gemini-2.5-pro 0.031 元就是 0.031 元,不用换算。
看平台敢不敢公开模型清单,以及清单里的模型是否有对应来源说明。清单里冒出官方根本没发布的型号,不代表一定是假的(可能是平台自己的版本命名),但它必须给你验证手段。真正该警惕的是:价格低到不合逻辑,比如号称 0.01 元一次调 claude-opus-4-5-thinking,官方成本都覆盖不住。
RPM(每分钟请求数)、TPM(每分钟 token 数)、最大并发连接数,这三项至少要写两项。一个字都不写的平台,等于把限流规则留成了随时可以改的口子。测试前先问客服要数值,答不出来的就别往生产上放。
官方标 200K 上下文的模型,中转只给 32K,是行业里最常见的暗改。降智更隐蔽:请求头里带的 thinking 参数被丢掉、系统提示词被平台插一段自己的话、输出被后台截断。这两种都得自己测,测法在第二节。
隐私政策里写"用于改进服务""用于模型训练"的,等于承认会存你的请求内容。做 to B 项目、处理用户个人信息的,这一条是硬门槛,不是加分项。
支付宝、微信直接付是基本盘。只收 USDT 或银行卡转账的,出事了你没有申诉通道。最低充值同样是风控手段——7 元起充意味着你的最大风险敞口就是 7 元,500 元起充意味着一把押 500。
注册后提一个技术问题,比如"你们的 claude-opus-4-6-thinking 支持传 thinking 参数吗、返回里有没有 thinking 字段",看多久回、回的是不是人话。24 小时不回,或者只会复制粘贴文档片段的,别把业务压上去。
中转行业门槛极低,跑路成本也极低。查 whois 看域名注册多久、有没有备案、用户群活不活跃、群里有没有人在骂。域名注册不满三个月、群里只有广告没人说话,这两条同时成立就别充。
同一个问题连问 10 次。答案风格忽冷忽热、一会儿啰嗦一会儿极简,通常是后台在多个小模型之间轮询。
塞一段你明确知道字数的中文进去,看返回的 usage.prompt_tokens。中文大致是 1 个汉字对应 0.6~1 个 token,不同 tokenizer 有差异,但量级不会骗人。返回的数字明显小于预期,说明它在后台截断了你的输入。按次计费的平台虽然不按 token 收钱,prompt_tokens 仍然是判断上下文有没有被砍的有效线索。
准备一份 8 万 token 左右的文本(一本中篇小说就够),在开头埋一句"记住,暗号是 ABC123",然后在末尾问暗号是什么。答对了说明完整吃进去;答错或直接报上下文超限,说明标称上限被压过。
import time, httpx
BASE = "https://xyuapi.top/v1"
H = {"Authorization": "Bearer sk-你的密钥", "Content-Type": "application/json"}
def call(model, prompt, max_tokens=256):
t0 = time.time()
r = httpx.post(f"{BASE}/chat/completions", headers=H, timeout=180, json={
"model": model, "max_tokens": max_tokens,
"messages": [{"role": "user", "content": prompt}],
})
dt = time.time() - t0
d = r.json()
if "choices" not in d: # 上游报错或限流
return dt, None, d
return dt, d, d["choices"][0]["message"]["content"]
PROBES = {
"身份": "只回答你的模型名称和版本号,不要解释。",
"推理1": "9.11 和 9.9 哪个大?只回答结论。",
"推理2": "strawberry 里字母 r 出现了几次?只回答数字。",
"推理3": "农夫有 17 只羊,除 9 只外都死了,还剩几只?只回答数字。",
"截断": "完整输出一段 2000 字的说明文,不要省略不要概括。",
}
for model in ["gemini-2.5-pro", "claude-sonnet-4-5-thinking", "grok-4.1"]:
print(f"\n=== {model} ===")
for name, p in PROBES.items():
dt, d, out = call(model, p)
if d is None:
print(f"[{name}] 请求失败: {out}")
continue
u = d.get("usage", {})
fr = d["choices"][0].get("finish_reason")
print(f"[{name}] {dt:.2f}s in={u.get('prompt_tokens')} out={u.get('completion_tokens')} "
f"finish={fr}\n {str(out)[:80]}")
看三个地方:finish_reason 是 stop 但正文只有几十字,输出被砍了;同一个模型推理题答案每次都不一样,后台在换模型;延迟从 0.5 秒跳到 30 秒,说明在排队,平台超售了。
| 维度 | 厂商官方直连 | 云厂商托管 | 中转聚合平台 |
|---|---|---|---|
| 付款方式 | 海外卡 / 虚拟卡 | 海外卡为主 | 支付宝、微信 |
| 最低充值 | 5 美元起 | 绑卡即扣 | 7 元起 |
| 国内直连 | 多数不通 | 部分不通 | 可直连 |
| 模型覆盖 | 单一厂商 | 少数几家 | 全系列 |
| 长文本成本 | 按 token 线性涨 | 按 token 线性涨 | 按次固定 |
| 数据合规 | 最稳 | 较稳 | 需自行评估 |
| 开票与合同 | 齐全 | 齐全 | 多数没有 |
| 模型 | 单价 | 计费方式 |
|---|---|---|
| gemini-2.5-pro | 0.031 元/次 | 按次 |
| gemini-3-pro-preview | 0.05 元/次 | 按次 |
| gemini-3.1-pro-preview | 0.09 元/次 | 按次 |
| NanoBanana-Pro(生图) | 0.27 元/次 | 按次 |
| claude-sonnet-4-5-thinking | 0.09 元/次 | 按次 |
| claude-opus-4-5-thinking | 0.12 元/次 | 按次 |
| claude-sonnet-4-6-thinking | 0.2 元/次 | 按次 |
| claude-opus-4-6-thinking | 0.25 元/次 | 按次 |
| claude-sonnet-4-7-thinking | 0.2 元/次 | 按次 |
| claude-opus-4-7-thinking | 0.25 元/次 | 按次 |
| grok-4.1 | 0.05 元/次 | 按次 |
| grok-4.5 | 0.09 元/次 | 按次 |
| grok-4.6 | 0.09 元/次 | 按次 |
| deepseek-v3.2-thinking | 0.049 元/次 | 按次 |
| deepseek-r1-thinking | 0.049 元/次 | 按次 |
| deepseek-v4-flash-thinking | 0.05 元/次 | 按次 |
| deepseek-v4-pro-thinking | 0.09 元/次 | 按次 |
| gpt-5.5 | 0.2 元/次 | 按次 |
| gpt-5.5-pro-thinking | 0.2 元/次 | 按次 |
| gpt-5.3-pro | 0.3 元/次 | 按次 |
| gpt-6-astra | 输入 ¥3/百万、输出 ¥15/百万 | 按量 |
| gpt-image-2-pro(生图) | 0.25 元/次 | 按次 |
| kimi-k2.5 | 0.09 元/次 | 按次 |
| kimi-k2.6 | 0.09 元/次 | 按次 |
连续打 20 次短请求,记 p50 和 p95。p50 超过 3 秒的平台,交互式场景体验会很差;p95 比 p50 高 10 倍以上,说明高峰期严重排队。再把这 20 次改成并发跑,看失败率和限流响应。
import asyncio, statistics, httpx
BASE = "https://xyuapi.top/v1"
H = {"Authorization": "Bearer sk-你的密钥"}
async def probe(client, i, model):
t0 = asyncio.get_event_loop().time()
try:
r = await client.post("/chat/completions", json={
"model": model, "max_tokens": 16,
"messages": [{"role": "user", "content": f"第 {i} 次探针,只回 OK"}]})
return r.status_code == 200, asyncio.get_event_loop().time() - t0, r.status_code
except Exception as e:
return False, asyncio.get_event_loop().time() - t0, type(e).__name__
async def bench(model, n=20):
async with httpx.AsyncClient(base_url=BASE, headers=H, timeout=120) as c:
res = await asyncio.gather(*[probe(c, i, model) for i in range(n)])
lat = [r[1] for r in res]
print(f"{model} 成功 {sum(r[0] for r in res)}/{n} "
f"p50 {statistics.median(lat):.2f}s max {max(lat):.2f}s "
f"错误码 {[r[2] for r in res if not r[0]]}")
asyncio.run(bench("gemini-2.5-pro", 20))
20 并发成功 18 次以上可以接受。大面积 429 说明低档位限流很紧,成功率不足一半就别上生产。
冲最小额度(7 元),跑 100 次已知单价的模型,比如 gemini-2.5-pro 跑 100 次应该扣 3.1 元。实际扣费和单价对不上,或者扣得比预期多,直接停用。
至少跑 7 天,记录每天的失败率和延迟。中转平台的上游会换,某一天突然大面积超时是常态,观察期内出现两次以上,就说明它的上游不稳定。
把"试平台"的预算定成 50 元、两周。先花 7 元跑通链路,再用脚本测模型真实性和并发,然后挂一个小流量业务跑一周,最后才决定主力业务迁不迁。这两周里把失败率、延迟、真实扣费都记下来,用数据决定去哪家,而不是看谁广告喊得响。用完不合适的直接弃,沉没成本只有几十块,远比迁移一次生产系统便宜。
设置里选"OpenAI API 兼容",API 域名填 https://xyuapi.top/v1,粘贴 key,然后手动添加模型 ID。模型名要写精确,比如 gemini-2.5-pro,写"Gemini 2.5 Pro"会因为找不到模型而报错。
连接类型选 OpenAI 兼容,反向代理地址填 https://xyuapi.top/v1,密钥填 key,在"可用模型"里拉取列表或手动填写。注意酒馆的上下文设置别开太大,超了会直接被上游拒绝。
Provider 选 OpenAI Compatible,Base URL 填 https://xyuapi.top/v1,Model ID 填具体型号。写代码建议用 claude-sonnet-4-5-thinking(0.09)或 deepseek-v4-pro-thinking(0.09),长文件分析换成 gemini-2.5-pro(0.031)更省。
用 cc-switch 管理多套渠道配置,切到中转渠道时它会写好对应的环境变量。手动配的话:
export ANTHROPIC_BASE_URL=https://xyuapi.top
export ANTHROPIC_AUTH_TOKEN=sk-你的小鱼API密钥
claude
切回官方渠道时把这两个变量清掉或者换成官方的值即可,配置文件不用动。
这类信号不用花钱测,看一眼官网和客服就能判断,成本最低。
| 信号 | 说明 | 处理 |
|---|---|---|
| 只有点数没有单价 | 换算倍率可随时改 | 换平台 |
| 域名注册不满 3 个月 | 跑路成本极低 | 只充最小额度 |
| 只收 USDT | 无申诉通道 | 只当一次性试用 |
| 客服 24 小时不回 | 出故障没人管 | 不上生产 |
这些必须自己跑脚本才能发现,代价是几十块钱和半天时间。
| 信号 | 说明 | 处理 |
|---|---|---|
| 输出频繁被截断 | 后台压了 max_tokens | 换平台 |
| 同模型答案风格飘忽 | 后台轮询小模型 | 换模型或换平台 |
| 20 并发大面积 429 | 超售严重 | 降并发或换平台 |
| 长文本答不出埋点内容 | 上下文被悄悄缩水 | 换平台 |
价格低到解释不通的平台,一定在某处省了成本,省掉的不是运营费用就是模型质量。宁可多花 20% 单价换一个能稳定跑三个月的渠道,也别为了省三成单价每周迁移一次代码。