很多人第一次在 OpenRouter 上跑 Claude,看到余额掉得比预期快,却说不清钱花在哪:是单价高,还是走了一层加价,还是输入输出比例不对。这篇不背具体数字,只把计价口径拆开——哪些字段决定你这一单的价格、哪些因素会在此基础上加码、去哪几页核对当时的真实数字。看完你能自己算出一次任务的量级,也能判断账单对不上时该从哪一项查起。
很多人第一次在 OpenRouter 上跑 Claude,看到余额掉得比预期快,却说不清钱花在哪:是单价本身高,还是中间走了一层加价,还是输入输出比例搞反了。这篇不背任何具体数字,只把计价口径拆开讲——哪些字段决定你这一单的价格、哪些因素会在此基础上加码、去哪几页核对当时的真实数字。
看完你应该能自己算出一类任务的成本量级,也能在账单对不上时知道该从哪一项查起。结论给不了绝对答案,因为 OpenRouter 是聚合入口,报价跟着上游走,你看到的数字永远以当天页面为准。
先搞清 OpenRouter 按什么收钱
OpenRouter 是聚合入口,不是模型厂本身。计价单位仍然是 token,但要分清输入、输出、缓存读、缓存写这几项是分开标价的,不是一口价打包。很多人估错,就是因为只看了其中一个数字就乘总量。
- 同一个 Claude 型号在页面上往往对应多行报价,因为每家上游提供方的单价不一样,别看到一行就当成唯一价格。
- 先确认你看的是「按 token 单价」还是「按次或按量折算」,两种口径不能直接互相比较。
- 不确定时把单价代进一次典型任务,用 /tools/token-price-calculator 换算成单次成本再判断贵不贵。
- 官方侧口径到 /official-api/providers/anthropic 核对,聚合侧对照在 /openrouter 页面,两边字段名可能不一样,含义要对齐。
| 计费项 | 什么时候产生 | 容易忽略的点 |
|---|---|---|
| 输入 token | 你发出去的提示词、上下文、文档 | 长系统提示和长文档都算在里面 |
| 输出 token | 模型生成的内容 | 让它写长,花的是另一项的钱 |
| 缓存读 | 命中缓存的部分 | 没命中就按普通输入算 |
| 缓存写 | 写进缓存的动作 | 不是所有链路都会真正写进去 |
判断标准很简单:如果你算出来的量和账单差得离谱,先回头确认自己用的是哪一种口径,而不是急着怀疑被加价。不同口径之间差一倍以上很常见。
倍率从哪来,什么时候会加价
页面上的 token 单价通常已经含了聚合层服务费,但充值、结算环节还可能再叠一层汇率或手续费口径。这部分属于站点侧规则,不在模型单价里,你拿模型单价去倒推余额,自然会对不上。
另一个变量是路由。开着自动选路、优先低延迟这类设置之后,同一段提示词两次调用可能落在不同上游提供方上,报价也跟着变。你以为在比一个价格,其实在比多个。
- 聚合层服务费
- 通常已含在页面 token 单价里,不用另算
- 结算侧手续费
- 充值或结算环节的站点规则,不在模型单价内
- 路由切换
- 自动选路导致同一提示词落到不同报价的上游
- 充值汇率口径
- 按哪个币种、哪个时点折算,属于站点规则
不适用的情况要讲清:如果你只调用单一固定提供方、也没开自动选路,那倍率这块的波动对你影响很小,重点回到输入输出比例上就行。
账单和预估对不上时按什么顺序查
- 第一步:看输入输出比例长系统提示、整份长文档塞进输入,和把结果写很长,花费完全不是一回事。先把这两项分开估,再看哪个偏得多。
- 第二步:确认缓存有没有真命中命中缓存和未命中的计费项不同。别按理想命中率估算,去实际调用记录里看这条链路到底命中没有。
- 第三步:查重试和路由切换失败重发、被限速后换提供方再发,都可能产生第二次计费。倒推流程参考 /cost-estimation-from-usage。
- 第四步:查是不是调价了前三步都排完还差很多,再去 /price-watch 看当时价格有没有变动,这类变化不会提前进你的预估表。
这个顺序的价值在于从高频原因往低频原因走。比例问题最常见,调价最少见,但很多人一上来就怀疑调价,白白绕了一圈。
想把 Claude 这块成本压下来,能动的几个旋钮
- 换档位:短任务、格式整理、批量打标这类活,用轻量型号就够,别默认上旗舰;到 /models 挑的时候把输入输出单价一起看,别只看一个。
- 切任务路径:把一次性长上下文改成先检索再喂,能把输入 token 量级降下来,这是最直接的省钱位。
- 设闸:给 key 设用量上限或预算告警,跑飞了当晚就能发现,分层做法看 /budget-alert-setup-guide。
- 定期看趋势:到 /price-watch 关注你常用型号的报价走向,涨了再回头调路由策略。
| 任务类型 | 优先动的旋钮 | 什么情况下别省 |
|---|---|---|
| 短文本整理、打标 | 换轻量型号 | 需要长链推理时别换 |
| 长文档一次性问答 | 改先检索再喂 | 必须整份吃下时老老实实付 |
| 多轮对话 | 看缓存能不能命中 | 上下文每轮都变时缓存帮不上 |
| 批量跑飞风险高的活 | 先设预算告警 | —— |
哪些情况不该省:需要长链推理、要一次吃下整份长文档的任务,换便宜型号会带来反复重试,总账反而更高。省钱的前提是任务能一次做对。
下一步:把口径和数字分开看口径搞清了,剩下的就是看当天的真实数字。先去 /openrouter 对照聚合侧报价,再去 /price-watch 看你常用型号的价格走势,两边对着看,账就不会算糊涂。→常见问题
OpenRouter 上的 Claude 价格和 Anthropic 官网一样吗?
通常不完全一样。OpenRouter 是聚合层,会按上游提供方报价展示,可能含服务费或结算差异;而且同一型号可能对应多个提供方、多行报价。要比就先把两边口径对齐——官方页看单价结构,OpenRouter 侧看实际结算口径,别拿一行的数字直接对比。
为什么我同一段提示词两次调用花的钱不一样?
常见三个原因:一是路由落到了不同上游提供方,报价不同;二是缓存命中情况不同,命中与未命中计费项不一样;三是中间发生过重试或限速重发,等于多算了一次。想定位就先固定提供方、关掉自动选路,再观察两三次调用是否稳定。
想控制预算,是该换型号还是该换调用方式?
先看调用方式。多数场景里,把长上下文改成检索式喂料、把不该带的历史消息裁掉,省下来的量比换型号更可观,而且不影响输出质量。调用方式压到位之后还嫌贵,再考虑把非核心任务换成更轻的型号,两件事分开做,才看得出是哪一刀起了作用。