ChatGPT5.6 中文文档 下载 App

GPT-5.6 提示词缓存 — 减少重复 Token、显著降低成本

什么是提示词缓存

提示词缓存(Prompt Caching)是 OpenAI 为 GPT-5.x 系列提供的自动 Token 复用机制。当多个请求包含相同或高度相似的前缀内容时,OpenAI 会缓存这些前缀,并对重复部分应用远低于常规价格的缓存费率。

GPT-5.6 的缓存价格

模型常规输入缓存输入折扣
Sol$5.00/1M$0.50/1M90%
Terra$2.00/1M$0.20/1M90%
Luna$0.20/1M$0.02/1M90%

缓存输入的价格是常规输入的 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 的强大能力可以在更多生产场景中经济地部署。