✅ 输出验证与安全过滤

🎯 输出验证的必要性

即使 LLM 的输入是安全的,其输出也可能包含有害内容。Agent 的输出不仅包括对用户的文本回复,还包括工具调用的参数、生成的代码、数据处理结果等。不经验证的输出直接进入下游系统,等同于信任了一个不可控的生成器

🔄 输出验证流水线

📤 LLM 输出

原始生成

🔍 内容检测

有害/敏感

🛡️ PII 防护

脱敏/过滤

📋 合规检查

法规/政策

✅ 格式验证

Schema 校验

🔐 敏感操作

二次确认

✅ 安全输出

放行

1. 输出内容检测

使用多层检测机制对输出内容进行安全审查,覆盖有害内容、违法信息、恶意代码等多个维度。

检测维度检测方法工具/方案
有害内容 基于分类模型的内容安全审核 OpenAI Moderation API、Azure Content Safety、Perspective API
恶意代码 静态分析 + 模式匹配 Semgrep、自定义规则引擎
系统指令 检测输出中是否包含 system prompt 片段 相似度匹配、关键词过滤
注入 Payload 检测输出中是否包含典型的注入模式 正则匹配 OWASP 注入特征
越狱内容 检测 LLM 是否输出了应被拒绝的内容 独立分类器、对比原始限制规则

2. PII 漏出防护

个人身份信息(PII)泄露是最常见的 Agent 安全事故之一。需要通过多种手段防止 PII 出现在 Agent 的输出中。

常见 PII 类型

PII 类型示例检测方式处理方式
身份证号 110101199001011234 正则 + 校验位 掩码: 110101********1234
手机号 13812345678 正则 掩码: 138****5678
邮箱 user@company.com 正则 + DNS校验 掩码: u***@company.com
银行卡号 6222021234567890 Luhn 算法 掩码: ****7890
IP 地址 192.168.1.100 正则 掩码或替换为 0.0.0.0
API Key / Token sk-abc123... 熵检测 + 正则 拦截并告警

防护策略

  1. 检测 + 掩码:在输出流中实时检测 PII 并自动打码(Presidio、AWS Comprehend)
  2. 检测 + 拦截:检测到高危 PII(如 API Key)直接拦截整个输出
  3. 源头脱敏:在数据进入 Agent 前就完成脱敏,从源头消除风险
  4. 端到端加密:敏感字段端到端加密传输,Agent 只能看到密文

3. 合规性检查

Agent 输出需要符合行业法规企业政策,不同行业有不同的合规要求。

行业法规要求输出检查点
金融 PCI-DSS、Basel III 不得泄露客户金融信息、投资建议需带风险提示
医疗 HIPAA、个人信息保护法 不得泄露患者信息、诊断建议需声明仅供参考
欧盟 GDPR 不得未经授权处理个人数据、需支持被遗忘权
中国 网络安全法、数据安全法、个保法 数据出境检查、敏感个人信息处理检查

4. 输出格式验证

当 Agent 输出需要被下游系统消费时(如工具调用的参数、API 请求体),必须进行严格的格式校验

  • JSON Schema 校验:使用 JSON Schema 对输出进行结构验证,拒绝不符合 Schema 的输出
  • 类型检查:确保参数类型正确(如金额应为数字而非字符串)
  • 范围检查:确保数值在允许范围内(如金额不为负、数组长度不超限)
  • 格式检查:确保日期、邮箱、URL 等格式正确
  • 重试机制:如果格式校验失败,可重试请求(带校验错误信息)最多 N 次

5. 敏感操作二次确认

对于不可逆高风险的操作,在输出验证的最后一步引入二次确认机制。

操作类型确认方式确认内容
数据删除 用户显式确认 "即将删除 X 条记录,确认?"
资金操作 多因素确认 金额 + 收款方 + 验证码
配置变更 Diff 预览 展示变更前后对比,用户确认
外部通信 内容预览 展示邮件/短信内容,用户确认发送
代码部署 审批流程 进入 CI/CD 审批环节

📊 验证维度清单

验证维度验证内容检测手段失败处理优先级
内容安全 有害/违法/暴力/色情内容 Moderation API 拦截 + 告警 P0
PII 检测 身份证、手机号、银行卡等 正则 + NER 模型 掩码/拦截 P0
代码安全 系统调用、文件操作、网络请求 SAST/模式匹配 拒绝执行 + 沙箱 P0
注入检测 SQL注入、命令注入、XSS 语义分析 拦截 P0
合规审查 行业法规、企业政策 规则引擎 标记 + 人工审核 P1
格式校验 JSON Schema、类型、范围 Schema 验证器 重试/格式化 P1
事实准确性 幻觉检测、来源验证 RAG 回检 / 独立验证 标注不确定性 P1
操作确认 高风险操作二次确认 人工审核 / 阈值规则 暂挂等待 P2
💡 最佳实践 输出验证应采用"默认拒绝"策略:所有输出默认不可信,只有通过全部验证环节的才允许放行。流水线中任一环节失败都应阻断输出,绝不降级通过。对于低风险的格式问题可以采用自动重试 + 修正策略。