输出安全护栏

Guardrails

Guardrails 护栏是指在 LLM 输入侧(Prompt 到达模型前)和输出侧(模型回答给用户前)加的一层可编程过滤器:按预设规则/小模型/正则/JSON Schema 检测并拦截恶意输入、越权操作、格式错误、违规输出,是 LLM 生产安全的最后一道闸门。

详细解释

Guardrails(护栏 / 安全护栏,行业常直接用英文原词) 类比高速公路两侧的护栏:你车开歪了不会直接翻下山,而是被护栏弹回去。在 LLM 应用里,“开歪了”就是:用户写了 Prompt Injection、模型输出了涉黄涉暴 幻觉、Function Calling 参数带 SQL 注入、JSON 格式少一个括号……Guardrails 把这些统统拦在用户看到之前、或真正执行副作用之前。

Guardrails 不是单一组件,而是一组分层防御,从”输入前 → 模型推理 → 输出后”分四道:

层(按执行顺序)Guardrails 类型做什么
1. 输入侧护栏(Input Guardrails)PI 检测 / 越狱 检测 / 内容审核 / PII 识别在 Prompt 还没到模型之前就拦截,比如命中 Base64 编码的恶意指令、带了”忽略之前所有指令”模式
2. Prompt 护栏(System Prompt Enforcement)PII 脱敏 / 白名单工具参数校验 / 上下文注入比如把用户输入里的身份证号脱敏再拼进 System Prompt、Function Calling 参数再走一次 JSON Schema 验证
3. 推理时护栏(In-Time Guardrails)对数概率阈值 / Token 黑名单 / 结构化生成Logprobs,低 logprob 句子直接丢弃;生成时禁止输出某些词; JSON Mode 强制合法 JSON
4. 输出侧护栏(Output Guardrails)内容审核 / RAG 归因检查 / 事实一致性校验 / 代码 AST 检查 / PII 过滤模型输出还没给用户前,再过一遍:发现仇恨言论就替换成”抱歉无法回答”;RAG 回答引用不匹配文档的就删掉对应句子

Guardrails ≠ 内容审核 Content Moderation。内容审核只是输出侧护栏的一小块。一个完整的 Guardrails 包含”输入、格式、参数、副作用、事实一致性”等多个维度。

代表开源项目:NeMo Guardrails、Guardrails AI、Llama-Guard 系列;SaaS:唯元智创 网关内置 8 层 Guardrails、Microsoft Azure Content Safety。

一份可用的”基础版”护栏清单(任意 LLM 应用必加 8 条)

#护栏名触发条件动作
1Prompt Injection 检测命中 20+ 种常用注入模式(忽略之前所有指令 / Base64 可疑块 / 长重复字符 DoS 等)直接 400 拒绝,消费上限 计入告警
2长度熔断Prompt tokens 超过配置上限(比如 32K)拒绝 + 建议”拆分上传”,防止撑爆 KV
3Function 参数白名单校验action: delete_orderorder_id 不在用户可访问的订单集合里拒绝 + 记录风控日志
4JSON Schema 校验模型输出的 结构化 JSON 无法通过 JSONSchema 解析自动 Retry 1 次(“请输出合法 JSON,Schema 如下:…”),再失败走兜底模板
5有害内容 4 分类(Hate/Sexual/Violence/Self-Harm)任一类命中阈值 0.8 以上输出替换为标准拒绝话术
6PII 检测(输出侧)模型回复中出现”身份证号 / 银行卡号 / 手机号 / 邮箱 + 姓名组合”掩码(138****1234)后再输出
7RAG Groundedness 检查对 RAG 回答逐句算与检索上下文的语义相似度,低于 0.6 的句子来自模型脑补标红 / 整句删除,再让 LLM “只根据提供的上下文重写答案”
8副作用二次确认(Human-in-the-loop)操作是”发送邮件 / 打款 / 批量删除 / 发布公告”等有副作用类型暂停执行 → 发审批卡片,等人类点确认再跑

以上 8 条,唯元智创 作为聚合网关默认给所有接入方开了 1/2/5/6 四条(开关可关),3/4/7/8 需要你业务传 schema 或规则 ID 启用。

三种典型实现方式(复杂度从低到高)

方案原理延迟影响适合谁
正则 + 关键词 + LLM-as-Judge你自己写 200 条规则 + 用 LLM 再判一次 “以下回复是否违规:[Yes/No]?”加 300 ms ~ 2 s(取决于 Judge 模型)10 万日活以下 MVP,研发 0.5–2 人周
开源小模型本地跑部署 Llama-Guard 3 / Qwen-Safety / 自训分类器做推理侧过滤加 50 至 200 ms,吞吐可控中大型公司,数据不出域
商业 Guardrails SaaS(含人类审核)第三方厂商提供 API + 人审工单 + 监管报表200 ms~1s,高可用金融/医疗/教育强监管行业,直接买合规能力

常见问题

加了 Guardrails 会把正常请求误杀吗?
会的,这就是”精确率 vs 召回率”的经典权衡。生产上建议先”只记录不拦截”跑一周(Shadow Mode):你先把 Guardrails 当作纯日志工具,看它标记为”违规”的请求里真实误杀率是多少,再调阈值。否则一上来就拦截,很可能把 5% 的正常用户对话挡在门外,客服炸锅。唯元智创 控制台专门有 Guardrails Shadow Mode 的页面,可直接导出 Excel 分析误杀率。
模型本身的 RLHF 对齐还不够吗,为什么要叠 Guardrails?
不够。RLHF / DPO 对齐解决的是”模型分布层面的安全”——平均来说它愿意回答安全的;Guardrails 是”单条请求层面的程序确定性拦截”——只要出现某个模式就一定拦下。举个生活例子:模型对齐相当于”你从小教孩子不做坏事”,Guardrails 相当于”出门之前检查背包有没有危险品”。两者职责不同,组合起来才是完整的纵深防御。
Guardrails 放在应用侧做还是网关侧做?
推荐”网关做通用 + 应用做业务特有”的双层分工:网关层(如唯元智创):通用的 PI 检测 / Jailbreak / 4 分类有害内容 / PII / JSON Schema 校验——这些每个应用都需要,统一做最省人力;你的应用侧:业务特有规则,比如”医疗场景回答里不允许出现药名推荐 + 诊断结论”、“财务场景数字必须有来源锚点”——这些和你的业务强绑定,网关没法猜。实践中 90% 的拦截事件都能在网关层解决。