AI Agents · 课时

提示与结果缓存(Anthropic、Vertex)

Anthropic 提示缓存和 Vertex 缓存可将长而重复的系统提示的输入成本降低十倍。

第 3 / 4 课16 个步骤

提示与结果缓存(Anthropic、Vertex) 是 CoddyKit 上的免费 AI Agents 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。

为什么要缓存

许多智能体调用几乎完全相同:相同的系统提示词、相同的少样本示例,只有用户输入不同。如果不使用缓存,每次调用都要重新处理静态部分。

缓存可以将输入令牌成本降低 10 倍。

两种缓存方式

  1. 提示词缓存(服务器端)— 提供商会缓存重复前缀的模型 KV 状态
  2. 结果缓存(客户端)— 您的代码会为完全相同的输入缓存完整响应

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_tokens

Vertex 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 为每一步设置令牌预算
  2. 模型路由(低价 -> 高价)
  3. 提示与结果缓存(Anthropic、Vertex)
  4. 量化与推测解码
← 返回 AI Agents