通过简单脚本对比LLM网关与官方的token计费差异,揭示不同服务商同一模型定价可差一个数量级,提供实操检查方法。
你想尝试三个来自不同供应商的模型,所以你做了合理的事:将一个客户端指向网关,在环境变量里放一个密钥,然后不再去想它。这里的网关是一种服务,它能说 OpenAI 的 API 语言,并将你的请求转发到 Anthropic、Google、OpenAI、xAI 等平台,这样切换模型只需要改一个字符串,而不需要引入新的 SDK。
几乎没有人会检查的是:网关对这些完全相同的 token 收取的费用,与供应商直接销售给你的价格相比是多少。
你实际从网关购买的东西
三样东西,它们的价值截然不同。
一把钥匙和一张发票。这个是真的,而且很无聊。但它为你省去了三次注册和三个计费页面。
路由和降级。如果某个供应商返回 529 或者某个区域断线,网关会在其他地方重试。这对生产流量有一定价值,对周末项目毫无价值。
每个 token 的价格。这是因服务商不同而相差一个数量级的项目,也是没有人把它放进对比表格的项目——因为根本不存在一个单一的"网关价格"。每个模型都有自己的价格,服务商可以在某个模型上低于供应商定价,在另一个模型上远远高于定价。
顺便解释一下术语,以防陌生:模型按每百万 token 计费(一个 token 大约是 ¾ 个单词),输入和输出分别计价,输出通常贵 3–10 倍。定价页上公布的是供应商自己发布的价格,这就是你的基准线——网关要么低于它,要么等于它,要么在上面加价。
十七行代码回答这个问题
很多网关会在其 models 端点上公布每个模型的定价。如果你的网关也这样做了,下面这段代码可以读取并计算出你的 token 组合的实际价格,而不是跑 benchmark 的:
import json, urllib.request
GATEWAY = "https://api.altrouter.ai/v1/models/public" # your gateway's models endpoint
LIST = {"claude-sonnet-5": (2.00, 10.00), "gpt-5.6": (2.50, 15.00)} # vendor list $/1M in, out
MIX = (200, 40) # your monthly millions of tokens: input, output
req = urllib.request.Request(GATEWAY, headers={"User-Agent": "price-check"})
models = json.load(urllib.request.urlopen(req))["data"]
for m in models:
inp, out = m["pricing"].get("prompt_per_1m_usd"), m["pricing"].get("completion_per_1m_usd")
if m["id"] not in LIST or inp is None:
continue
li, lo = LIST[m["id"]]
mine = MIX[0] * inp + MIX[1] * out
vendor = MIX[0] * li + MIX[1] * lo
print(f"{m['id']:<18} gateway ${mine:>8.2f} list ${vendor:>8.2f} {mine / vendor - 1:+.1%}")
在 2026-08-14 运行这段代码对代码中的端点进行查询,它输出:
gpt-5.6 gateway $ 935.09 list $ 1100.00 -15.0%
claude-sonnet-5 gateway $ 677.91 list $ 800.00 -15.3%
如果你的网关没有在那个端点上公布定价——相当多的网关都没有——那就用发票法:用上月账单金额,除以网关记录的输入和输出 token 数,就能得到你实际的、有效的 $/1M。这个数字才是唯一重要的数字,也是你应该拿来和供应商官网对比的数字。
一个很明显的异议:那个 token 组合是假设的。确实如此——在相信任何输出之前,把 MIX 换成你自己的两个数字。输入和输出 token 之间的比例取决于具体工作负载,而由于输出成本是输入的几倍,聊天类工作负载和文档摘要类工作负载会给网关排出不同的名次。
切换之前我要检查的四件事
每个模型在你自己的 token 组合下的价格。用上面的脚本。在小模型上便宜的网关可能在你的大模型上反而贵。
base_url 是否真的是唯一的变更。测试流式调用、tool calls 和响应中的 usage 对象。兼容性通常就是在这几处出问题。
供应商断供时会发生什么。明确询问重试和降级行为,然后拔掉一个模型观察实际表现。
你的退出机制。如果离开意味着除了改一个 URL 和一个密钥之外还要重写任何东西,那这不是网关,是一个平台。
坦白说一下:代码片段里的 URL 是我的:我工作在 altrouter.ai,所以我能硬编码一个公布了定价的端点。它以低于定价转售供应商的模型——Claude Sonnet 5 每 1M 输入 $1.69 / 输出 $8.50,而官方是 $2.00 / $10.00,Opus 4.5 是 $3.74 / $18.75 对比 $5.00 / $25.00,各模型折扣从 10% 到 25% 不等,价格截至 2026 年 8 月。把脚本指向你目前在用的网关,计算不会说谎。
这段代码没有告诉你的事
只有价格,而且仅仅是价格。脚本没有涉及延迟、正常运行时间、速率限制,或者 prompt caching 是否按照供应商的折扣透传——这些要单独检查,它可能超过 15% 的价格差距。我这边诚实交代的缺陷:没有 embedding 模型、没有数据驻留选项、没有我们自己独立的 SLA(只有上游供应商的)。如果你只用一家供应商且不打算换,直接向供应商购买——你刚好省掉了中间人的利润。
这周就在你自己的网关上跑一下这十七行代码。无论数字是多少,知道它比假设方便是免费的要好。