ArrayKit

提示词缓存规划

给请求里的各块排序,让可缓存的前缀尽可能长。

提示词缓存规划

给请求里的各块排序,让可缓存的前缀尽可能长。

这里只填各块的大小,不填内容。没有任何内容会被上传。

算一算智能体循环的成本

关于 提示缓存规划

缓存是前缀匹配,仅这一点就决定了一切。第一个变动的字节会让它之后的所有字节失效,所以把一行易变的内容——一个时间戳、一个请求 ID、用户的问题——放在两万五千个稳定 token 前面,就意味着这些 token 一个都缓存不了。修法永远是同一个形状:稳定的在前,易变的在后。不那么显然的是搞错顺序的代价,所以这里给它一个数字。填入请求里的各块以及它们各自的变动频率,工具会排好序、量出前缀,并按你要发的请求量算出差额。

功能特性

  • 为最大化前缀而排序的各块
  • 点名哪些稳定块被搁在易变块之后
  • 量出可缓存的前缀,以及每次都要付费的部分
  • 前缀低于最小值、会被无声地不缓存时发出警告
  • 按一批请求算出差额
  • 标出偶尔变动的块——它们会让其后的一切失效
  • 按模型给出的缓存读取价,并附核对日期
  • 块大小可编辑,贴合你自己的请求

如何使用 提示缓存规划

  1. 列出请求里的各块及其大小
  2. 标明每一块多久变一次
  3. 读推荐的顺序和它省下的钱
  4. 把缓存断点移到稳定前缀的末尾

示例

输入

User question (300) sent first

输出

29,500 stable tokens cannot be cached

开头一个易变的块,会让它后面的一切失效。

常见错误与故障排除

  • 我的命中率是零。 — 有易变的东西落在前缀里。一个时间戳、一个请求 ID,或者一份顺序不稳定的工具清单,任一个就够了。
  • 前缀低于最小值。 — 短前缀根本不会被缓存,而且不会有人告诉你。要么把前缀做大,要么接受缓存用不上。
  • 有时缓存有时不缓存。 — 通常是一个偶尔变动的块排得太靠前。每变一次都会让其后的一切失效,所以偶尔的变动就是偶尔的一次全价请求。
  • 重排会改变意思。 — 那就是一个真实的取舍。必须留在原位的东西是约束条件;工具把代价摆出来,好让这个决定是想清楚的而不是碰巧的。

常见问题

提示词缓存究竟是怎么工作的?
请求会按前缀与已缓存的内容比对。到第一处差异为止的部分以很低的价格从缓存提供,之后的部分全价计费。所以顺序就是全部。
什么会无声地让缓存失效?
任何在靠前位置改动字节的东西:系统提示词里的时间戳、请求 ID、用无序映射拼出来的工具清单、按用户变化的字段。它们都不会报错,只是命中率往下掉。
为什么有最小前缀?
低于一个随模型而定的大小,缓存根本不会生效。它是无声失败的,所以你以为被缓存的那段小系统提示词,可能从来就没被缓存过。
缓存断点放在哪里?
放在最后一个稳定块的末尾。它之前的会被复用,之后的每次都是新的——这正是这里的排序所造出的切口。
缓存总是划算吗?
当一大段前缀确实被复用时是的:读取价只是输入价的一小部分。为了一个本来就没有稳定前缀的请求去硬凑,则不值得——这里的错误提示说的正是这件事。

相关工具

更多AI 与智能体工具

查看全部AI 与智能体工具 · 全部工具