价格差从哪来
官方价由厂商定,中转站的价格由分组倍率决定。claude-sonnet-5 的 model_ratio 是 1.5,倍率 1 时输入 3 美元、输出 15 美元每百万 token;Claude Max 分组倍率 0.85,实付 2.55 与 12.75。
同一个模型在不同分组的价格能差出几倍:Kiro 分组倍率 0.15,实付 0.45 与 2.25;Claude Max 企业分组倍率 1.4,实付 4.20 与 21.00。倍率低通常意味着上游渠道和额度来源不同。
便宜分组适合试错和离线任务,关键业务要先压测并发和稳定性,别只看单价。中转站的定价随渠道变化,任何时候都以 定价页 为准。
同一份请求,0.85 倍比官方低 15%,0.15 倍低 85%,1.4 倍反而贵 40%。差价来自渠道和额度来源,不来自模型本身。
可用性:故障面不一样
官方直连的故障面是厂商自己:一个账号、一个区域、一份配额。中转站背后有多条渠道,某条挂了可以切,但中转本身是新的单点,它的网关、调度和计费都可能出问题。
渠道多不等于可用性高,只是故障分布变了。真正决定可用性的是你的重试、降级和监控,这些在两种方案里都要写,换供应商也带不走。
切换要有阈值:连续五次 5xx,或者 p95 超过三秒,自动切到备用线路。没有阈值的切换,到头来都靠人工发现。
数据与合规
请求经过第三方,这是绕不开的事实。涉及个人信息、合同、医疗记录的场景,先确认对方的数据保留政策和日志权限,必要时脱敏,或者走私有部署。官方直连在这类场景里责任链更短,审计时也更容易解释。
反过来,中转站通常会在网关层记一份请求日志,这对排查问题是好事,对保密是负担。上线前问清楚日志保存多久、谁能看,比事后补协议有用。
合规判断以公司要求和厂商官方文档为准,别拿"同行都在用"当依据。
计费与对账
官方的用量和账单在控制台里按周期汇总,中转按 token 实时扣额度。中转的好处是每次调用的 usage 和扣费都能看到,坏处是同一个模型在不同分组价格不同,对账时要把分组一起记下来,否则月底的数和预算对不上。
充值方式、余额提醒、分组倍率都可能调整,做预算时留 20% 余量,比精确到小数点更有用。
迁移成本很低
OpenAI 兼容的接口只改 base_url 和 Key,SDK 代码基本不动。
import requests
BASE = "https://ai.idcidiot.com/v1" # 换成官方端点,就是另一组数据
KEY = "sk-..."
MODEL = "claude-sonnet-5" # 换成官方模型名
r = requests.post(
f"{BASE}/chat/completions",
headers={"Authorization": f"Bearer {KEY}"},
json={"model": MODEL,
"messages": [{"role": "user", "content": "ping"}],
"max_tokens": 16},
timeout=60,
)
print(r.status_code, r.json().get("usage"))同一段代码换 BASE 和 MODEL 跑两遍,就能对比延迟、usage 字段和计费口径。切之前至少双写一周,把两边的输出抽样比对,别在发版当天换。
适合谁
- 个人开发者、原型验证、批量离线任务:中转的价格和支付方式省事,额度用完就停,不容易产生意外账单。
- 对数据出境、合同责任有硬要求的团队:官方直连,责任边界清楚。
- 生产环境:两边都接,主用一侧,另一侧做故障切换。请求封装里把
base_url做成配置,切换只改一行。
模型覆盖范围和每个模型的可用分组,去 模型总览 和 定价页 看;claude-sonnet-5 的参数在 模型页,选型思路可以翻 文章列表。
先拿一个非核心业务跑两周,把延迟、失败率和实际单价记下来,再决定主用哪边。
选型不是一次决定。业务量、合规要求、预算变了,答案也会变,半年复核一次。