上个月,我对一个每天处理约 4,000 个请求的人工智能代理进行了并行测试。该代理拥有一个较长的系统提示词(大约包含 2,800 个令牌,涵盖规则、工具定义和示例),每次调用都会发送这些内容。在启用提示词缓存之前:每天费用为 47 美元。在该系统提示词块上启用缓存之后:每天费用降至 6.80 美元。
这并非四舍五入造成的误差。仅通过一次配置更改,且无需对代理的行为进行任何调整,成本就降低了 85%。
以下是提示词缓存的确切工作原理,以及如何避开常见陷阱进行设置。
提示词缓存的实际作用(以及非作用)
Anthropic 的提示词缓存工作在前缀级别。当您发送请求时,应用程序接口会检查您的消息前缀是否与之前缓存的前缀完全匹配。如果匹配,这些缓存的令牌将从键值存储中提供,而不是通过完整模型重新处理——因此您只需为它们支付低得多的每令牌费率。
定价结构(截至 2026 年年中,适用于 Claude 3.5 Sonnet 模型):
- 常规输入令牌:每百万令牌 3.00 美元
- 缓存写入(首次使用,或缓存未命中):每百万令牌 3.75 美元(写入缓存需加收 25% 的费用)
- 缓存读取(缓存命中):每百万令牌 0.30 美元(相比常规价格优惠 90%)
缓存会在请求之间保留 5 分钟(每次命中都会重置生存时间)。对于任何调用频率高于每 5 分钟一次的代理(大多数生产环境中的代理皆属此类),这几乎总是一项优势。
确切的应用程序接口调用方式
关键在于 cache_control 块。您可以将其作为“断点”添加到您希望缓存的任何消息块的末尾。应用程序接口将缓存直至并包括该断点的所有内容。
import anthropic
client = anthropic.Anthropic()
# 您的长系统提示词 - 工具定义、规则、示例等。
SYSTEM_PROMPT = """
您是 Acme Corp 的支持代理...
[2,800 个令牌的规则、工具定义、角色设定、示例]
"""
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
system=[
{
"type": "text",
"text": SYSTEM_PROMPT,
"cache_control": {"type": "ephemeral"
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。