GPT-5.6 提示词缓存 — 减少重复 Token、显著降低成本
什么是提示词缓存
提示词缓存(Prompt Caching)是 OpenAI 为 GPT-5.x 系列提供的自动 Token 复用机制。当多个请求包含相同或高度相似的前缀内容时,OpenAI 会缓存这些前缀,并对重复部分应用远低于常规价格的缓存费率。
GPT-5.6 的缓存价格
| 模型 | 常规输入 | 缓存输入 | 折扣 |
|---|---|---|---|
| Sol | $5.00/1M | $0.50/1M | 90% |
| Terra | $2.00/1M | $0.20/1M | 90% |
| Luna | $0.20/1M | $0.02/1M | 90% |
缓存输入的价格是常规输入的 1/10。这意味着对于重复使用的提示词前缀,你可以节省 90% 的 Token 成本。
什么时候缓存生效
缓存通常在以下场景自动触发:
场景一:固定系统提示词
# 每次请求都带同样的 system prompt
system_prompt = """
你是一个资深安全分析师。
分析以下代码中的安全问题,按严重程度排序。
对于每个问题,给出具体的漏洞类型、影响范围和修复建议。
"""
for code in many_code_snippets:
client.responses.create(
model="gpt-5.6-terra",
input=[
{"role": "system", "content": system_prompt}, # 这部分被缓存
{"role": "user", "content": code} # 这部分每次不同
]
)
# system_prompt 部分只算一次完整 Token,后续算缓存费率
场景二:多轮对话的历史
# 长对话中,前面的历史消息被缓存
response1 = client.responses.create(
model="gpt-5.6-sol",
input=[long_history, user_message_1],
store=True
)
response2 = client.responses.create(
model="gpt-5.6-sol",
previous_response_id=response1.id,
input=[user_message_2]
)
# 长历史部分在 response2 中应用缓存费率
场景三:固定模板 + 变量
# 固定的邮件模板 + 变化的收件人信息
template_prefix = "请帮我写一封给{recipient}的正式邮件,主题是{topic}。"
for recipient, topic in email_list:
# template_prefix 部分被缓存
result = client.responses.create(
model="gpt-5.6-terra",
input=[f"请帮我写一封给{recipient}的正式邮件,主题是{topic}。"]
)
如何判断缓存是否生效
API 响应的 usage 字段会显示缓存命中:
{
"usage": {
"input_tokens": 3000,
"cached_input_tokens": 2500, // ← 这就是缓存命中的部分
"output_tokens": 500
}
}
计算实际节省的成本:
节省前成本 = input_tokens × 常规费率
节省后成本 = (input_tokens - cached_input_tokens) × 常规费率 + cached_input_tokens × 缓存费率
节省比例 ≈ cached_input_tokens / input_tokens × 90%
缓存限制
前缀匹配规则
缓存只对请求输入的前缀生效。如果你的重复内容不在开头,缓存不会命中:
# ❌ 不会被缓存(重复内容不在开头)
input=[
{"role": "user", "content": code_snippet},
{"role": "system", "content": fixed_prompt} # 固定提示在后面,不触发缓存
]
# ✅ 会被缓存(重复内容在开头)
input=[
{"role": "system", "content": fixed_prompt}, # 固定提示在前面
{"role": "user", "content": code_snippet}
]
缓存有效期
OpenAI 没有公开精确的缓存有效期,但通常在数分钟到数小时之间。如果两次请求间隔太长,缓存可能已失效。
跨模型不共享
缓存是每个模型独立的。用 Terra 缓存的前缀,换到 Sol 不会命中。
最大化缓存效果
技巧一:固定系统提示词放最前
确保你想复用的提示词都在请求输入的最开始。
技巧二:批量处理时保持前缀一致
# ✅ 好做法:每次用相同前缀
for item in batch:
client.responses.create(
model="gpt-5.6-terra",
input=[
{"role": "system", "content": shared_prefix},
{"role": "user", "content": item}
]
)
# ❌ 坏做法:前缀每次都变
for item in batch:
client.responses.create(
model="gpt-5.6-terra",
input=[
{"role": "user", "content": item + shared_prefix} # 变化的在前
]
)
技巧三:长前缀更划算
缓存节省的金额 = 缓存输入 Token 数 × 0.9 × 常规费率。前缀越长,节省越多。如果你的系统提示词有 1000 Token,每次请求就能省 900 Token 的常规费率。
实际案例
Lovable 的经验
"在整个场景构建工作流中,与使用直接工具调用的同款模型相比,它不仅生成了同等的视觉效果,总 Token 使用量还减少了 63.5%。"
Clio 的经验
"针对多步骤文档分析,可编程工具调用功能在不损失质量的前提下,将提示词 Token 消耗降低了 38%。"
提示词缓存是这些效率提升的重要组成部分——它让长上下文场景的成本大幅降低,使得 GPT-5.6 的强大能力可以在更多生产场景中经济地部署。