Anthropic的Claude AI引入了一个改变游戏规则的功能,承诺能彻底改变开发人员与大型语言模型交互的方式:“提示缓存”。本文将探讨该功能的实用性和应用,帮助你掌握如何使用它并从中获益。
什么是提示缓存?提示缓存功能是一种强大的优化技术,它允许开发人员在多次 API 调用中重复使用其提示中的大量内容。此功能特别适合需要在不同交互中保持一致的上下文、指令或背景信息的应用程序,因为这可以确保应用程序在不同交互中的一致性。
主要好处- 成本降低:缓存提示可以将输入令牌成本降低高达90%。
- 延迟改善:对于长提示,响应时间可以缩短至多85%。
- 性能增强:可以在不产生性能损失的情况下包含更多的上下文和示例,使性能更加出色。
缓存提示在以下场景中特别有用:
- 维持长时间对话,包括长指令或上传文档
- 通过在提示中保留代码库的简要信息来帮助改进编码助手
- 处理大型文档(包括图片)而不增加延迟
- 提供详细的操作指南,并包含大量示例
- 实现实代理交互搜索和工具使用(包括多轮互动)
- 创建包含长篇内容(如书籍、论文或转录)的互动体验
在进行 Claude API 调用时,启用提示缓存:
- 使用静态内容(如指令、背景、示例)开始构建您的提示。
- 使用
cache_control
参数标记可重用内容结尾。 - 确保您的可缓存提示符满足最小长度要求:
-
Claude 3.5 十二行诗和 Claude 3 作品可以使用 1024 个令牌
- Claude 3 和歌可以使用 2048 个令牌
这里有个简单的Python例子。
import anthropic
client = anthropic.Anthropic()
response = client.beta.prompt_caching.messages.create(
model="claude-3-5-sonnet-20240620",
max_tokens=1024,
system=[
{
"type": "text",
"text": "你的任务是分析文学作品。",
"cache_control": {"type": "瞬态"}
},
{
"type": "text",
"text": "<一部文学作品的全文>",
"cache_control": {"type": "瞬态"}
}
],
messages=[{"role": "user", "content": "分析这部作品的主要主题是什么。"}],
)
print(response)
定价与性能监测
提示缓存,采用了新的价格策略:
- 缓存写入的成本比基础输入代币高出25%
- 缓存读取的成本比基础输入代币低了90%
要监控缓存性能,请查看API响应中的这些字段:
cache_creation_input_tokens
:写入缓存的令牌们cache_read_input_tokens
:从缓存读取的令牌
为了帮助开发者估算实施提示缓存策略的潜在成本节约,我创建了一个详细的Excel表格。该表格允许对各种场景下的令牌使用量及其相关费用进行精确计算。它考虑了系统和用户输入、输出、缓存读写等因素。
这个电子表格展示了成本如何根据5分钟缓存生命周期内API调用的数量而变化。它根据长达8小时的连续使用提供了成本计算,让开发人员可以看到Prompt缓存的成本效益如何随着时间累积。
使用这个工具,开发人员可以:
- 输入系统指令、用户消息和预期输出的 token 数量。
- 查看启用和禁用缓存的成本明细。
- 了解成本节约如何随着 API 调用次数的增加而增加。
- 了解何时以及如何在应用程序中实现提示缓存。
这个小工具对于优化 API 使用和最大化利用缓存提示的好处来说是一个非常有用的资源。
这里有一个文件表格[更新于2024年8月28日]。
跟踪使用或
跟踪使用
在控制台
要追踪您的Prompt缓存的使用情况,您可以使用Anthropic的控制台。如图所示:
- 导航到你的人类学仪表板中的“使用情况”部分。
- 将“按”下拉菜单设置为“令牌类型”。
- 图表现在将以不同的颜色显示各种令牌类型:
- 米色:输出令牌
- 浅橙色:提示缓存读取令牌
- 橙:提示缓存写令牌
- 红色:输入令牌
这个可视化工具可让您轻松查看您从提示缓存中获得的好处,并然后根据情况调整策略。
一个最佳的做法- 缓存稳定且可重复利用的内容,比如系统指令和背景信息。
- 将缓存内容放在提示的开头,使性能达到最佳。
- 战略性地设置缓存断点来分离不同的可缓存部分。
- 定期检查缓存命中率,并根据需要调整策略。
- 记住,缓存的有效期为5分钟,每次使用都会自动刷新。
缓存的内容一般会在大约5分钟后过期,但每次使用缓存内容时,有效期都会重新计算。
我能用多少个缓存点?你可以为你的提示设定最多4个缓存点。
缓存提示功能是否适用于所有模型?不行,目前缓存提示仅适用于这几个版本的Claude 3.5 十四行诗版、Claude 3 俳句版和Claude 3 大作版。
如何开启提示缓存?为了开启提示缓存,请在您的 API 请求中加入 anthropic-beta:prompt-caching-2024-07-31
标头。
是的,Prompt 缓存可以与其他 API 功能(如工具使用和视觉能力)一起使用。然而,如果更改提示中的图片或修改工具设置,这样的话会破坏缓存。
我能手动清理缓存吗?目前还不能手动清理缓存。这些数据会在5分钟没有活动后自动过期。
什么能清除缓存?可能破坏缓存的更改包括修改任何内容,改变图片是否存在,以及更改 tool_choice.type
。这些更改将需要生成一个新的缓存条目。
缓存提示是如何处理隐私保护和数据隔离的?
缓存设计设计了强大的隐私保护和数据隔离措施:
- 缓存键是通过计算缓存控制点之前的提示信息的加密哈希来生成的。
- 缓存是组织特定的,不会在不同组织间共享。
- 缓存机制保证每个独特对话或上下文的完整性和隐私。
- 在提示中任意位置使用
cache_control
是安全的,但从成本效益的角度来看,最好不缓存高度变化的部分。
好的!anthropic-beta
参数头部接受一个逗号分隔的列表。例如:
anthropic-beta: prompt-缓存-2024-07-31,max-tokens-3-5-十四行诗-2024-07-15
通过有效使用提示缓存,你可以显著提升你使用Claude的应用程序的效率和降低成本。从今天开始尝试这个功能,以充分发掘它在你的AI工作流程中的潜力。
共同学习,写下你的评论
评论加载中...
作者其他优质文章