OpenAI API 怎样配置提示词缓存降低重复输入成本
OpenAI API 的提示词缓存应围绕反复使用的稳定前缀配置:固定业务规则放在前面,变化的问题放在后面,再依据模型设置缓存边界。判断是否省钱,要同时统计缓存读取和写入,不能只看命中率。
官方地址:https://developers.openai.com/
下面用 GPT-5.6 Sol 的 Responses API 举例。模型和账户访问权限需自行具备;示例没有执行付费请求,数字均为计算示意。
先记录可比较的输入成本
设想客服工单分类服务:每次都携带同一份分类规范,只有工单正文变化。先保留现有实现作为基线,记录模型、规范版本、输入 token、输出 token、缓存读写量和端到端耗时。改造后使用同一组工单,避免把输出变短带来的降费归因于输入缓存。
建议每条记录包含请求标识和以下字段,不记录客户原文或 API 密钥:
| 记录项 | 用途 |
|---|---|
| input_tokens | 本次输入总量 |
| cached_tokens | 复用缓存的输入量 |
| cache_write_tokens | 写入缓存的输入量 |
| output_tokens、elapsed_ms | 分离输出费用和延迟变化 |
这些指标应按整组请求汇总,并单列错误率。官方部署说明也要求把读写量与实际费用一起观察。
把稳定前缀单独设为缓存边界
把规范保存为 UTF-8 文件 support-rules.txt,固定措辞、示例及其顺序。前缀必须足够长:GPT-5.6 及以后模型的最低可缓存长度为 1024 个可见输入 token,字符数不等于 token 数;不要为了凑长度塞入无关内容。
下面将规范作为 developer 消息,并在文本块末尾标记显式断点。用户问题位于断点之后,保持前面的规范不变。显式模式下若没有断点,就不会读写提示词缓存。具体规则见提示词缓存文档。
import os
import time
from pathlib import Path
import requests
# 从环境读取密钥;规范文件应包含实际需要的稳定业务内容。
rules = Path("support-rules.txt").read_text(encoding="utf-8")
payload = {
"model": "gpt-5.6-sol",
"prompt_cache_options": {"mode": "explicit", "ttl": "30m"},
"prompt_cache_key": "support-demo:customer-a:rules-v1",
"input": [
{
"role": "developer",
"content": [{
"type": "input_text",
"text": rules,
"prompt_cache_breakpoint": {"mode": "explicit"}
}]
},
{"role": "user", "content": "工单:收到的商品数量比订单少一件。"}
]
}
started = time.perf_counter()
try:
# 真实调用会计费;后续请求只替换用户问题,保留稳定前缀。
result = requests.post(
"https://api.openai.com/v1/responses",
headers={"Authorization": "Bearer " + os.environ["OPENAI_API_KEY"]},
json=payload, timeout=90
)
result.raise_for_status()
usage = result.json()["usage"]
except (requests.RequestException, KeyError, ValueError) as exc:
# 不打印请求头、密钥或客户原文;由调用方接入自己的失败处理。
raise RuntimeError("请求或用量解析失败,请检查权限、参数与服务日志") from None
details = usage["input_tokens_details"]
print({
"input_tokens": usage["input_tokens"],
"cached_tokens": details["cached_tokens"],
"cache_write_tokens": details["cache_write_tokens"],
"output_tokens": usage["output_tokens"],
"elapsed_ms": round((time.perf_counter() - started) * 1000)
})
代码需要安装 requests,且运行环境已设置密钥。实际项目应把工单替换为业务输入;规范更改时升级版本,客户之间使用各自稳定的键。这里的键用于分开缓存记账,不能替代业务鉴权。

用冷请求与重复请求计算节省
先取一次没有可复用缓存的请求,再在有效期内复用相同规范发送多条不同工单。完整保留首条请求及后续请求的用量,按实际记录判断是否命中;单次耗时不代表稳定性能,可再比较同负载下的中位数与高分位耗时。
以下仅是算术示例:固定前缀 1600 token,动态工单每条 400 token,共 8 条。假设首条只写入固定前缀、后续 7 条均完整命中,动态内容全部按普通输入处理。
| 项目 | 不复用缓存的对照 | 假设的缓存组 |
|---|---|---|
| 普通输入 | 16000 | 3200 |
| 缓存写入 | 0 | 1600 |
| 缓存读取 | 0 | 11200 |
按 GPT-5.6 Sol 标准短上下文价格,每百万普通输入 4 美元、缓存读取 0.40 美元,30 分钟缓存写入按普通输入的 1.25 倍计,示例输入费用为 (3200 × 4 + 1600 × 5 + 11200 × 0.40) / 1000000 = 0.02528 美元;对照为 0.064 美元,算例降幅约 60.5%。这是假设用量推导,不是实测收益;不含输出、工具及其他适用费用。价格和上下文档位以模型页及价格页为准。
落到真实日志时,普通输入量等于输入总量减缓存读取量、再减缓存写入量,三个部分各按自己的费率计算。不要把已计入写入部分的 token 再按普通输入重复收费;不同保留时长的写入也不能混用一个价格。

