AI 与 LLMLLM 运维Performance 和 Scale 套餐

护栏与审核缓存

直接重放已通过验证器的答案,并拒绝屡次违规的请求,无需再次调用审核服务或模型。

种缓存,好的和坏的
2
次命中时的重新验证
0
拒绝结果的 TTL
短
步骤 1 / 5
生成并验证

命名空间已事先用 GUARD.CREATE 和 NCACHE.CREATE 创建一次。模型生成 JSON,您的验证器在存储任何内容之前先按 schema 检查。

示例会话playing
# 生成并验证
hotkv> GUARD.SET validated "Summarize ticket 812 as JSON" "{\"summary\":\"Login fails on Safari\"}"
OK

使用真实 HotKV 命令和示例回复的动画演示。点击任意步骤即可跳转。 命令和回复保持英文,与您在 HotKV 中输入和看到的完全一致。

问题所在

结构化输出和安全检查既慢又花钱。要调用一次模型,做一次 JSON schema 验证,可能还要用第二个模型来评判答案。重复的请求又要把这些全部重付一遍。而同一个恶意提示词被脚本发送一千次,就要送去审核一千次。

HotKV 如何解决

guard 缓存只存储已经通过您的 schema 验证或护栏检查的响应,因此一次命中可以确定能安全地原样重放。负缓存以较短的 TTL 记住“被审核拒绝”之类的拒绝结果,重复的恶意请求在到达审核服务或模型之前就被挡回。

逐步演示

逐条命令,看看发生了什么

  1. 01

    生成并验证

    命名空间已事先用 GUARD.CREATE 和 NCACHE.CREATE 创建一次。模型生成 JSON,您的验证器在存储任何内容之前先按 schema 检查。

    GUARD.SET validated "Summarize ticket 812 as JSON" "{\"summary\":\"Login fails on Safari\"}"
  2. 02

    重放,无需再次检查

    同一个请求再次到来。已存储的答案已经通过验证,因此原样返回。

    GUARD.GET validated "Summarize ticket 812 as JSON"
  3. 03

    审核拒绝了一个提示词

    一个有害的提示词被拒绝。这个拒绝结果会被记住五分钟。

    NCACHE.SET refused "prompt:9f31c2" "refused_by_moderation" TTL 300
  4. 04

    脚本再次尝试

    片刻之后同样的提示词直接被缓存挡回。审核服务和模型都不会被调用。

    NCACHE.GET refused "prompt:9f31c2"
  5. 05

    衡量两种缓存

    每个命名空间都会报告命中、未命中、淘汰和内存。

    GUARD.STATS validated
适用场景

真实场景

结构化提取

发票和表单被转换为经过验证的 JSON。重新处理同一份文档时,直接返回已验证的结果,无需再次调用模型。

面向消费者的聊天应用

反复轰炸同一提示词的滥用脚本被负缓存拒绝,审核成本保持不变。

失败的查找

“用户不存在”等否定答案会被短暂缓存,重试不会打到后端。

内置功能

您将获得

guard 缓存

只存储通过您检查的响应,因此一次命中可以安全重放。

GUARD.SETGUARD.GET

负缓存

在短时间内记住拒绝结果和未找到的结果。

NCACHE.SETNCACHE.GET

TTL 与上限

每个命名空间都有默认 TTL 和条目上限,满了之后进行淘汰。

GUARD.CREATENCACHE.CREATE

统计

按命名空间统计命中、未命中、淘汰、内存和节省。

GUARD.STATSNCACHE.STATS

常见问题

HotKV 自己会验证输出吗?

不会。由您的验证器或护栏来决定。HotKV 只存储您在通过检查之后放进 guard 缓存的内容。

拒绝结果应该缓存多久?

通常要短,以分钟而不是天计,这样政策变更或误判不会一直生效。可以按命名空间或按条目设置 TTL。

哪些套餐包含此功能?

guard 缓存和负缓存包含在 Performance 和 Scale 套餐中。

相关用例

在您自己的工作负载上试试

HotKV 兼容 Redis 协议,您可以把现有客户端指向它,运行这些相同的命令。