跳到主内容

智能体成本怎么算:token、工具调用与重试的账本模型

100%
智能体成本怎么算:token、工具调用与重试的账本模型

用「单次调用价格 × 调用次数」估算智能体成本,误差通常在一个数量级以上。真实成本等于「单次调用价 × 有效调用次数 × 上下文膨胀系数」,其中有效调用次数 = 计划步数 × 重试倍率。下面给出可落地的账本模型、一个完整算例,以及五层限额的具体阈值。

为什么单次调用计算器一定会低估

四个结构性原因,按隐蔽程度递增:

  1. 循环把一切都乘上去了:产品里一个「任务」,在使用日志里是十几到几十次调用。
  2. 上下文会累积:第 12 次调用的输入,包含前 11 次的完整对话记录。经验法则是「系统提示词 + 最终对话长度的一半」。
  3. 工具返回值算输入 token:一个网页、一份 SQL 结果、一段文件 diff,模型都要按输入价付费读一遍。
  4. 推理 token 按输出计费:推理模型的思考过程是你付了钱但看不见的 token,规划步骤用了它,输出预算要显著高于可见答案长度。

账本模型:四个变量

变量含义怎么拿到真实值
S每任务的计划调用次数(步数 × 每步调用数)设计阶段估算,上线后用 trace 校正
R重试倍率 = 1 + 实测重试率从日志统计,不要拍脑袋;工具调用类智能体常见 15%–25%
T平均每次调用的输入 / 输出 tokentrace 里取中位数,注意把工具返回算进输入
P模型单价(输入 / 输出分别计)厂商定价页,注意缓存价与推理 token 价

公式:单任务成本 = S × R × (T_in × P_in + T_out × P_out)。月度成本再乘以任务量,并额外留 20%–30% 缓冲应对上下文漂移。

一个算例

假设一个「调研 + 写作 + 自审」智能体:8 步、每步 2 次调用 = 16 次计划调用,平均每次 6000 输入 / 800 输出 token,实测重试率 15%。

单次调用成本 = 6000/1M × 1.25 + 800/1M × 10 = 0.0075 + 0.0080 = $0.0155
有效调用次数 = 16 × 1.15 = 18.4
单任务成本   = 18.4 × 0.0155 ≈ $0.285
月度(1000 任务)= $285
模型档位单次调用单任务(18.4 次)1000 任务/月
轻量档$0.0031$0.057$57
主力档$0.0155$0.285$285
旗舰档$0.0540$0.994$994

只换模型就有 17 倍价差。但注意:把 8 步砍成 7 步,省下的钱通常比任何提示词压缩项目都多——少一步循环,等于同时省掉这一步的调用和它带来的上下文膨胀。

如果 6000 输入 token 里有 2000 是稳定的「系统提示词 + 工具定义」前缀,开启提示词缓存后这部分能拿到大幅折扣,上例可从 $0.285 降到约 $0.244,等于白捡 15%。长系统提示词的智能体必开。

五层限额,别只设一个总金额上限

单一总金额上限的问题在于「失效太晚」——等它触发时钱已经花完了。生产环境至少要五层:

  • token 层:单任务输入上限、输出上限(例:2 万 / 8 千)。
  • 模型调用层:单任务最多几次模型调用(例:12 次)。
  • 工具调用层:按工具类型分别限额(例:检索 5 次、写库 2 次)。
  • 重试层:区分错误类型——瞬时错误允许有限重试,校验类错误直接不重试。
  • 金额层:单任务硬上限 + 日预算(例:$0.75 / $100)。
预算管理器该怎么实现
在每次模型调用和工具调用前插入一个预算管理器:先估算成本并预留额度,执行后按实际用量核销,剩余额度不足以下一步时直接终止。底层用 Redis 或 Postgres 存额度,日志里记录 run_id 、 step_id 、预估成本、实际成本、剩余额度。这样限额才是「执行中拦截」,而不是事后报表。

降级规则要提前写死

预算快见底时降什么、按什么顺序降,必须在上线前定好,不能留给运行时临场决定:

  1. 模型降级:旗舰档 → 主力档 → 轻量档。
  2. 关掉非关键工具(如扩展检索)。
  3. 裁剪上下文:只保留最近 N 轮 + 任务目标摘要。
  4. 停止重试,返回部分结果。

原则是「清晰地结束」优于「昂贵地卡住」:如果剩余预算不足以安全完成下一步,就干净地终止,返回已完成的部分、停止原因和最省的下一步建议。

落地清单


  1. 接入 trace(Langfuse 、 OpenLLMetry 或自建),把 token 归因到 trace / span 级别。

  2. 统计真实重试率与每任务调用次数,替换掉设计阶段的估算值。

  3. 按上面的公式算出单任务成本,乘以月任务量再加 20%–30% 缓冲。

  4. 开启提示词缓存,把稳定的系统提示词与工具定义放进缓存前缀。

  5. 实施五层限额,并在预算管理器里做「预留 + 核销」。

  6. 写死降级顺序,剩余预算不足时干净终止并返回部分结果。

  7. 按「每成功任务成本」而非「每次调用成本」做持续追踪,并回灌到架构决策。

两个容易忽略的指标

  • 每成功任务成本:包含重试和返工的真实单位成本,比「每次调用成本」更能反映健康度。
  • 人工复核分钟数:不该一味压缩。合规、资金相关场景里,人工时间是成本的一部分,但砍掉它会把成本转移到事故上。

可观测性基础设施怎么搭,见 智能体可观测性怎么做;重试与降级的四层设计参考 智能体工具调用失败怎么办;并行工具调用带来的成本副作用,见 智能体并行工具调用;想省掉无效的自审循环,可以结合 智能体自我反思模式 一起看。


为什么我估算的成本和实际账单差这么多?
最常见的是漏算了三点:工具返回值计入输入 token 、重试倍率、以及上下文累积导致的后续调用输入膨胀。把这三个变量从 trace 里取真实值再算一次,误差通常能压到 10% 以内。

重试率多少算健康?
工具调用类智能体低于 15% 属于正常区间,超过 25% 就该查根因了——多数情况不是模型问题,而是工具参数校验、超时设置或返回格式不稳定。校验类错误不该重试。

先优化哪一步最划算?
按杠杆排序:减少一个循环步数 > 模型分级路由 > 提示词缓存 > 上下文压缩 > 提示词精简。少一步循环同时省掉调用成本和后续所有调用的上下文膨胀,通常比压缩提示词收益大得多。

单任务硬上限设多少合适?
没有通用值,但可以反向推:先算正常单任务成本,再乘 2.5–3 倍作为硬上限。正常成本 $0.285 的任务,$0.75 的上限既能容纳一次重试风暴,又不会让失控的循环无限烧钱。

这篇有帮助吗?
云上的幻象
云上的幻象查看主页

七彩云博客,分享 WordPress 建站实战与 AI 工具测评,覆盖服务器运维、站长工具、软件资源与电商运营干货,专注原创实用的主题插件、网站加速与安全优化教程。

958文章4评论

相关文章

评论 (0)

欢迎你,新朋友,感谢参与互动!文明发言,理性交流 · 首次评论将在审核后展示