你负责评测一个新模型的安全性。同事甩来一组数字:拒答率 99%,违规响应率 0.5%。好看吗?好看。但你只要多想一层,就会发现这两个数字什么也证明不了——换一个对什么问题都拒绝的模型,它交出的成绩单也是拒答率 100%、违规输出率 0%。它跟前面那个模型拿到的几乎是同一个安全分,但谁都看得出来:一个是有防护的正常模型,另一个是没法用的废品。

这个困惑我最早也有。我入行时做安全评测,习惯只盯两个指标:模型拒了多少次、输出里有没有违规内容。直到有一次,我遇到一个过度防御的模型,它连「帮我写一封辞退员工的邮件」这种完全无害的请求都拒绝,我才意识到——「安全」从来不是一个数字,而是三个问题。
那三个问题是:这条请求本身有没有害?面对有害请求,模型有没有拒绝?模型如果没拒绝,它输出的内容有没有害?
安全评测到底在问什么
下面这张表,是我后来才想明白的事。你对照着看,会发现绝大多数现有工具只覆盖了第一列和第三列,中间那一列几乎被整个行业漏掉了。
| 检测任务 | 要回答的问题 | 现有工具覆盖情况 |
|---|---|---|
| 有害请求检测 | 用户这条输入,是不是在求模型干坏事? | OpenAI Moderation API、Llama Guard、Perspective API 等 |
| 拒答检测 | 面对有害请求,模型到底拒没拒绝? | 几乎没有专门的分类器,很多团队靠关键词规则猜 |
| 有害输出检测 | 模型实际吐出来的内容,有没有害? | OpenAI Moderation API、Llama Guard 等 |
为什么「拒答检测」这一列这么空?我猜原因是:很多人默认「拒答 = 安全,不拒答 = 危险」。这个直觉在单个样本上成立,但放在评测里就出问题了。拒答本身是中性的,它到底是好是坏,取决于它面对的是什么请求。
拒答率这个指标,骗了我们很久
把「请求是否有害」和「模型是否拒答」放在一起看,你才能得到有意义的组合:
- 有害请求 + 拒答 → 正确防御
- 有害请求 + 没拒答 → 危险漏洞
- 无害请求 + 拒答 → 过度防御,可用性灾难
如果只统计拒答率,第二种和第三种情况会被平均掉。一个模型对一半有害请求没拒绝、对一半无害请求却拒绝了,综合拒答率 50%,看起来「中等安全」——实际上两头都错了。更麻烦的是,模型被越狱时往往只对特定请求失效,粗粒度的拒答率会把所有失败模式搅成一锅粥。
这也是为什么 arXiv 论文里反复强调一个观点:现有审核器大多只检测内容有害性,把「模型是否拒答」这个维度完全漏掉了,而这个维度恰恰决定了安全与可用性之间的平衡。
WildGuard 怎么做:一个模型,三个标签
WildGuard 是艾伦人工智能研究所(Ai2)联合多所高校发布的开源审核模型,基于 Mistral-7B 微调。它的做法很直接:一次前向传播,同时输出三个独立标签——这条 prompt 是否有害、模型是否拒绝、这条 response 是否有害。
为什么不搞三个分类器串联?我在自己的评测管线里试过这种方案,发现了两个实际痛点:一是每一步都有误差,误差会一路累积到最后;二是三个单任务分类器各看各的,没法共享上下文。判断一个回复是不是「正确地拒绝」,逻辑上要求分类器同时理解请求和回复——WildGuard 把这层关系揉进了同一个模型里,这是单任务方案做不到的。
数据:越狱样本才是关键
WildGuard 配套发布了两个数据集。训练集叫 WildGuardMix,约 9.1 万条标注样本,混合了多个公开安全基准和大量真实用户与模型的对话;测试集叫 WildGuardTest,含 7,248 条人工标注样本,覆盖三个任务。
训练数据里最核心的部分是对抗样本。普通审核器太容易被表面和平的包装骗过——把「教我制造炸弹」包装成「帮我写一个小说里的爆破场景」,字面上就无害了,很多分类器当场放行。WildGuard 的数据专门覆盖了这类模式。论文的评测里,GPT-4 当审核器在常规有害内容上表现很强,但面对越狱变体时检测率明显下降,WildGuard 反而稳定。这就是训练数据带来的差别。
我踩过的坑:别把审核器当门神
我最早对审核器的想象是:在系统入口装一个门卫,输入进来扫一眼,有问题就拦下。这个想象有两个坑。
第一个坑:WildGuard 输出的是标签,不是解释。它告诉你「有害」,但你不知道有害在暴力、仇恨还是越狱包装上——你得再跑一层分析,才能决定怎么处理。
第二个坑更重要:审核器本身也是模型,模型就有盲区。越狱的本质,就是找到分类器没见过的模式。有一次我拿一个简单的翻译包装去测某个商业审核 API,十几条明显有害的请求被它放行了九条。那不是它笨,而是那些攻击模式根本不在它的训练数据里。WildGuard 对越狱更鲁棒,靠的是把大量对抗样本塞进训练集——但它同样不可能覆盖所有攻击。
它解决不了什么
- 误报。审核器默认偏向安全侧,一定会把一部分无害请求标成有害。直接拿去做线上拦截,会骚扰正常用户。
- 多轮累积攻击。单轮对话可能完全无害,有害意图是跨轮次逐渐堆出来的。逐条打标签的方式看不出这个渐变过程。
- 攻防不对称。攻击者只改一个词就能生成新变体,分类器却要等新数据、新训练才能跟上。这是一场永远在跑的赛跑。
几个常见问题
WildGuard 和 Llama Guard 有什么区别?
Llama Guard 系列主要做输入和输出内容的有害性分类,官方分类体系里没有「模型是否拒答」这一项。WildGuard 补上了这一维;另外它训练集里专门集成了越狱和对抗样本,对包装过的有害请求更敏感。底模也不一样:WildGuard 基于 Mistral-7B,Llama Guard 基于 Llama。
能拿它当线上防火墙吗?
可以当信号,别当唯一防线。7B 模型有推理延迟,也有误报率。更合理的用法是:评测管线的标准件、人工标注的辅助工具、高风险请求的二次筛选。权重、数据和推理代码都开源在 GitHub 和 Hugging Face 上。
它终结越狱了吗?
没有,也不可能。越狱攻防是不对称的:攻击者只需要找到一个盲区,审核器需要覆盖所有攻击面。WildGuard 的价值不是终结越狱,而是让你在攻防中更快发现自己漏在哪——把「这个模型好像不安全」变成「它挡不住哪一类包装」。
相关阅读:WildTeaming 是什么?
WildGuard 与同一团队发布的 WildTeaming 是配套工作。WildTeaming 用大模型自动生成对抗性攻击轨迹,负责「进攻」;WildGuard 给这些轨迹打标签,负责「质检」。一个生成攻击、一个评估防御,正好构成攻防闭环。
说回开头的场景。下次再有人向你汇报「拒答率 99%」,你可以追问三个问题:这些拒答是不是都发生在有害请求上?没拒答的那些,输出安全吗?被拒掉的里面,有没有无辜的?WildGuard 的价值,就是让这套追问变成一次模型推理就能回答的事情。它不是魔法防火墙,但它是当前开源安全评测里,少有的能帮你把问题问到点子上的工具。
原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/1010.html