揭秘:基于 Claude 缓存技术的高效 AI 平台
随着人工智能技术的迅猛发展,如何提高 AI 应用的响应速度和降低运行成本成为开发者关注的焦点。Anthropic 推出的 Claude 提示缓存(Prompt Caching)功能,为解决这一问题提供了创新的解决方案。
什么是 Claude 提示缓存?
Claude 提示缓存是一种在 API 调用之间缓存常用上下文信息的技术。通过缓存频繁使用的提示内容,系统可以在后续调用中重用这些信息,从而减少处理时间和资源消耗。
技术优势
- 成本降低:使用提示缓存后,输入 token 的成本可降低高达 90%。
- 延迟减少:响应时间平均减少 85%,显著提升用户体验。
- 适用场景广泛:特别适用于需要大量上下文的应用,如对话代理、编码助手和大型文档处理等。
应用场景示例
- 对话代理:在客户服务 AI 中,缓存公司政策和常见问题解答,提高响应速度。
- 编码助手:缓存整个代码库的摘要,使 AI 更快地提供代码建议和解答。
- 大型文档处理:缓存长篇文档内容,便于快速访问和分析。
实现方式
开发者在使用 Claude API 时,可以通过设置 cache_control
参数来启用提示缓存功能。缓存的生命周期为 5 分钟,每次使用缓存内容时会刷新计时。需要注意的是,缓存内容应尽可能稳定和可重用,以获得最佳性能。
提示缓存是一个强大的功能,它通过允许从提示中的特定前缀恢复来优化您的 API 使用。这种方法显著减少了重复任务或具有一致元素的提示的处理时间和成本。
以下是使用 Messages API 实现提示缓存的示例,使用 cache_control 块:
下面展示一些 内联代码片
。
curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-3-7-sonnet-20250219",
"max_tokens": 1024,
"system": [
{
"type": "text",
"text": "You are an AI assistant tasked with analyzing literary works. Your goal is to provide insightful commentary on themes, characters, and writing style.\n"
},
{
"type": "text",
"text": "<the entire contents of Pride and Prejudice>",
"cache_control": {"type": "ephemeral"}
}
],
"messages": [
{
"role": "user",
"content": "Analyze the major themes in Pride and Prejudice."
}
]
}'
# Call the model again with the same inputs up to the cache checkpoint
curl https://api.anthropic.com/v1/messages # rest of input
{"cache_creation_input_tokens":188086,"cache_read_input_tokens":0,"input_tokens":21,"output_tokens":393}
{"cache_creation_input_tokens":0,"cache_read_input_tokens":188086,"input_tokens":21,"output_tokens":393}
在这个示例中,《傲慢与偏见》的全文使用 cache_control 参数进行缓存。这使得这个大文本可以在多个 API 调用中重复使用,而无需每次都重新处理。只改变用户消息就可以让你询问关于这本书的各种问题,从而实现更快的响应和更高的效率。
提示缓存的工作原理
当您发送启用了提示缓存的请求时:
系统检查是否已经从最近的查询中缓存了提示前缀(直到指定的缓存断点)。
如果找到,它会使用缓存版本,减少处理时间和成本。
否则,它会处理完整的提示,并在响应开始时缓存前缀。
这对以下情况特别有用:
包含多个示例的提示
大量的上下文或背景信息
具有一致指令的重复任务
长时间的多轮对话
缓存的最短生命周期为 5 分钟,每次使用缓存内容时都会刷新。
缓存价格
可以通过中转的方式缓存命中的计费完全同步官方
缓存限制
最小可缓存提示长度为:
Claude 3.7 Sonnet、Claude 3.5 Sonnet 和 Claude 3 Opus 为 1024 个令牌
Claude 3.5 Haiku 和 Claude 3 Haiku 为 2048 个令牌
即使标记了 cache_control,更短的提示也无法缓存。任何请求缓存少于此数量令牌的尝试都将在不缓存的情况下处理。要查看提示是否被缓存,请查看响应使用字段。
对于并发请求,请注意缓存条目只有在第一个响应开始后才可用。如果您需要并行请求的缓存命中,请在发送后续请求之前等待第一个响应。
缓存的最短生存时间(TTL)为 5 分钟。目前,“ephemeral”是唯一支持的缓存类型,对应于这个最短 5 分钟的生命周期。
技术交流:59773627