处理未命中与模型差异
命中为零时,先比较前缀实际内容:请求编号、当前时间、动态检索资料若被放在规范前面,就可能破坏复用。然后确认前缀长度、断点和模型支持情况,再看缓存有效期及请求路由。相同的键不能让不同内容自动变成相同前缀。
GPT-5.5 及更早模型使用旧式 prompt_cache_retention,不能照搬本例的显式断点配置;迁移时应按模型支持范围改参数。对于只使用一次的长规范,写入成本未必能被后续读取摊薄,应比较实际请求组再决定是否缓存。
缓存会直接返回上次答案吗?
不会。提示词缓存复用前缀计算,并不是把客户的答案作为响应缓存。是否需要另外缓存业务结果,取决于业务对时效和一致性的要求。
把 ttl 改得更长就一定更省吗?
不一定。更长的可选时长可能对应更高写入费率,只有之后的复用能抵消额外支出时才有收益。先保留本例的 30m,再依据真实重复间隔计算。
可以把两次命中请求的费用当作整体收益吗?
不可以。应把首次写入、未命中、失败及重试造成的实际用量一起统计,并独立报告输出费。对缓存的判断单位应是完整业务负载。
PyTorch torch.utils.checkpoint 怎样用重计算换显存
- 上一篇
- PyTorch torch.utils.checkpoint 怎样用重计算换显存
- 下一篇
- Transformers DataCollatorForLanguageModeling 的 mlm 与 labels 构造方法
-
- 科技周边 · 人工智能 | 59分钟前 | token · ai ·
- AI 应用怎样记录 token 用量和请求追踪信息
- 323浏览 收藏
-
- 科技周边 · 人工智能 | 1小时前 | python · 工具调用 · LangChain Command AIMessage ToolMessage tool_call_id 消息历史
- LangChain 怎样把工具调用结果映射到消息历史
- 250浏览 收藏
-
- 科技周边 · 人工智能 | 1小时前 |
- Safetensors 怎么只读取指定权重并查看文件元数据
- 256浏览 收藏
-
- 科技周边 · 人工智能 | 1小时前 |
- ONNX Runtime 怎样为不同硬件选择执行提供者
- 371浏览 收藏
-
- 科技周边 · 人工智能 | 1小时前 | 性能排查 · PyTorch 性能排查 torch.compile TorchDynamo 图断裂 fullgraph
- PyTorch torch.compile 怎样定位图断裂原因
- 475浏览 收藏
-
- 科技周边 · 人工智能 | 1小时前 | 内存优化 · PyTorch DataLoader IterableDataset num_workers prefetch_factor pin_memory persistent_workers
- PyTorch DataLoader 怎样控制多进程预取内存
- 319浏览 收藏
-
- 科技周边 · 人工智能 | 1小时前 | 人工智能 · websocket WebRTC 断线重连 会话恢复 OpenAI Realtime API conversation.item.create
- OpenAI Realtime API 怎样处理断线后的会话恢复
- 356浏览 收藏
-
- 科技周边 · 人工智能 | 1小时前 |
- Transformers DataCollatorForLanguageModeling 的 mlm 与 labels 构造方法
- 336浏览 收藏
-
- 科技周边 · 人工智能 | 1小时前 |
- PyTorch torch.utils.checkpoint 怎样用重计算换显存
- 370浏览 收藏
-
- 科技周边 · 人工智能 | 1小时前 | 异步任务 · 人工智能 · openai · 批处理文件 OpenAI Batch API output_file_id error_file_id output_expires_after
- OpenAI Batch API 怎样设置 output_expires_after 管理输出文件
- 460浏览 收藏
-
- 科技周边 · 人工智能 | 1天前 |
- PyTorch autograd anomaly detection 怎样定位 NaN 梯度
- 248浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 842次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 842次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 921次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 897次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 725次使用
-
- 量化模型本地推理的显存估算方法
- 2026-10-17 501浏览
-
- 本地大模型反复输出同一句话怎么调整生成参数
- 2026-09-06 501浏览
-
- Python 调用大模型时如何用结构化输出校验 JSON:从解析失败到可重试
- 2026-08-29 501浏览
-
- AI写作工具免费版安装教程(含豆包Clawdbot)
- 2026-05-30 501浏览
-
- WPS AI能自动生成PPT吗?输入主题一键制作演示文稿
- 2026-05-27 501浏览

