大模型 Guardrail 应该如何设计?为什么需要纵深防御?
简化版
Guardrail 不是单个审核模型,而是覆盖输入、上下文、模型输出、工具调用、最终执行的多层控制。规则和 Schema 处理确定性约束、分类器识别内容风险、权限系统限制动作、高风险操作由人工确认。每层都可能误判或被绕过,所以要按风险组合并持续监控。核心——模型前过滤、模型后校验、执行前授权;越靠近真实副作用,越要用确定性控制。
详细版
典型链路:
输入大小/格式校验 → 注入和内容风险检测 → 上下文隔离与脱敏 → 模型生成
→ 输出 Schema/事实/策略检查 → 工具鉴权与业务校验 → 沙箱执行或人工审批
Guardrail 要同时优化漏报和误报:拦截率高但把大量正常请求拒了会损害可用性;只看平均通过率又可能掩盖少量高危越权。安全关键约束应尽量由确定性执行层保证,而不是让生成模型自行遵守。
完整版教学
一、为什么需要”纵深”(单层必被绕过)
任何单一防线都有盲区:输入分类器可能被新攻击绕过,模型可能被越狱,输出检测可能漏判。纵深防御的思想是——假设每一层都可能失效,用多层不同机制叠加,任何单层被绕过都不至于直接造成严重后果:
输入层漏了 → 模型层可能拒 → 输出层可能拦 → 执行层权限挡住
多层不同机制 > 一个"超强"单层(单点故障)
关键:越靠近真实副作用(付款/删除),越要用【确定性控制】而非模型自觉
二、输入层
限制文本/文件/媒体大小,规范化编码,识别已知攻击模式和高风险意图
用户输入、检索内容、工具结果、其他 Agent 消息 → 全按【不可信数据】处理
输入分类器能早期分流,但不能理解所有上下文,也可能被新攻击绕过——它是第一道,不是唯一一道。
三、上下文与模型层
系统提示说明角色和边界;敏感数据进上下文前【脱敏】;不同用户/租户【记忆隔离】
高风险任务可选更严格的模型、解码配置、专门流程
⚠️ 系统提示不是秘密保险箱,也不是授权系统
四、输出层
结构:JSON Schema + 类型 + 枚举 + 长度验证
内容:分类器检查有害文本和隐私
事实:验证引用与关键字段
⚠️ HTML/Markdown/SQL/代码必须按【下游解释器】的安全规则处理,不能直接渲染或执行
(否则 XSS、SQL 注入、命令执行等经模型输出传导到下游)
五、工具与执行层(决定损害上限)
模型只【提出】动作 → 服务端按真实用户身份【鉴权 + 业务校验】
工具默认只读、最小权限、限域、限额;代码在沙箱运行
不可逆动作要求确认,支持审计或补偿
→ 这一层决定"注入成功后能造成多大影响"
六、策略组合与评估
按风险分级,别让所有请求都承担最高延迟:
| 场景 | Guardrail 强度 |
|---|---|
| 低风险聊天 | 轻量规则 + 抽样监控 |
| 个人数据/金融/工具写操作 | 严格分类 + 双阶段执行 + 人工审批 |
记忆钩子:多个相同模型互相审核 ≠ 独立防线——它们有相同盲区,最好组合不同机制(规则+分类器+权限+人工)。
评估要测已知攻击、变体、正常敏感请求、跨语言输入,统计漏报、误报、延迟、成本;记录 Guardrail 决策(脱敏),部署版本化策略、灰度、紧急停止、事件复盘。
七、常见误区与追问
- 误区:Guardrail 就是一个内容审核模型。 是覆盖输入/上下文/输出/工具/执行的多层控制,不是单点。
- 误区:单个超强防线就够。 单层必有盲区会被绕过,要多层不同机制叠加(纵深)。
- 误区:安全约束让模型自觉遵守就行。 关键约束要确定性执行层保证,越靠近副作用越不能靠模型自觉。
- 误区:模型输出的 HTML/SQL 可以直接渲染/执行。 必须按下游解释器安全规则处理,否则传导 XSS/注入/命令执行。
- 误区:多个相同模型互审=独立防线。 相同盲区,不是独立防线,要组合不同机制。
- 追问:Guardrail 的核心三步? 模型前过滤、模型后校验、执行前授权。
- 追问:为什么要纵深防御? 每层都可能失效,多层叠加使任何单层被绕过都不直接造成严重后果。
- 追问:哪一层决定损害上限? 工具与执行层——模型只提出动作,服务端鉴权+最小权限+沙箱决定注入成功后的影响。
八、加强记忆
Guardrail 记「模型前过滤、模型后校验、执行前授权」的多层控制:输入层(不可信数据+大小/编码/注入检测)、上下文层(脱敏+租户隔离,系统提示非保险箱)、输出层(Schema+内容+事实,HTML/SQL 按下游安全规则处理)、工具执行层(鉴权+最小权限+沙箱+确认,决定损害上限)。核心认知钉死:单层必被绕过要纵深叠加、越靠近副作用越用确定性控制、多个相同模型互审≠独立防线(组合不同机制)、按风险分级避免全请求最高延迟。同时优化漏报和误报。