中转站的「倍率」到底怎么算?把一张账单拆开看
倍率是中转站最常见的报价方式,也是最容易被误读的数字。0.8x 听起来像打八折,但它乘的是哪个价、按什么单位结算、缓存命中算不算,各家口径并不统一。这篇把一次请求的账单拆开,说清倍率作用在哪一层。
倍率是乘法,不是折扣
倍率的完整含义是:你付的钱 = 官方单价 × 倍率 × 用量。官方单价按每百万 tokens 计,输入和输出分开定价,两者差价通常在 3 到 5 倍。
所以看到「全站 0.8x」时,真正该问的是三件事:
- 乘的是哪个官方价。GPT-4o 和 GPT-4o mini 差着一个数量级,不写清模型的「官方价」没有意义
- 输入和输出是同一个倍率吗。有的站只对输入打折,输出按 1.2x 甚至更高结算
- 汇率按多少算。官方以美元计价,中转站按人民币结算,7.2 和 7.6 之间差着 5%
这三个问题里任何一个含糊,标出来的倍率就不具备可比性。
一次请求的账单分三块
拆开任何一家的计费明细,都能还原成这三项相加:
- 输入 tokens:你发过去的全部内容,包括系统提示词、历史对话、工具定义。多轮对话里这一块会随轮次线性膨胀
- 输出 tokens:模型生成的内容。推理模型还要额外计入思考过程的 tokens,这部分你在响应里看不到,但会出现在账单上
- 缓存命中部分:命中前缀缓存的输入 tokens 单独计价,通常只要原价的 10% 到 25%
第三块是最容易被忽略的。如果你的应用有一个几千 tokens 的固定系统提示词,每次请求都重复发送,开不开缓存的成本差距会非常明显。
把倍率换算成「每万次请求成本」
倍率之间横向对比很难有直观感受,换成业务口径就清楚了。假设一个客服场景,单次请求输入 2000 tokens、输出 500 tokens:
单次成本 = (2000 ÷ 1,000,000 × 输入单价 + 500 ÷ 1,000,000 × 输出单价) × 倍率 × 汇率
把两家的报价代进同一个公式,再乘一万,得到的数字才可以直接比较。只比倍率会得出错误结论:一家输入 0.7x、输出 1.3x 的站,在输出密集的场景里比统一 1.0x 的站更贵。
先算清楚自己的输入输出比例,再去看报价。写代码补全、长文摘要、对话客服,这三类场景的输入输出比完全不同。
容易被漏算的几项
思考 tokens。 推理类模型的思考过程按输出价计费,而且量不小。同一个问题,推理模型的账单可能是普通模型的好几倍,但响应里只看到最终答案,很容易误判单价。
失败请求。 超时、限流、内容审核拦截,这些请求是否计费各家规则不同。正常的做法是失败不计费,但有的站会把已经产生的输入 tokens 算进去。压测前先问清楚。
最低计费单位。 少数站按请求次数设最低消费,短请求会被抹到一个固定值。做高频短请求的场景要特别留意这条。
充值赠送额度的有效期。 赠送部分往往有期限,且优先扣减。看起来余额充足,实际可用的现金余额可能已经不多。
自己核账的最小办法
不用等月底对账,一次请求就能验证:
python
from openai import OpenAI
client = OpenAI(api_key="YOUR_KEY", base_url="https://your-relay/v1")
r = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "用一句话解释什么是倍率"}]
)
print(r.usage) # prompt_tokens / completion_tokens / total_tokens
拿到 usage 里的实际 tokens 数,代入上面的公式手算一遍,再去后台看这次请求扣了多少。两个数字对得上,说明计费口径和它宣称的一致;对不上,就该问客服要一份计费说明。
建议在正式接入前跑三组:一次短请求、一次长上下文请求、一次命中缓存的重复请求。三组都能对上账,这家的计费才算透明。
结论
倍率是个有用的简写,但它不能单独作为选型依据。真正要确认的是:乘的是哪个官方价、输入输出是否同倍率、汇率多少、缓存怎么计、失败请求算不算钱。
这五项都能问出明确答案的中转站,通常在别的方面也比较规矩。反过来,只肯给一个笼统倍率、追问细节就开始绕的,价格再低也要谨慎。关于如何系统地评估一家中转站,可以参考如何识别靠谱的 AI API 中转站。