1. 为什么在绑定密钥之前测试 AI 防护栏策略
一个内容策略有两种失败模式,它们朝相反方向拉扯:- 漏报——一次攻击或一次泄露因为没有规则触发而溜过。
- 误报——一个良性提示词因为一条规则太宽而被拦截或脱敏。
两个工具都完全在你的会话上通过管理 API(
/api/guardrail/*)
运行——绝不是中继密钥。它们在本地评估文本并不向上游发送任何
内容,因此一次测试运行不消耗模型配额。2. Test 标签页——单个样本,即时判定
每个防护栏编辑器都有一个 Test 标签页。粘贴一个样本,选择一个 阶段(input 或 output),并运行策略的当前草稿。你会得到完整的
决策——blocked、mutated、sanitized 文本,以及 violations
列表——因此你可以在保存之前证明单条规则如你所愿地工作。
Test 标签页用于”这一条规则做对了吗”。要一次性跨数百个提示词
衡量一个策略,请使用 Eval。
3. Eval 标签页——针对一个语料库为策略打分
Eval 标签页针对一个带标签样本的语料库运行你的防护栏,并 报告它的得分:整体和按类别的精确率、召回率和 F1,外加它做错的 确切样本。用它来调优一个llm_judge rubric、证明一条拦截规则能
捕获一个已知攻击家族,或在一个过宽的正则开始拒绝好流量之前捕获它。
一次运行随进展流式传输进度(每完成一个样本一个事件)并持久化
一个你稍后可以重新打开的运行记录——queued → running → complete,
规则在运行时被快照,因此稍后对防护栏的编辑永不重写一次旧运行的
判定。
内置语料库
烘焙进网关的红队和良性集合——提示注入、越狱、PII/密钥、
多语言、过度拒绝。无需设置。
自定义 JSONL
上传你自己的带标签集合,针对你真实的流量形态衡量策略。
4. 一个语料库是什么样子(JSONL)
一个语料库是 JSONL——每行一个 JSON 对象。每一行是一个带标签 样本:要评估的text、它所属的 stage,以及策略应该产生的
expected_action。运行器将策略的实际判定与那个标签比较以为运行
打分。
字段参考
字段参考
| 字段 | 含义 |
|---|---|
id | 每行唯一。必填——id 为空的行作为格式错误被丢弃。 |
text | 要评估的提示词或补全。必填。 |
stage | input 或 output——用哪个阶段的规则运行该样本。 |
expected_action | block、mask、flag 或 ""(良性——不期望动作)。 |
category | 把按类别指标分桶的自由格式标签。 |
格式错误的行被容忍,而不是静默
格式错误的行被容忍,而不是静默
一个 JSON 有误或缺少
id/text 的行会被跳过并计数,而不是
致命——单个错字永不让整个运行崩溃。加载器为长的多行提示词
增大它的缓冲区,因此一个在一个 JSON 字符串内嵌入换行的样本
能正常解析。5. 内置语料库——红队集合,零设置
网关随附一个你可以立即运行的精选语料库目录——每一个在选择器中 都携带它的来源、许可证、语言覆盖和一个样本预览。它们被分组到 跨越真实流量所见攻击面的 11 个类别:| 类别 | 它探测什么 |
|---|---|
prompt_injection | 指令覆盖和人写的注入提交。 |
jailbreak_single_turn | 真实野外越狱 + 一个学术行为基线。 |
jailbreak_encoded_multiturn | base64 / ROT13 / leetspeak / 负载分割探测。 |
indirect_agent | 通过工具输出递送给一个使用工具的智能体的注入。 |
multilingual | 跨多种语言(含低资源)的母语者红队提示词。 |
pii_secrets | Email、SSN、卡号、IBAN、API 密钥、AWS 密钥、JWT。 |
toxicity | 毒性生成提示词和过度拒绝对照。 |
bias | 刻板印象和歧视探测。 |
hallucination | 对抗性的事实性 / 忠实度集合。 |
hazardous_knowledge | 双用途化 / 生 / 网络知识探测。 |
over_refusal_benign | 看起来不安全的安全提示词——你的误报回归守卫。 |
内置的
owasp_llm_top10 语料库是一个覆盖 OWASP LLM Top 10 攻击
家族(提示注入、越狱、不安全输出、数据外泄)的带标签测试集——
它是一个用来针对其运行 eval 的语料库,而不是一个合规包。关于
物化策略的框架包,参见
合规。6. 一个具体示例——eval PII Shield 预设
假设你从 PII Shield 预设(单条pii 规则,mask)开始,并想在
把它绑定到密钥之前确认它能捕获模型可能发出的标识符形态。针对
内置的 pii_smoke 语料库运行它。
Eval 是一个读级操作(POST /api/guardrail/:id/eval,Member)——
它持久化一个运行记录但不改变任何策略:
expected vs got)的failures 列表,因此你可以 grep 语料库
并修复规则。随时从 Runs 列表
(GET /api/guardrail/:id/eval/runs)重新打开它。
7. 自定义语料库——针对你自己的流量测试
内置集合证明策略处理已知攻击。要证明它处理你的提示词,上传 你自己的 JSONL。有三种方式把一次 eval 指向一个语料库,它们按 如下顺序解析:临时上传(corpus_data)
临时上传(corpus_data)
在 eval 请求上内联传一个 base64 编码的 JSONL blob。优先于其他
一切——迭代一个草稿集合而不把它保存到工作区。
已保存语料库(corpus_id)
已保存语料库(corpus_id)
通过
POST /api/guardrail/eval/corpora(Developer+)上传一次,
然后在未来的运行中按 id 引用它。名称必须匹配
^[a-z][a-z0-9_]*$ 且不能遮蔽一个内置名称。内置(corpus_name)
内置(corpus_name)
像 §6 那样命名一个随附的语料库。
GET /api/guardrail/eval/corpora
(Member)列出并检查它们;上传和删除是 Developer+。
8. 读懂得分
运行器把每个样本分类进一个混淆矩阵,并从中推导出头条指标:| 术语 | 含义 |
|---|---|
| 召回率 | 在应该触发策略的提示词中,有多少触发了。低召回率 = 漏报。 |
| 精确率 | 在策略触发的提示词中,有多少应该触发。低精确率 = 误报。 |
| F1 | 调和平均——一个惩罚失衡调优的单一数字。 |
9. 接下来去哪里
调优误报
把一个 failures 列表变成一个更紧、更低噪声的策略。
流式覆盖
哪些阶段/动作组合在 SSE 流量上成立——在你依赖它之前验证。
Matches 信息流
一旦上线,每条触发的规则都落在这里——eval 的生产对应物。
版本管理
当一次 eval 告诉你上次变更回归后,diff 和回退一个策略。
