财务要的那一行数字,不是每千 token 的单价
一位 COO 想把报价流程交给模型,问我单笔多少钱。供应商报价表上写着每百万 token 几美元,但那个数放进预算里没有用:财务要的是"处理一笔业务花多少钱",而 token 单价只是这个乘法的其中一项。能在财务面前站住的成本测算有三个变量:输入随步骤增长、输出随步骤增长、重试率。单位是单次成功执行的成本,不是单次调用的成本。
大模型调用成本测算能不能过财务那一关,取决于三个变量——输入增长、输出增长和重试率;其中重试率几乎所有人都默认填零,而它会把前两项一起放大。
哪三个变量在动这笔钱
三个变量都是倍数,只回答一个问题:账单为什么涨得比业务量快。
| 变量 | 它放大什么 | 测量方式 | 漏掉的后果 |
|---|---|---|---|
| 输入增长 | 每一步发出去的输入 token | 实测单步输入峰值 ÷ 第一步输入 | 输入项被低估,被低估最多的那一步恰好最贵 |
| 输出增长 | 每一步生成的输出 token | 实测单步输出峰值 ÷ 第一步输出 | 输出按新输入单价的数倍计费,漏掉它比漏掉输入项更贵 |
| 重试率 | 每一步被计费的次数 | 失败尝试 ÷ 全部尝试 | 全表等比放大,而且这项从日志里拿不到 |
输入增长不是 prompt 写得长,是循环本身的形状。带工具调用的流程里,第 n 步要发出去的是需求加上前 n-1 步的结果,所以每次调用都在重发一份越来越长的上下文。我实测过的五步流程,输入峰值落在第一步的一点四到二点二倍之间。
重试率为什么所有人都漏掉
漏掉重试率,通常不是疏忽,是数据里就没有这一项。大多数团队的日志以"一次业务"为单位:一次运行一行,成功了更新为成功。失败的那次尝试被后面的成功覆盖,于是从系统里查出来的重试率永远接近零。
真实情况是一次模型调用一行,包括抛异常的那次。用 output schema 卡结构失败时,输出 token 已经生成并且计费,重试不是一次免费的重来,是把上一步的输入和输出又原价买了一遍。
它藏得深还因为不制造事故。除了账单,它没有别的信号:延迟上升有监控,错误率有报警,而重试之后成功的调用看起来只是慢了一点。
它还会连带放大第一个变量。失败的那一步连同前面攒下的全部结果被重新发一次,输入增长在重试路径上照样生效。所以这三个变量不是并列关系,重试率乘在前面两项上。要把重试率从"大概是零"变成实测值,日志必须按尝试而不是按运行记账,再从调用日志里算出两个比值,这套口径可以看能扛住财务审阅的按 token 计价模型。
把三个变量放进一个能过会的模型里
下面每个输入都写明了假设,没有一处引用任何行业报告。假设一个五步、带工具调用的流程,每月一万次运行;稳定前缀 8000 token(系统提示、费率表、工具 schema),前缀以外的新输入 1500 token(客户需求、检索到的行、工具返回),每步输出 600 token,都按结构化的输出契约估出来。单价用供应商公开价目表:新输入每百万 2.50 美元,命中缓存的前缀 0.25 美元,输出 10.00 美元。
基线不含任何系数:每步 0.002 美元缓存加 0.00375 美元新输入,加 0.006 美元输出,等于 0.01175 美元;乘五步是 0.058750 美元;乘一万次运行,每月 587.5 美元。这个数字很舒服,问题在于它不对。
把三个变量一次一个地加进去,每一步都在上一步的基础上加:
| 成本模型 | 单次成功执行 | 每月 | 这一步的增量 |
|---|---|---|---|
| 一项都不加 | 0.05875 美元 | 587.5 美元 | 基准 |
| 再乘输入增长 1.6 | 0.07000 美元 | 700.0 美元 | +19% |
| 再乘输出增长 1.4 | 0.08200 美元 | 820.0 美元 | +17% |
| 再乘重试率 1.18 | 0.09676 美元 | 967.6 美元 | +18% |
三个变量都进去之后,单次成功执行是 0.09676 美元,每月 967.6 美元,比基线高六成五,多出来的三百八十美元全是这张表原先没算的东西。输出增长单独贡献一百二十美元;重试率单独一百四十七美元一个月、全年一千七百多美元,它在很多测算表里根本不存在。
最后一行最容易被跳过。前两项至少要有人在方案里写下"假设输入会涨一点",重试率连这句假设都没有。那个 18% 来自我实测过的报价类流程,不是行业基准,你的重试率一定不同,但几乎不可能比零更低。
缓存生效与否,是这张表最脆的一处
如果缓存没有生效——系统提示里插一个时间戳,或者把波动数据放在了稳定块前面——那 8000 token 的前缀每次都按每百万 2.50 美元计费,每步多出 0.018 美元,代入三个变量之后是 0.20296 美元,每月 2029.6 美元,比缓存生效时高 110%,一年多花一万两千多美元。
同一套流程、同一个模型、同一批业务,只是缓存前缀是否真的字节一致,账单就翻一倍。测算表必须写明勾选了哪些前提:不写,评审会上就没人知道该质疑哪一行。
进评审会之前,先把尝试日志加一行
最小可行的做法是让日志以一次模型调用为单位,记下结果、步骤号和两边的 token 数,成功失败都写一行。这大概是一个工程师半天的改动,不需要等系统上线——把现有的失败调用捞出来,前两个比值当天就能算。
如果月调用量还很低,建这套账的成本会超过它带来的可见度,那就先用保守默认值——重试率 25%、输入增长 2.0——但在文档里标注这是估计值,量级上来之后重算。
评审会上那一页只放五行:三个实测变量,单次成功执行成本,以及业务量从一万涨到三万时这张表怎么变。止损条件也要自己先写:重试率连续两周超过 35%,先停下来查输出契约,那是输出契约的问题,模型降价解决不了;加上三个变量之后单次成本仍然显著低于现有人工,这项工程值得继续投;全年业务量到不了几千次的流程,人工处理更便宜。
成本测算的价值在于它事先发生
三个变量里,输入和输出增长都能在方案里写个假设再改,只有重试率改不了,因为它没有被记下来过——我见过的超额都发生在第四个月,而那时预算已经批了。
在把测算交给财务之前,先确认自己知道这两个数从哪里来:日志里每个模型调用一行,还是每次运行一行。如果答案是后者,那张表里的重试率就是零,而它不可能是零。如果已经试点过一次、现在要判断该不该继续投,值得先花半天把尝试日志补上,再决定模型选型;选型能省的钱,通常少于漏掉重试率多花的钱。
继续阅读
- AI 的投入产出比算不清,问题不在模型,而在这三笔没算的账2026-03-186 分钟AI 成本与回报
- 企业已有的数据资产其实够用了,缺的是把业务副产品变成可查询资产的那份 schema2026-02-026 分钟AI 成本与回报
- 如何用 Next.js 与 MCP 构建零边际成本的企业级 AI 工作流2026-02-1811 分钟AI 系统架构