site logo

Marico's space

如何区分模型、缓存和路由来比较 LLM API 网关价格

前端技术 2026-09-02 11:27:52 4

最近被问了好几次怎么对比 LLM API 网关的价格,发现很多人都在犯同一个错误——盯着一个数字看,结果选出来的方案反而更贵。这篇把问题说清楚,顺便拿 XiuRouter 当例子,手把手演示该怎么比。

同一模型在不同网关上往往有不同的计费维度:输入、输出、缓存读取、缓存写入各自单价不同。网关还可能通过多条服务组或协议路由暴露同一个模型。把这些维度混在一起比较,"看起来便宜"的方案在实际负载下可能更贵。

折扣百分比不是定价模型

对比两个方案之前,先把"在比什么"定义清楚。

一个可用的对比元组应该包含:

model
+ provider 或 source model
+ service group 或 route
+ API 协议
+ input 价格
+ output 价格
+ cache-read 价格
+ cache-write 价格
+ 货币和单位
+ pricing version 或 checked-at 时间

上面任何一个字段变了,就可能不再是同一个东西了。

举个例子:

  • 一个模型别名可能在后续指向不同的上游模型。
  • OpenAI 兼容路由和原生 Anthropic Messages 路由暴露的能力可能不同。
  • 成本更低的 service group 可能有不同的可用性边界。
  • 缓存输入价格和未缓存输入价格不能混为一谈。
  • 从截图里抄来的价格可能已经和线上目录不一致了。

第一条原则很简单:比较一条完整的路由,而不是一个模型名称。

把 Token 桶分开算

按 token 计费的 API 通常对不同 token 类型收取不同费率。

至少把这些桶分开:

  • 未缓存的输入 token
  • 输出 token
  • 缓存读取 token
  • 缓存写入或缓存创建 token

标准化的成本计算公式是:

cost = input_tokens × input_rate
+ output_tokens × output_rate
+ cache_read_tokens × cache_read_rate
+ cache_write_tokens × cache_write_rate

所有费率必须使用相同单位,比如每百万 token 的价格。

不要把缓存读取 token 加到未缓存输入里然后收两份钱。不要把输入费率套用到输出 token 上。不要假设缓存写入和缓存读取价格相同。

用真实负载给对比加权

输入密集型和输出密集型的工作负载可能从同一张价格表里得出完全相反的结论。

来看一个假设的例子:

路由 输入 / 1M 输出 / 1M 缓存读取 / 1M
路由 A ¥3.5 ¥35 ¥0.35
路由 B ¥7 ¥21 ¥0.70

假设某个负载使用:

  • 800 万未缓存输入 token
  • 200 万输出 token
  • 500 万缓存读取 token

加权后的成本:

路由 A = 8 × 3.5 + 2 × 35 + 5 × 0.35 = ¥99.75
路由 B = 8 × 7 + 2 × 21 + 5 × 0.70 = ¥101.5

路由 A 的输入价格更低。路由 B 的输出价格更低。单看任何一个数字都看不出最终结论。

这些数字是示意性的,不代表 XiuRouter 或其他提供商的当前价格。用实际费率和你的 token 分布替换进去。

保留可追溯的参考价格

省钱的主张需要有参考来源。

记录这些内容:

  • 参考模型
  • 提供商或发布来源
  • input、output、cache-read、cache-write 的参考费率
  • 使用的日期或定价版本
  • 对比的网关路由

如果网关把一个公开模型名映射到另一个 source model,这个映射必须在证据中可见。否则比较可能把两个不同的产品混在一起了。

XiuRouter 的公开定价 API 暴露了 pricing_version 和结构化的 reference_price 字段,包括 inputoutputcache_readcache_writesource_model。实时响应可能随着模型和路由变化而变化,所以把版本和对比结果一起存储,不要把单次响应当作永久数据。

服务组是价格的一部分

价格和路由不是独立的。

网关可以通过多个服务组暴露同一个模型。更便宜的组可能有不同的可用性、权限或上游特性。密钥也可能被限制只能访问部分组或模型。

因此,把选定的服务组纳入估算和验收测试。

不要用最便宜的可见组做计算,然后实际流量走另一个组。

协议兼容性是独立决策

价格不能证明客户工作流能用。

OpenAI Chat Completions、OpenAI Responses、Anthropic Messages 和 Gemini GenerateContent 有不同的请求结构和行为。能跑通一个端点不代表能跑通另一个。

接受更低价格之前,确认这些:

  • 客户端发送的是预期的协议
  • 路由支持需要的端点
  • 工具调用和流式输出在实际客户端下工作正常
  • 选定的密钥可以访问该模型和服务组

一个失败的请求不会因为 token 费率更低就变经济。

用真实请求验证估算

表格只是估算。

用你计划使用的客户端配置跑一个小型的非破坏性任务,然后检查网关的请求或使用记录。

对于 XiuRouter,验证这些:

  • 目标 API 密钥
  • 目标模型
  • 目标端点
  • 选定的服务组
  • 请求状态
  • input、output 和缓存 token 使用量
  • 记录的成本

如果使用记录和估算不符,在扩大流量之前先排查路由。

常见原因包括:

  • 客户端使用了旧的提供商配置
  • API 密钥选了不同的模型或组
  • 最终请求路径不是预期的协议路由
  • 缓存使用情况和假设不一致
  • 目录在估算之后发生了变化

把非 Token 成本明确列出

Token 费率不一定是完整的商业成本。

检查对比是否还需要考虑:

  • 货币换算
  • 预付费或充值手续费
  • 税费
  • 最低消费承诺
  • 订阅费
  • 失败请求计费规则
  • 图片、音频或其他非 token 定价单位

不要把这些成本藏在一个无法解释的系数里。

一个实用的对比清单

选路由之前,确认这些:

  • [ ] 模型和 source model 已确认
  • [ ] service group 已固定
  • [ ] API 协议已固定
  • [ ] input 和 output 费率使用相同单位
  • [ ] cache read 和 cache write 分开
  • [ ] 参考价格有来源和 checked-at 时间
  • [ ] 网关价格有 pricing version 或 checked-at 时间
  • [ ] 估算使用了有代表性的工作负载
  • [ ] 货币、税费、订阅、充值成本已包含(如适用)
  • [ ] 真实请求已通过预期路由完成
  • [ ] 使用记录匹配密钥、模型、组、token 桶和成本

这个方法得出的结论比"网关 A 永远更便宜"更小,但它是一个可以验证的结论。

XiuRouter 相关资料

当前模型和路由价格:XiuRouter 定价页面

机器可读的公开定价响应:XiuRouter API 定价端点

协议和端点边界:XiuRouter API 兼容性文档

价格、模型、服务组、协议支持和参考数据都可能变化。在用于生产决策之前,用线上目录重新跑对比,并用真实请求验证结果。