跳到主要内容

token 经济学

prompt caching 如何复用 KV 降本、断点规则是什么、多轮 agent 的成本累积模式

核心要点

  • prompt caching 复用 KV、跳过 prefill,读价约 10%
  • 断点最多 4 个,前缀一变全失效
  • 稳定前缀前置以最大化缓存命中
  • 多轮 agent 的 input token 随步数平方累积
  • model routing 是最大单项成本优化

本文讲 agent 的 token 成本管理。这里的 caching 是 KV 复用降本,与 03-记忆系统 的 compaction(压缩历史)是两回事。

prompt caching 怎么省钱?

核心问题:每轮都把相同的 system prompt 和工具定义重发一遍,这部分能不能不重复计费?

prompt caching 把稳定前缀的 KV 矩阵存在服务器,命中时跳过最贵的 prefill 计算[1]。要理解它得先看推理的两个阶段:

  • prefill:一次性计算全部输入 token 的 KV 矩阵——这是最贵的一步,成本随输入长度增长。
  • decode:逐 token 生成输出。

prompt caching 缓存 prefill 阶段算出的 KV,命中时直接加载、只处理新内容,既降延迟又降成本——缓存读取定价约为正常输入的 10%。可借鉴的判断:重复的前缀越长,跳过的 prefill 越多,省得越多

缓存断点怎么放才命中?

核心问题:缓存不是自动的吗,为什么放错位置就不省钱?

Anthropic 靠显式断点 + 前缀哈希,任何断点前的字符变化都会让该缓存完全失效[1]。命中规则很硬:

  • 断点:最多 4 个 cache_control 标记,命中时系统对前缀做累积哈希,未命中向前回溯最多 20 个 block。
  • 失效:断点之前哪怕改一个字符,该断点的缓存条目整个作废。
  • TTL:默认 5 分钟(写入价 1.25×),可设 1 小时(写入价 2×);读取价 0.1×。

陷阱:把时间戳、随机 ID 放在 system prompt 开头,会让整个缓存每次都失效。变化的内容必须放在所有稳定内容之后

这条直接推出布局规则:system prompt + 工具定义(最稳定)放最前、断点设在它们末尾,对话历史等变化内容放后面。与 04-窗口内信息组织 的"稳定前缀前置"同源。OpenAI 则是全自动缓存(1,024 token 起、折扣可达 90%),无需手动断点。

一个具体的成本算例怎么算?

核心问题:caching 到底能省多少,能不能算给我看?

用一个 10 轮 agent 任务算:固定前缀 8,000 token + 每轮新增 500 token,加 caching 省约 60–66%[2]。以 Sonnet 量级定价(基础 $3/MTok、5 分钟写入 $3.75/MTok、读取 $0.30/MTok)粗估(含每轮少量输出):

  • 无 caching:每轮都全额计费固定前缀,10 轮重复计费 10 次,总成本约 $0.30–0.40
  • 有 caching:第 1 轮写入缓存(1.25× 价),后 9 轮固定前缀走读取价(0.1×),总成本约 $0.10–0.15,省约 60–66%。

固定前缀越大,省得越多:前缀到 50K+ token 时节省可达 85–90%(与官方多轮对话案例吻合)。可借鉴的判断:agent 的 system prompt 和工具定义越大,caching 的 ROI 越高——这也是为什么 caching 对 agent 比对单轮聊天划算得多。

为什么 agent 的 token 成本会爆炸?

核心问题:单轮调用不贵,为什么 agent 跑一个任务账单高得多?

因为每一步都要重发全部历史,累积 input token 随步数近似平方增长。第 N 步的输入包含前 N-1 步的全部内容,由此推导:一个 10 步任务的 input 成本远高于单步的 10 倍。

两个放大因素:固定 overhead(system prompt + 工具定义,常 2,000–8,000 token)在无 caching 时每次全额计费;输出 token 定价约为输入的 5×(如 Sonnet 量级 $15/1M 对 $3/1M),控制输出长度和减少步数同样重要。这正是上一节 caching 算例要解决的问题——把重复的固定前缀从"每轮全价"降到"一次写入 + 多次 0.1× 读取"

怎么把成本压下来、不失控?

核心问题:除了缓存,还有哪些手段,怎么防失控烧钱?

三类手段叠加 + 分层预算:model routing 收益最大,软限降级而非报错

手段机制
model routing强弱模型分层(Haiku/Sonnet/Opus),子任务用廉价模型
prompt caching稳定前缀 KV 复用,读价约 10%
工具结果截断历史深处的原始工具输出裁剪掉(见 04)

@tbl-agent-ctx-cost-reduction agent token 成本压降手段:model routing、prompt caching、工具结果截断三类方法及其机制

可借鉴的优先级:先做 model routing(单项收益最大),再上 caching,最后做工具结果裁剪。预算则分层设限(per-step / per-run / per-user / 组织级),触达软限时降级模型或缩减上下文,而非返回错误中断任务——既控成本又不牺牲可用性。

Takeaway

知识点核心结论
KV cache缓存 prefill 的 KV,命中跳过最贵的计算,读价约 10%
断点规则最多 4 个,前缀一变全失效,变化内容必须放后面
成本算例8K 前缀 + 10 轮,caching 省约 60-66%;50K+ 前缀省 85-90%
成本爆炸多轮 input 随步数平方累积,输出约为输入 5× 价
优化与预算routing > caching > 截断;分层设限,软限降级不报错

参考资料

  1. Anthropic. Prompt Caching. 2025. https://platform.claude.com/docs/en/build-with-claude/prompt-caching
  2. Anthropic. Pricing / Prompt caching cost examples. 2025. https://platform.claude.com/docs/en/about-claude/pricing

延伸阅读