提示与结果缓存(Anthropic、Vertex)
Anthropic 提示缓存和 Vertex 缓存可将长而重复的系统提示的输入成本降低十倍。
提示与结果缓存(Anthropic、Vertex) 是 CoddyKit 上的免费 AI Agents 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。
为什么要缓存
许多智能体调用几乎完全相同:相同的系统提示词、相同的少样本示例,只有用户输入不同。如果不使用缓存,每次调用都要重新处理静态部分。
缓存可以将输入令牌成本降低 10 倍。
两种缓存方式
- 提示词缓存(服务器端)— 提供商会缓存重复前缀的模型 KV 状态
- 结果缓存(客户端)— 您的代码会为完全相同的输入缓存完整响应
Anthropic 提示词缓存
使用 cache_control 标记可缓存的部分:
response = client.messages.create(
model='claude-sonnet-4-5',
max_tokens=1024,
system=[
{'type': 'text', 'text': LONG_SYSTEM_PROMPT, 'cache_control': {'type': 'ephemeral'}}
],
messages=[{'role': 'user', 'content': user_input}]
)
# 1st call: full price
# 2nd call within 5min: 10% of input cost缓存命中率
检查响应的使用量对象:
response.usage.cache_creation_input_tokens # tokens cached this call
response.usage.cache_read_input_tokens # tokens read from cache缓存哪些内容
- 超过 1k 个令牌的系统提示词
- 工具定义
- 少样本示例
- 多个查询共享的 RAG 上下文(较少见)
缓存标记应放在哪里
缓存控制必须放在 LAST 个静态块上。标记之前的所有内容都会被缓存。将稳定内容放在开头,将可变内容放在末尾。
OpenAI 提示词缓存
OpenAI 会自动缓存超过 1024 个令牌的提示词。不需要显式标记:
# Just send the same prefix repeatedly. Cache discount applies automatically.
# Check response.usage.prompt_tokens_details.cached_tokensVertex AI 上下文缓存
Google Vertex 要求您显式创建缓存对象:
from vertexai.generative_models import GenerativeModel, content_cache
cache = content_cache.CachedContent.create(
model='gemini-1.5-pro',
contents=[long_system_content],
ttl=300
)
model = GenerativeModel.from_cached_content(cache)
response = model.generate_content(user_input)客户端结果缓存
对于完全匹配的查询(相同输入、相同预期输出),请使用键值缓存:
import hashlib
def cache_key(model, messages):
return hashlib.sha256(f'{model}:{json.dumps(messages)}'.encode()).hexdigest()
def cached_call(model, messages):
key = cache_key(model, messages)
if cached := redis.get(key):
return json.loads(cached)
result = real_call(model, messages)
redis.set(key, json.dumps(result), ex=3600)
return result语义缓存
使用嵌入来缓存相似(而非完全相同)的查询:
qvec = embed(query)
matches = vector_db.query(qvec, k=1)
if matches and matches[0].score > 0.95:
return matches[0].metadata['cached_response']缓存失效
过期的缓存会返回错误答案。可采用以下策略:
- TTL — 对于时间敏感的数据,设置较短的 TTL
- 数据更新时手动使缓存失效
- 使用每个用户独立的键,使更新只影响一个用户
不要缓存个性化响应
“我的余额是多少?”不能跨用户缓存。在多租户系统中使用共享缓存时务必谨慎。
缓存成本与 LLM 成本
与 LLM 成本相比,Redis 成本几乎可以忽略。请积极使用缓存——即使只有 10% 的命中率,也能节省实际成本。
实际节省额
使用较长的共享系统提示词和提示词缓存后,团队在生产环境中通常可以看到输入成本下降 50-90%。这是 ROI 最高的优化手段之一。
Anthropic 缓存触发方式
如何使用 Anthropic 启用提示词缓存?
回顾
服务器端提示词缓存用于静态前缀;客户端 KV 缓存用于完全匹配;语义缓存用于模糊匹配。始终检查命中率和节省额。
用 AI 导师学习 AI Agents — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 60
- 课程
- 239
常见问题解答
「提示与结果缓存(Anthropic、Vertex)」课时是免费的吗?
是的 — 「提示与结果缓存(Anthropic、Vertex)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。
「提示与结果缓存(Anthropic、Vertex)」这节课中我会学到什么?
Anthropic 提示缓存和 Vertex 缓存可将长而重复的系统提示的输入成本降低十倍。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AI Agents 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「提示与结果缓存(Anthropic、Vertex)」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AI Agents 课中编写并运行代码吗?
能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 为每一步设置令牌预算
- 模型路由(低价 -> 高价)
- 提示与结果缓存(Anthropic、Vertex)
- 量化与推测解码