账单结构剖析

以一次 $0.19 的 agent 任务为样本,分解 system prompt、tool descriptions、history、tool results、output 五类来源的成本占比,并对比同任务在不同模型上的成本变化。

关于数据:本页所有 token 数与金额为合成示例(synthetic example),按 Claude Sonnet 4.6 公开单价(input $3/MTok、cache write $3.75/MTok、cache read $0.30/MTok、output $15/MTok)与一个 12 步典型任务的量级推算得出。用途为演示账单结构——绝对值不可作为报价依据。Agent 产品真实任务的分项占比与下表接近,绝对值因任务复杂度变化在 3-5 倍区间。

任务场景

样本任务:用户请求 agent 整理 Gmail 收件箱,将最近 20 封邮件按所属项目分类。Agent 在 12 步内完成——4 次 extract 读取邮件元数据,8 次通过浏览器自动化工具的 click 应用标签。

选取 12 步作为样本的依据:该长度落在中等任务区间。1-2 步的极短任务系统 prompt 占比异常偏高(启动开销未被摊薄),数十步的长任务 history 占比显著上升(累计基数增大)。本节结论对中等长度任务的代表性最强。

分项成本表

成本构成 — 一次 12 步任务的账单分解 Claude Sonnet 4.6 · 合成示例 · 总成本 $0.194 · history 占大头 Conversation history Model output Tool results System+tools 41% 23% 22% 13% <1% 说明:Conversation history = 前序回合作为 input 重复发送;Tool results = 工具返回值(计入 history); System+tools = 静态前缀(首步后命中 cache);Sandbox+storage = 计算 + R2(基本可忽略)。

每一行表示一类 token 的累计用量与对应成本:

来源Token 用量单价成本占比
System prompt(cache 命中)2.5K 写入 + 27.5K 命中写 $3.75 / 读 $0.30$0.0189%
Tool descriptions(cache 命中)1.2K 写入 + 13.2K 命中写 $3.75 / 读 $0.30$0.0084%
Conversation history(未 cache)26.4K$3.00 / MTok$0.07941%
Tool results(未 cache)14.4K$3.00 / MTok$0.04322%
Model output3.0K$15 / MTok$0.04523%
Sandbox + 存储1 session、~1MB R2集群分摊~$0.001<1%
合计$0.194100%

表中”cache 命中”指 Anthropic Prompt Caching 在重复发送相同前缀时的命中机制。System prompt 与 tool descriptions 是每步重复发送的静态前缀,首次写入 cache 后,后续 11 步全部命中。

三项核心观察

History 是最大成本项

41% 的成本用于重复发送历史对话。Agent 每执行一步,前序所有步骤的 user message、assistant message、tool result 均作为 input 重新发送。12 步累计后,history input 达到 26.4K——约为 model output 的 9 倍、system prompt 的 10 倍。

累计成本随步骤数 O(n²) 增长:第 N 步需重发前 N-1 步全部历史,总和为 1 + 2 + ... + (n-1)。几乎所有成熟 agent 产品都有 prompt compaction 这一独立机制(参考实现:compaction)——未启用历史压缩时,账单按任务长度的平方放大。

静态前缀的 cache 命中收益显著

System prompt 部分若未启用 cache,理论成本为 $3 × 30K / 1M = $0.09;启用 cache 后实际成本 $0.018——节省约 80%。Tool descriptions 同理。

prompt-system 将所有每步重复的内容前置即基于此考量,使 Anthropic / OpenAI 的 prompt cache 从第二步开始命中。Cache 命中率是连续变量而非二值开关:从 60% 提升至 80% 的节省幅度通常大于手动缩减 prompt 的节省幅度,因为该百分比作用于整段静态前缀,而手动缩减仅能减少局部内容。

Output 单价为 input 的 5 倍

$15 / $3 = 5。良好的 agent 提示设计因此倾向于减少推理输出、增加工具调用——降低长篇分析,提高直接 tool_call 比例;工具返回精炼数据而非由模型复述。

Agent 产品工具的常见设计模式都基于该原则——browser 工具 以短 uid 替代长 CSS selector、extract 默认返回 markdown 而非 raw HTML、read_file 按 page 截断而非完整传回模型。每项设计在压缩 input 的同时间接压缩 output——模型可见信息减少,复述内容相应减少。

同任务在不同模型上的成本对比

同任务三模型 — 15× 成本跨度 12 步收件箱整理 · 合成示例 · 把简单任务路由到 Opus 直接乘 15 Haiku 4.5 ~$0.065 约比 Sonnet 便宜 3× Sonnet 4.6 $0.194 基线 · 大多数任务默认 Opus 4.7 ~$0.970 ~5× Sonnet · ~15× Haiku — 仅保留给需要深度推理的场景 估算假设三模型 token 用量相同。实际上小模型常需要更多步骤,真实差距约为 Haiku ↔ Sonnet 2×、Sonnet ↔ Opus 4×。

成本表中仅存在一项乘法调整:模型切换。其他优化均为加法调整(减少 token、扩大 cache 命中范围),切换模型直接按比例缩放整张表。

模型InputCache writeCache readOutput本任务估算
Claude Haiku 4.5$1.00$1.25$0.10$5.00~$0.065
Claude Sonnet 4.6$3.00$3.75$0.30$15.00$0.194
Claude Opus 4.7$15.00$18.75$1.50$75.00~$0.970

估算假设三个模型 token 用量一致。实际场景中,小模型完成同任务通常需要更多步骤(推理质量较弱、绕路较多),因此 Haiku 实际成本接近 Sonnet 的 1/2 而非 1/3;Opus 反之——单次推理更精确、步骤数更少,单步费用大幅上升。

Tier 系统的本质即模型预算的分层:Lite 默认配置 Haiku,覆盖常规任务;Ultra 默认配置 Opus,预留给需要深度推理的复杂场景。将 Haiku 可处理的任务路由至 Opus,账单近似乘以 15。

后续阅读

这页有帮助吗?