Title: 重命名一个工具,丢失全部缓存
Anthropic 的新缓存定价意味着,哪怕只是一个字符的微调——比如重命名一个工具或在系统提示词中添加时间戳——都可能将廉价的缓存命中(cache hit)变成全价的缓存未命中(cache miss),导致账单飙升数十倍。
这一变化源于 Anthropic 的两级缓存折扣。对于某些模型,缓存读取的成本仅为常规输入价格的 0.025 倍;对于其他模型,折扣为 0.1 倍。只有当请求与之前缓存的条目完全匹配时,折扣才会生效。未命中(miss)将按基础费率计费,因此命中与未命中之间的成本差距会急剧扩大。在实践中,一个微小的提示词改动就可能将成本推高至预期金额的 40 倍。
为什么这一变化至关重要
Anthropic 引入缓存层是为了鼓励重复使用相同的提示词,这在反复调用同一工具集的智能体(agents)中是一种常见模式。其思路很简单:将“提示词-工具”组合的结果存储一次,然后在后续调用中以低廉的价格检索。新的倍率使得“检索”端的成本大幅降低,但也让“未命中”的惩罚变得更加沉重。
那些围绕稳定的系统提示词构建智能体的开发者现在发现,任何偏差(无论是故意的还是无意的)都会破坏缓存链。其结果是对服务征收了一种“隐形税”:较低的缓存命中率会直接转化为更高的运营成本。
什么会破坏缓存
Anthropic 的文档描述了一个层级结构,其中高层级的任何变动都会使下层的所有内容失效。实际后果是,看似无害的编辑可能会引发连锁反应,导致全额计费。
- 工具定义 – 添加、删除、重命名工具或修改其描述,都会清除工具、系统提示词以及所有消息历史的缓存。
- 网络搜索开关 – 切换启用网络搜索工具的布尔值,会清除系统提示词和消息缓存。
- tool-choice 参数 – 调整选择运行哪个工具的参数,只会使消息缓存失效。
- 图像负载 – 添加或删除图像仅影响消息缓存。
开发者无意中触发的常见模式:
- 重新排序工具 – 某些代码库在每次部署时都会对工具字典进行排序。新的顺序会产生不同的缓存键(cache key),导致每次都无法命中。
- 带时间戳的提示词 – 在系统提示词中嵌入“生成于 HH:MM:SS”的字符串,会使每个请求都变得唯一,从而保证无法命中缓存。
- 轮换提示词片段 – 更换问候语或版本横幅会改变提示词的哈希值(hash),从而破坏缓存。
识别隐形成本
Anthropic 的使用日志通过三个字段展示了缓存动态:
cache_read_input_tokens– 从缓存条目中读取的 token。cache_creation_input_tokens– 导致存储新缓存条目的 token。input_tokens– 按常规费率计费的 token(缓存读取后的剩余部分)。
input_tokens 的突然上升伴随着 cache_read_input_tokens 的下降,预示着提示词栈中的某些内容发生了变化。通过监控这些指标,团队可以在账单飙升之前做出反应。
开发者的应对措施
面对新的定价现实,许多团队现在将提示词稳定性视为一项一等公民级别的性能指标。常见的策略包括:
- 静态系统提示词 – 将提示词存储在版本控制文件中,并在注入时避免运行时修改。
- 确定性的工具排序 – 直接在代码中定义工具列表,而不是依赖字典顺序或外部生成器。
- 移除时间戳 – 将日志或时间信息移至独立的元数据通道,使其不影响提示词字符串。
- 缓存感知测试 – 添加单元测试,以验证完整提示词(系统 + 工具 + 消息)的哈希值在不同构建版本中保持不变。
这些做法虽然增加了一定的工程开销,但可以防止缓存未命中所带来的“隐形税”。
Anthropic 的观点
Anthropic 认为,更深的折扣可以激励重复使用,从而减轻其服务器的整体计算负载。通过大幅降低缓存读取的成本,他们希望开发者能够设计出反复调用相同工具集的智能体,而不是不断地重塑提示词。这种权衡的结果是对不可重复调用的惩罚更高,公司表示,这会促使开发者养成更好的提示词规范(prompt hygiene)。
批评人士指出,许多现实世界的智能体需要实时调整提示词——添加上下文、时间戳或动态工具选择通常是必不可少的。对于这些工作负载,与那些无论缓存命中与否都收取固定费率的供应商相比,新的定价可能会降低 Anthropic 的吸引力。
后续关注点
- 价格修订 – 如果社区反馈显示命中与未命中之间的差距过大,Anthropic 可能会微调其倍数。
- 缓存控制功能 – 未来的 API 更新可能会允许开发者指定提示词的哪些部分应从缓存键中排除,从而提供一种折中方案。
- 竞争对手的反应 – 其他 LLM 供应商可能会调整自己的缓存模型以保持竞争力,要么提供更平坦的定价,要么提供更细粒度的缓存控制。
核心结论
随着 Anthropic 新的缓存定价机制的推出,提示词未命中的成本不再只是微不足道的麻烦,而是一个可能剧烈影响项目预算的财务杠杆。保持系统提示词、工具定义和相关元数据的不可变性,现在与编写高效代码同样重要。将提示词确定性视为一项可衡量指标的团队,将能够避免意外账单,并始终掌控其 AI 智能体的支出。
