Claude Prompt Caching (提示词缓存)
Prompt Caching 是 Anthropic 推出的一项突破性功能。它允许你缓存频繁使用的长文本(如整本书、庞大的代码库或复杂的角色设定),从而显著降低延迟并大幅减少费用。
#1. 为什么需要缓存?
在传统的 API 调用中,每次请求都要重新计算所有的 Token。
- 长文本场景:如果你每次都发送同一个 100K Token 的文档,成本会极高。
- 响应速度:处理大量上下文需要时间,导致首字延迟(TTFT)增加。
Prompt Caching 的优势:
- 省钱:缓存命中部分的费用最高可降低 90%。
- 提速:缓存命中部分的计算时间几乎为零,大幅降低延迟。
#2. 如何使用缓存?
你只需要在 messages 或 system 内容中添加一个 cache_control 断点。
#代码示例 (Python)
pythonimport anthropic client = anthropic.Anthropic() # 假设这是一段非常长的背景资料 long_document = "这里是 5 万字的法律条文..." message = client.messages.create( model="claude-3-5-sonnet-20240620", max_tokens=1024, messages=[ { "role": "user", "content": [ { "type": "text", "text": long_document, "cache_control": {"type": "ephemeral"} # 在这里设置缓存断点 }, { "type": "text", "text": "请根据以上条文回答:如果发生 X 情况,应该如何判罚?" } ], } ], )
#3. 核心限制与规则
- 最小缓存单位:
- Claude 3.5 Sonnet: 1024 Tokens 起步。
- Claude 3 Haiku: 2048 Tokens 起步。
- 缓存寿命:目前为 5 分钟(如果没有新的请求使用该缓存)。每次命中缓存,计时器会重置。
- 最大断点数:单次请求最多支持 4 个缓存断点。
#4. 推荐应用场景
#A. RAG 系统
将核心知识库或检索到的长文档缓存,用户针对同一文档进行多轮追问时极其高效。
#B. 角色扮演游戏
缓存庞大的世界设定、角色属性和剧情大纲。
#C. 编程助手
缓存整个项目的核心结构定义和 API 文档。
#5. 成本估算
缓存的计费分为两部分:
- 写入费 (Write Fee):首次存入缓存时的费用(比普通输入略贵)。
- 命中费 (Read/Hit Fee):从缓存读取的费用(极低,通常仅为原价的 1/10)。
结论:如果你的应用涉及 1000 Tokens 以上 的固定前缀或长文档,且用户会进行多次交互,务必使用 Prompt Caching。