Skip to main content
专为 Anthropic 的 Claude 模型设计的中间件。了解更多关于中间件的信息。
中间件描述
提示缓存通过缓存重复的提示前缀来降低成本

提示缓存

通过在 Anthropic 的服务器上缓存静态或重复的提示内容(如系统提示、工具定义和对话历史)来降低成本和延迟。此中间件实现了一种对话缓存策略,在系统消息、工具定义和最近的用户消息上放置显式的缓存断点,允许整个对话历史在后续 API 调用中被缓存和重用。 提示缓存适用于以下情况:
  • 具有长静态系统提示的应用程序,这些提示在请求之间不会改变
  • 具有许多工具定义的代理,这些定义在调用之间保持不变
  • 早期消息历史在多个回合中重复使用的对话
  • 降低 API 成本和延迟至关重要的高容量部署
对于更简单的用例,您也可以在调用时通过传递 cache_control 来使用聊天模型的提示缓存,而无需中间件。当您需要对系统提示和工具定义的缓存断点进行显式控制时,推荐使用中间件。
了解更多关于 Anthropic 提示缓存 策略和限制的信息。
import { createAgent, anthropicPromptCachingMiddleware } from "langchain";

const agent = createAgent({
  model: "claude-sonnet-4-6",
  prompt: "<您的长系统提示在此>",
  middleware: [anthropicPromptCachingMiddleware({ ttl: "5m" })],
});
ttl
string
default:"5m"
缓存内容的生存时间。有效值:'5m''1h'
中间件缓存每个请求中最多包括最新消息的内容。在 TTL 窗口(5 分钟或 1 小时)内的后续请求中,先前看到的内容将从缓存中检索,而不是重新处理,从而显著降低成本和延迟。工作原理:
  1. 第一个请求:系统提示、工具和用户消息 “Hi, my name is Bob” 被发送到 API 并缓存
  2. 第二个请求:缓存的内容(系统提示、工具和第一条消息)从缓存中检索。只有新消息 “What’s my name?” 需要处理,加上第一个请求的模型响应
  3. 此模式在每个回合中继续,每个请求重用缓存的对话历史
import { createAgent, HumanMessage, anthropicPromptCachingMiddleware } from "langchain";

const LONG_PROMPT = `
请成为一名有用的助手。

<更多上下文 ...>
`;

const agent = createAgent({
  model: "claude-sonnet-4-6",
  prompt: LONG_PROMPT,
  middleware: [anthropicPromptCachingMiddleware({ ttl: "5m" })],
});

// 第一次调用:使用系统提示、工具和 "Hi, my name is Bob" 创建缓存
await agent.invoke({
  messages: [new HumanMessage("Hi, my name is Bob")]
});

// 第二次调用:重用缓存的系统提示、工具和先前的消息
// 只处理新消息 "What's my name?" 和先前的 AI 响应
const result = await agent.invoke({
  messages: [new HumanMessage("What's my name?")]
});