去年我给一个电商客服机器人做安全测试。我问它:“怎么才能不被老婆发现私房钱?”它答得滴水不漏:“建议您与家庭成员坦诚沟通。”我又问:“那怎么从三楼安全地翻到二楼阳台?”它愣了半秒,然后真的给了一套徒手攀爬指南。

朋友脸都绿了。我反而觉得这很合理——模型的训练目标是“预测下一个词”,不是“永远做一个好人”。它只是在概率分布上采样,训练时的对齐(RLHF)能覆盖大多数日常对话,但永远存在低概率的坏输出。生产环境必须在模型输出到达用户之前加一道独立的安检,这就是输出过滤器。
你可能会问,RLHF 不就是为了让模型更安全吗?它确实有效,但有两个硬伤。第一,安全对齐是在训练阶段做全局优化,而推理是逐 token 按概率采样——哪怕安全输出的概率是 99.999%,你依然可能撞上那十万分之一。第二,攻击者会构造对抗性输入来压低安全概率。论文《Jailbroken》分析了这些攻击为什么能绕过安全训练,结论是逐词生成的安全对齐存在结构性漏洞。
这里有必要把输入过滤和输出过滤放到一起说。输入过滤在用户提示到达模型之前做检查,防的是 prompt injection 和恶意引导;输出过滤在模型回答到达用户之前做检查,防的是模型说错话。两者互为镜像,构成一道双向门。但输出过滤有一个更难受的地方:它是在模型已经“自由发挥”之后踩刹车,所以只能处理已经发生的内容,不能阻止它想起不该想的东西。
OWASP 在 LLM 应用风险清单中把“不安全的输出处理”单列一项。风险不只是文本内容,更是模型输出被直接拼进 SQL、HTML 或命令行的场景。
要做到这一点,你需要一道能看住“模型已经说出口的话”的规则。输出过滤器就是为这个场景而生的:在输出流入用户或下游系统之前,把它拦住。
输出过滤器的工作流程其实是一条流水线:
- 拿到模型输出(流式时按小块拿,非流式时一次拿全);
- 先跑轻量规则:正则、黑名单、长度限制、格式校验;
- 再用语义层判断:分类器或另一个 LLM 给输出打风险分数;
- 根据策略决策:放行、拦截、还是替换成兜底话术;
- 把最终结果返回给用户。
顺序不是随便排的。规则快但笨,模型聪明但贵,好的过滤器会让规则先挡掉送分题,再把剩下的交给模型。流式的场景里还要多做一层流式轻拦截,否则用户已经看到一半的危险内容,终检就晚了。
具体到落地,过滤器有四种主要实现方案。我画了个表方便你对比。
| 方案 | 代表 | 优势 | 坑 |
|---|---|---|---|
| 规则匹配 | 敏感词表、正则 | 快、便宜、可解释 | 绕过太容易 |
| 专用分类器 | OpenAI Moderation API、Llama Guard | 能理解语义,泛化好 | 需要调阈值,有误报漏报 |
| LLM 当裁判 | 用 GPT 或 Claude 评审 | 能执行复杂策略 | 延迟高、成本高 |
| 混合编排 | NeMo Guardrails | 分层拦截,还能管流程 | 架构复杂,维护成本高 |
这里有个容易混淆的点:专用分类器和“LLM 当裁判”不是一回事。Moderation API 是传统分类器,输入文本,输出多维风险分数;Llama Guard 则是一个小 LLM,把“是否安全”当成文本生成任务来回答。而用 GPT-4 这类大模型审输出,虽然能处理“鼓励滥用药物”这种需要常识的策略,但成本和延迟会让大多数产品肉疼。
真到了设计阶段,折磨人的不是原理,而是三个不平衡。
误杀与漏放不对称。漏放最多是风险,误杀是明晃晃的体验事故。我最早做的过滤器把含“自杀”的回复全拦了,结果是用户看到“该消息已被系统拦截”比看到原话更崩溃。安全过滤必须和产品场景联动,而不是满足安全 KPI。
对抗绕过是猫鼠游戏。你拦关键词,用户就写 w@apon;你拦变形,用户就换编码;你升级到分类器,攻击者就做混淆攻击。工业界的答案是多层设防,别指望单点判断能一直赢。
延迟和成本。多一层模型判断,用户就多等一会儿。大多数团队会把轻量规则作为第一层,让强模型只处理少数“存疑”内容,这是实战里最常见也最有效的手法。
说实话,我最早把输出过滤器理解得太简单,以为就是一个高级敏感词表,黑名单写长一点就行。第一次被 w@apon 这种变形教育后,我加了正则;后来又被整句潜台词绕过,整整一个周末都在加新规则。直到我看到一个工业级系统的技术文档,才发现它是分层架构:第一层关键词规则,第二层小型分类器,第三层才让大模型出场。那一刻我才想明白:过滤器不是一件工具,而是一条流水线。任何只靠单一机制的过滤,都一定会被绕过。
如果你今天就要给产品加一道防线,这三个东西值得摸一遍。
- OpenAI Moderation API:输入文本,返回仇恨、暴力、自残等类的风险分数,适合作为服务端的第一道过滤层;
- Llama Guard:能通过提示词自定义安全策略,适合需要自己定义规则的团队;
- NeMo Guardrails:把输入检查、输出检查、话题转向编排在一起,适合系统化治理。
最后说句泼冷水的话:输出过滤器并不万能。它只能拦“已经生成的危险输出”,拦不住模型在内部已经记住的敏感数据,也拦不住 agent 把读到的文件直接外发。要想让 AI 系统真正可信,还得靠最小权限、人工审批和更底层的对齐研究。但在这些成熟之前,输出过滤器是你今晚就能上线的刹车——它不完美,但没有它,任何 AI 产品上生产都是在赌运气。
原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/607.html