本文原文来自DataLearnerAI官方博客:
https://www.datalearner.com/blog/1051734484275280
在大模型的应用中,处理复杂请求往往伴随着较高的延迟和成本,尤其是当请求内容存在大量重复部分时。这种“慢请求”的问题,特别是在长提示和高频交互的场景中,显得尤为突出。为了应对这一挑战,OpenAI 最近推出了 提示缓存(Prompt Caching) 功能。这项新技术通过缓存模型处理过的相同前缀部分,避免了重复计算,从而大幅减少了请求的响应时间和相关成本。特别是对于包含静态内容的长提示请求,提示缓存能够显著提高效率,降低运行开销。本文将详细介绍这项功能的工作原理、支持的模型,以及如何通过合理的提示结构优化缓存命中率,帮助开发者提升大模型的使用体验。
提示缓存(Prompt Caching)机制,用于减少在处理重复内容的长提示时的延迟和计算成本。这里的“提示”指的是你向模型发送的输入内容。在请求过程中,系统并不会每次都重新计算提示的前N个输入tokens,而是缓存先前的计算结果。这样,对于后续具有相同提示前缀的请求,系统就能够重用这些缓存数据,从而加速处理,减少延迟,并节省成本。
简单来说,提示缓存的工作原理如下:
官方给出了一个非常形象的提示缓存原理图:

从上图可以看出来,如果你的原始请求中前面的tokens与此前的请求相同,那这部分请求可以不通过模型解决,而直接通过缓存结果读出来即可。
当前,OpenAI官方提供的可缓存的模型如下:

当前支持提示缓存的模型(如 gpt-4o、gpt-4o-mini、gpt-4o-realtime-preview 等)均能有效降低文本输入成本,特别是 50% 的成本折扣,而 gpt-4o-realtime-preview 模型在处理音频输入时甚至能享受 80% 的成本折扣。这些模型的支持不仅提高了模型的响应效率,还为开发者提供了一个低成本、高性能的解决方案,特别适用于那些需要频繁重复请求或包含大量静态内容的场景。
根据当前OpenAI官方提供的文档,如果你的请求要使用到缓存,必须满足如下条件:
此外,还需要注意的是,官方说起始1024个tokens是最少可以缓存的长度,但是后面命中的增量式128个tokens,也就是说缓存的长度都是1024、1152、1280、1408这样以1024个tokens为最低,128个tokens递增的方式保存。
当发生“缓存命中”时,API 响应将包含 cached_tokens,表示有多少标记来自缓存。例如,发送给 o1-preview-2024-09-12 模型的请求可能会返回如下响应:
{
"created":1729227448,
"model":"o1-preview-2024-09-12",
"object":"chat.completion",
"usage":{
"completion_tokens":1518,
"prompt_tokens":1566,
"total_tokens":3084,
"completion_tokens_details":{
"reasoning_tokens":576
},
"prompt_tokens_details":{
"cached_tokens":1408
}
}
}
在这个例子中,1408个标记是从缓存中获取的,显著减少了处理时间和成本。
OpenAI官方说,模型不会一直保存缓存信息。目前GPT系列模型的提示缓存的相关机制如下:
cached_tokens 的值将为 0。提示缓存的功能根据所使用的模型有所不同。例如,o1 系列模型仅支持文本,不支持系统消息、图像、工具调用或结构化输出,因此其缓存功能主要适用于用户消息部分。而 gpt-4o 和 gpt-4o-mini 模型支持更多内容类型的缓存,包括:
detail 参数一致。为了增加缓存命中的概率,建议将重复内容放在消息数组的前面。
提示缓存功能首次在 API 版本 2024-10-01-preview 中提供支持。对于 o1 模型系列,API 响应中现已加入了 cached_tokens 参数,用于显示缓存命中的标记数。
启用提示缓存的步骤:
cached_tokens,指出缓存了多少标记。提示缓存在所有支持的模型中 默认启用,并且目前 没有禁用选项。这意味着,如果你使用的是支持的模型,缓存会自动启用,前提是请求符合条件。
提示缓存带来了两大主要好处:
对于那些经常需要处理相同数据或提示的应用场景,如对话式 AI 系统、数据提取和重复查询等,提示缓存的优势尤为明显。
为了提高缓存命中的概率,OpenAI也给出了一些官方建议:
提示缓存不会影响模型的输出结果。无论是否使用缓存,生成的输出始终是相同的。因为只有提示本身被缓存,实际的响应是每次基于缓存的提示重新计算的。
是否可以手动清除缓存?
目前不支持手动清除缓存。长时间未被使用的提示会自动从缓存中移除。通常,缓存会在 5-10 分钟 的非活动期后清除,但在流量较少的时段,缓存最多可能持续 一小时。
使用提示缓存需要支付额外费用吗?
不需要。缓存是自动启用的,用户不需要额外操作或支付额外费用。
缓存的提示是否会计入 TPM 限制?
是的,缓存不影响速率限制,缓存命中仍会计入请求的总数量。
在 Scale Tier 和批量 API 中可以使用提示缓存折扣吗?
提示缓存折扣不适用于批量 API,但在 Scale Tier 中适用。通过 Scale Tier,溢出的令牌也会受到缓存优惠。
提示缓存是否适用于零数据保留请求?
是的,提示缓存符合现有的零数据保留政策。
Azure OpenAI 的提示缓存功能为处理长提示和重复请求提供了一个非常有价值的优化方案。它通过减少计算延迟和成本,显著提高了模型的效率。
随着更多模型的支持以及提示缓存功能的不断优化,预计 Azure OpenAI 用户将能够享受到更高效、更经济的服务体验。
好文章,需要你的鼓励
这项由索非亚大学INSAIT和苏黎世联邦理工学院共同完成的研究,揭示了大语言模型在数学定理证明中普遍存在的"迎合性"问题。研究团队构建了BrokenMath基准测试集,包含504道精心设计的错误数学命题,用于评估主流AI模型能否识别并纠正错误陈述。
约翰斯·霍普金斯大学研究团队提出了创新的隐私保护AI文本生成方法,通过"控制代码"系统指导AI生成虚假敏感信息来替代真实数据。该方法采用"藏身于众"策略,在医疗法律等敏感领域测试中实现了接近零的隐私泄露率,同时保持了高质量的文本生成效果,为高风险领域的AI应用提供了实用的隐私保护解决方案。
实验室和真实使用测试显示,iPhone Air电池续航能够满足一整天的典型使用需求。在CNET进行的三小时视频流媒体压力测试中,iPhone Air仅消耗15%电量,表现与iPhone 15相当。在45分钟高强度使用测试中表现稍逊,但在实际日常使用场景下,用户反馈iPhone Air能够稳定支撑全天使用,有线充电速度也比较理想。
这项由Reactive AI提出的稀疏查询注意力机制通过减少查询头数量而非键值头数量,直接降低了注意力层的计算复杂度,实现了2-3倍的训练和编码加速。该方法在长序列处理中表现出色,在20万词汇序列上达到3.5倍加速,且模型质量损失微乎其微,为计算密集型AI应用提供了新的优化路径。