Prompt Caching
提示词缓存把不变的 system / 工具描述缓存住,下次只算新增部分——大幅省钱。
详解
Prompt Caching(提示词缓存)是把请求中不变的前缀部分——如冗长的 System Prompt、工具描述、大段背景文档——计算结果缓存到服务器,下次相同前缀直接命中缓存、跳过重新计算,只处理新增的部分。Anthropic 的缓存写入不是免费:5 分钟缓存写入约按普通输入价的 1.25 倍计费,1 小时缓存约 2 倍;但命中读取只按普通输入 token 的 10% 计费,之后每次命中都能节省约 90% 的前缀输入成本,同时 TTFT 也会下降。使用方式是在 API 请求的内容块上添加 cache_control 字段,标注哪里是"可缓存前缀"的结束点。适用场景:多轮对话中固定不变的 System Prompt、RAG 里重复使用的参考文档、Agent 里大量工具的 JSON 描述。
一个类比
就像餐厅的备料:大厨每天早上把洗菜、切肉、熬汤底这些慢工夫一次性做完放着(写缓存)。中午客人点菜,厨师直接从备料里取用,几分钟就出锅,不用重头把汤从水开始熬——省时省力,账单也少。换个客人点同款菜,备料还在,继续快速出菜。
举个例子
import anthropic
client = anthropic.Anthropic()
# 假设我们有一份超长的产品手册,每次提问都需要带上它
long_manual = "[产品手册全文,假设有 50000 字...]"
# 使用 cache_control 标记这段前缀可以被缓存
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=256,
system=[
{
"type": "text",
"text": long_manual,
"cache_control": {"type": "ephemeral"}, # 5 分钟缓存
}
],
messages=[{"role": "user", "content": "产品的退货政策是什么?"}]
)
# 第一次调用:写缓存,5 分钟缓存写入约为普通输入价的 1.25x
# 第二次起相同前缀:命中缓存,读取成本约为普通输入价的 0.1x
print(response.usage) # 可查看 cache_creation_input_tokens / cache_read_input_tokensPYTHON 示例
相关概念
- → Token Cost· 成本核算
- → Latency / TTFT· 延迟与首 Token 时间