加载中

提示缓存的规则

第 44 课3 分钟

Claude 中的提示缓存的工作原理是存储对您的消息所做的计算工作,以便在后续请求中重复使用。这使得后续请求的执行速度更快、成本更低,但仅当您反复发送相同内容时才有效。

这个过程很简单:您的初始请求将处理工作写入缓存,后续请求可以从该缓存中读取,而不是重新处理相同的内容。默认情况下,缓存的生命周期为 5 分钟,因此此功能仅在您在该时间范围内反复发送相同内容时才有用。如果您需要更长的时间,也可以以更高的缓存写入价格使用 1 小时的缓存持续时间。

缓存断点

缓存不会自动启用——您需要手动将缓存断点添加到消息中的特定块。其工作原理如下:

  • 对消息所做的工作不会自动缓存
  • 您必须手动向某个块添加"缓存断点"
  • 断点之前的所有工作都将被缓存
  • 只有当断点(包括断点本身)之前的内容完全相同时,后续请求才会使用缓存

要添加缓存断点,您需要使用编写文本块的完整形式,而不是简写形式:

简写形式没有提供添加缓存控制字段的位置,因此您必须使用扩展格式,并将 cache_control 字段设置为 {"type": "ephemeral"}。

缓存断点的工作原理

当您在消息中放置缓存断点时,Claude 会缓存该断点(包括断点本身)之前的所有处理工作。断点之后的内容将正常处理,不进行缓存。

为了使缓存在后续请求中有用,断点之前的内容必须完全相同。即使是像添加"please"这样的小改动,也会使缓存失效,并强制 Claude 重新处理所有内容。

跨消息缓存

缓存断点可以跨越多条消息和消息类型。如果您在较后的消息中放置断点,所有先前的消息(用户、助手等)都将包含在缓存内容中。

这对于希望缓存到某个特定点为止的整个上下文的对话特别有用。

系统提示和工具

您不仅限于文本块——缓存断点还可以添加到:

  • 系统提示
  • 工具定义
  • 图像块
  • 工具使用和工具结果块

系统提示和工具定义是缓存的绝佳候选对象,因为它们在请求之间很少发生变化。这通常是您从提示缓存中获得最大收益的地方。

缓存顺序

在幕后,Claude 按特定顺序处理您的请求组件:首先是工具,然后是系统提示,最后是消息。理解这个顺序有助于您有效地放置断点。

您最多可以添加四个缓存断点。例如,您可以缓存您的工具,然后在对话历史的中途添加另一个断点。这使您在请求的不同部分发生变化时,能够灵活地决定缓存哪些内容。

最小内容长度

缓存存在一个最小阈值:内容必须至少为 1024 个令牌才能被缓存。这是您尝试缓存的所有消息和块的总和,而不是单个块。

一条简单的"Hi there!"消息不会达到这个阈值,但如果您将该内容重复 500 次(或者拥有一个真正很长的提示),它将超过 1024 个令牌,从而符合缓存条件。

有效提示缓存的关键在于识别您的请求中哪些部分在多次调用中保持一致,并策略性地放置断点,以最大化重复使用,同时最小化缓存失效。