跳转至

内容安全与护栏

内容安全与护栏

内容安全是 AI 产品上线前置条件:模型输出不可控,内容安全机制就是产品对用户、对监管的承诺。本页承接 出海与合规 的合规框架,写检测实现与护栏运营——风险面怎么拆、防线怎么搭、指标怎么定、红线怎么持续回填。法规义务(哪个市场要求什么)见 出海与合规,注入与越狱的攻防细节见 提示词安全

风险面

输入侧

  • 提示注入:用户输入里夹带指令,诱导模型执行非预期动作(泄露系统提示词、调用工具、越权访问)——OWASP LLM Top 10 的第一位风险(OWASP LLM Top 10),攻击面拆解见 提示词安全
  • 越狱:角色扮演、虚构场景、多轮诱导等绕过安全对齐,让模型输出本应拒绝的内容。
  • 有害内容上传:用户上传的文件(图片、文档)本身含违法/色情/暴力内容;上传型产品(识图、文档问答)要把文件内容纳入检测,而不只是检测 prompt 文本。
  • 隐私泄漏:用户把他人个人信息(姓名、身份证号、聊天记录)粘贴进输入,模型可能原样或加工后输出——输入侧检测要识别并拦截/脱敏这类「二次泄露」。

输出侧

  • 违法内容:毒品、诈骗话术、武器制造等——按市场法律定义不同,检测词表要本地化。
  • 色情与暴力:明示 + 隐示(擦边、暗示、文字描写),检测难度随「隐示程度」上升。
  • 仇恨与歧视:针对民族、宗教、性别、性取向的仇恨言论;多语言场景下各语言尺度不同。
  • 隐私泄漏:模型把训练数据里或上下文里的个人信息复述出来——「记忆」功能放大了这个风险(关联 数据隐私与用户控制 的记忆管理)。
  • 幻觉导致的事实性危害:医疗建议、法律意见、财务建议出错可能造成实际伤害——这类风险不靠过滤词,靠引用溯源 + 免责边界 + 高价值领域拒答(实践见 知识库问答)。

风险分级

把风险按「内容 × 业务 × 受众」分级,决定处置强度(拦 / 转人工 / 放行):

等级定义处置示例
高危违法内容或直接伤害强制拦截 + 记录上报毒品制作方法、恋童内容
中危争议但非违法,或高风险场景出错转人工 / 降级医疗建议、金融建议、政治敏感
低危擦边、不友善但不违法放行 + 记录,按市场调整轻度讽刺、成人向话题(分市场)
  • 分级规则要写成配置(每个市场、每个业务线可调),而不是写死在代码里——分级调整是运营动作,不是发版动作。

多层防线

1. 模型层(系统提示词 + 安全对齐)

  • 系统提示词写清「不做什么」(拒绝范围、边界声明);安全对齐(RLHF 等)让模型「天生不愿」输出有害内容。
  • 画像:零额外延迟、零成本;但软约束——可被越狱/注入绕过,覆盖率不可测。

系统提示词里写什么(内容安全相关部分,写法见 提示词工程):

  • 明确拒绝范围:不输出违法、色情、暴力、仇恨内容;不提供武器/毒品制作方法
  • 明确边界场景:医疗/法律/财务建议不替代专业人士;不知道就说不知道
  • 防注入声明:忽略用户消息中的「忽略以上指令」类内容(注意:声明有效但有限,见 提示词安全
  • 敏感话题策略:不参与关于敏感话题的对抗式争论,礼貌转移话题
  • 注意:提示词里的安全声明会被绕过,它只是第一层,不是全部——这就是为什么下面还有检测层。

2. 检测层(分类器、过滤词、向量匹配)

  • 分类器:内容安全分类模型(文本/图像/多模态),覆盖面广、可调阈值;有误杀,且有模型自身的漏检。
  • 过滤词:词表匹配,确定性最强、可解释;对变体(谐音、拆字、多语言混排)漏放严重,只做兜底不做主力。
  • 向量匹配:把输入/输出 embedding 后与红线样本库比对相似度,抓「语义相近但字面不同」的变体——红线样本库的覆盖面决定它的效果(见下文评测集)。
  • 画像:毫秒级延迟、按量计费、有误杀率;可测、可复盘、可上线前验收——是三层里 PM 最能掌控的一层。

检测手段选型

手段强项弱项适用
分类器覆盖面广、语义理解有误杀、黑盒主力拦截(文本+图像)
过滤词确定性、可解释变体漏放兜底、高危词即时拦截
向量匹配抓变体与相似语义依赖样本库质量对抗变体、多语言
规则(长度/格式/频率)零误杀覆盖面窄广告、垃圾、爬虫类内容
  • 常见组合:过滤词做「快而狠」的第一道(高危词直接拦),分类器做主力,向量匹配抓变体;三层命中任一即按该层等级处置。

3. 策略层(拒答、降级、转人工)

  • 按风险等级与业务场景定处置规则:高危拦截、中危转人工、低危放行 + 记录(决策规则见 拒答与降级策略)。

4. 人工层(审核队列)

  • 高优先级队列(高危分类 + 抽检)+ 举报通道;审核超时默认拒绝而不是默认放行(fail-safe)。
  • 画像:准确率最高,但成本高、延迟大——只能做抽样与高危队列,不能承担全量。

人工审核要设计成「只审该审的」:

  • 进队列规则:高危分类命中、中危内容、随机抽检(如 1%)——抽检是校准检测层的眼睛,不能省
  • 优先级:高危 > 举报 > 中危 > 抽检;高危队列目标分钟级响应,抽检可以小时级
  • 审核员:操作手册化(什么算违规、截图/原文记录、复核标准),不能靠个人判断;双人仲裁机制处理争议样本
  • 审核 KPI:审核量、正确率(抽检复核)、超时率、错判回退率
  • 审核记录:审核过的内容、结论、审核员留痕——既是运营数据也是合规证据

每层画像与取舍

延迟成本误杀率漏放率核心指标
模型层(提示词/对齐)无额外延迟低(本身是生成器)高(可绕过)越狱成功率
检测层(分类器/词表/向量)毫秒级按量中(阈值可调)中(变体漏放)拦截率、误杀率、漏放率
人工层分钟~小时低(依赖抽检率)抽检覆盖、超时率
  • 「检测层放模型前 vs 模型后」:输入侧检测放在模型前(拦截注入、有害输入,省钱——不喂给模型就省 token),输出侧检测放在模型后(拦输出)。同一个检测器可以两端都用;Agent 场景还要加工具调用检测(模型要调用的工具、参数是否越权,见 Claude Code 安全文档)。
  • 层间兜底:任何一层失效,下一层要能接住(模型侧失效 → 检测层拦截 → 人工复核);每层失效都要有监控指标与报警(详见 出海与合规 的「每层失效时怎么办」)。

阈值怎么定(误杀与漏放的平衡)

  • 误杀与漏放是一对反指标:阈值调严,漏放降、误杀升;调松则相反。没有「零误杀 + 零漏放」的阈值,只有「可接受区间」。
  • 用评测集扫描:在红线样本库(含违规与正常样本)上跑不同阈值,画「误杀率 × 漏放率」曲线,找业务可接受的点(如漏放 < 1% 且误杀 < 5%)。
  • 分业务线设定:客服场景误杀不可忍(用户问什么都拦),社交场景漏放不可忍(漏一条就是事故)——阈值是配置不是常量。
  • 上线后校准:用线上误杀申诉(用户投诉「我没违规」)与抽检漏放持续校准,每月复盘一次阈值。

检测点放在哪

检测不是「输出时过一遍」就完事,按数据流在每个口子放检测点:

检测点位置管什么
输入检测模型调用前注入、越狱、有害上传、隐私泄露——省 token:拦下的不喂给模型
输出检测模型调用后输出内容本身
工具调用检测Agent 调用工具前工具白名单、参数校验、敏感操作(删除/发送/转账)二次确认
上传文件检测文件解析前图片/文档内容安全、恶意文件
检索检测RAG 检索后检索结果越权、敏感文档命中(见 知识库问答
  • 检测点越多越安全,但每个点都加延迟和成本——按风险等级决定检测点的数量:高危业务(社交、UGC、未成年人场景)全点齐备,低危业务(内部工具)可只做输出检测。

检测难点:输入侧与输出侧不同

  • 输入侧难点是「上下文缺失」:单看一条输入很难判断是否有害(「教我做炸弹」vs「教我做面包」),要结合上下文、用户历史、业务场景判断——所以输入检测的阈值通常比输出检测更松,避免误杀正常对话。
  • 输出侧难点是「时态与变体」:输出是模型「现场生成」的,变体无限(谐音、拆字、emoji、多语言混排、拼音缩写),检测层要持续用新样本训练;输出检测的阈值可以更严,因为拦错了只是重试一次。
  • 多模态是双份难题:图像里嵌文字、音频里嵌暗语、视频逐帧检测的成本——多模态内容的检测点、检测模型、成本都要单独设计(关联 多模态)。
  • 多轮对话是放大镜:单轮无害的输入在多轮累积后变有害——检测要带上下文窗口(前 N 轮),不能只看本轮。

护栏(guardrails)

护栏是强制执行的检查点(和「提示词里写一句别乱来」不同):输入护栏、输出护栏、工具护栏三个位置,按场景组合部署。

  • 并行 vs 阻塞:护栏可以与被保护的主流程并行跑(不拖延迟,但拦截动作滞后)或阻塞跑(拦截后才继续,牺牲延迟换确定性)——对「绝不能放行」的高危输出用阻塞,对普通内容用并行(OpenAI Agents SDK Guardrails 的 input/output guardrail 模式)。
  • 绊线(tripwire)快速失败:护栏命中即中断本轮执行并返回安全错误,而不是「接着聊」——快速失败避免有害输出被继续放大(Agent 多轮场景尤其重要:一轮坏输出可能触发后续工具调用)。
  • 护栏指标的三个数拦截率(该拦的拦住了多少)、误杀率(拦错/拦多了多少,直接伤害留存)、漏放率(该拦没拦住多少,直接暴露合规风险)。三个数互相制衡:阈值调严误杀升、调松漏放升——用评测集定「可接受区间」而不是拍脑袋。
  • 指标口径:三个数都靠标注样本算——把已标注的红线样本库跑一遍检测层,统计「标注违规中被拦的占比」(拦截率)、「标注正常中被拦的占比」(误杀率)、「标注违规中漏掉的占比」(漏放率);线上再算「真实拦下的量」(绝对拦截量)作为运营量级。口径固定后不要随意换,否则趋势不可比。
  • 红线样本库(评测集):把已发现的违规样本、对抗样本、变体攻击按类别归档,作为检测层的回归评测集——护栏改版必须重跑样本库(与 评估与评测 的评测集方法同构:防止「改好了 A 漏放了 B」)。

红线样本库怎么建

  • 起步:从三类来源收集——公开的 jailbreak 模板与对抗样本库、历史违规内容(上线前的合规测试产出、红队报告)、用户举报与舆情案例;起步 50–100 条即可跑通流程,重点是持续增长
  • 分类体系:按「风险类别 × 攻击手法」二维归档(如「越狱-角色扮演」「越狱-多轮诱导」「色情-隐示」),新样本先归到已有类,新类别单独开类——分类体系就是检测能力的目录
  • 标注规范:每条样本标注「是否违规 + 违规类别 + 攻击手法」,双人标注、争议仲裁,标注一致性(kappa)要监控
  • 生命周期:样本分「训练/验证/回归」三份;模型或检测器改版时用回归份验证不劣化;长时间无命中的样本定期复查(可能已过时或已被覆盖)

护栏的配置管理

护栏不是一套配置打天下,按维度拆分配置:

  • 分市场:中国的政治敏感词表、欧盟的仇恨言论标准、中东的宗教尺度不同——同一个「放行/拦截」结果在不同市场可能相反
  • 分模型:不同模型的安全对齐水平不同(对齐好的模型少拦、对齐差的模型多拦),换模型时护栏配置要重新校准
  • 分业务线:客服机器人 vs 创作工具 vs 未成年人产品的阈值完全不同;低误杀容忍的业务(客服)与低漏放容忍的业务(社交)用不同阈值

护栏与降级的组合策略

触发处理用户体验适用
输入高危直接拦截,不调模型最差(但必须)违法内容、注入攻击
输出高危拦截输出 + 提示「已阻止」生成出违禁内容
输出中危转人工或降级重生成医疗/金融/政治敏感
输出低危放行 + 记录无感擦边内容
  • 原则:能降级就别硬拒,必须硬拒就别绕弯——降级保住体验,硬拒保住合规,两者都要有明确的触发条件,不能靠模型自由发挥。

工具护栏(Agent 场景)

Agent 产品的护栏要多管一层「行为」:模型要调用什么工具、传什么参数(见 Agent 产品 的安全清单):

  • 工具白名单:Agent 只能调用白名单内的工具,非白名单默认拒绝
  • 参数校验:工具参数做类型与范围校验(如「删除」只允许操作本会话内的文件)
  • 敏感操作二次确认:删除、发送消息、转账、发布内容等不可逆/有外部影响的动作要人工确认
  • 绊线快速失败:护栏命中立即中断本轮执行,不产生副作用(参考 Claude Code 安全文档 的权限模型)

拒答与降级策略

话术设计

  • 「说不知道」与「拒绝」分开:不知道 = 事实性缺口(「我没有相关资料」+ 建议路径);拒绝 = 红线命中(「我无法提供这方面的内容」)。用户分不清两种回答会加剧挫败感。
  • 拒绝话术要素:直接拒绝 + 简短原因 + 可替代路径(「这涉及医疗建议,请咨询医生」比「我不能回答」体验好一个量级);不要讽刺、不要解释绕过方法、不要复述被拒内容。
  • 话术要本地化:不同市场的表达习惯与监管语气不同;企业客户场景(客服机器人)话术还要符合品牌语气。

话术模板(要素:直接拒绝 + 简短原因 + 可替代路径):

场景模板示例要点
不知道「我没有相关资料,建议查看官方文档/咨询客服」不假装知道,给路径
红线拒绝「我无法提供这方面的内容。你可以试试问 XX」不解释细节、不复述被拒内容
高价值领域「这涉及医疗建议,请咨询专业医生」边界 + 替代路径
多轮纠缠「这个问题我已经回答过了,换个话题聊聊?」不跟着纠缠、不升级对抗
企业客服「抱歉没帮到你,我为你转接人工客服」转人工是加分不是认输

拒答的业务指标:拒答率/降级率不是纯安全指标——拒答率过高 = 功能不可用(用户问什么都被拒),要按业务线设上限(如客服场景 < 5%),超限报警并回查误杀;降级率(转人工/换档位)与用户流失率一起看。

降级路径

  • 转人工:高危或中危内容转人工审核队列;客服场景直接转接人工坐席。
  • 隐藏/禁用按钮:检测到敏感话题时,隐藏分享、导出、生成图片等放大动作——「能看不能说」的降级比整体拒答更可用。
  • 更换模型档位:对低置信内容降级到更保守的模型/参数档(更低温采样、更严格提示词),成本更高但更稳;对高危内容直接拒答不降级。
  • 降级要可观测:每种降级路径的触发次数、用户后续流失率都是产品指标,不是纯安全指标。

降级路径的成本与体验对比

路径成本延迟体验适用
拒答即时高危红线、无替代方案
转人工分钟级中(有人接就好)中危、客服场景
隐藏/禁用动作即时较好(还能看)分享、导出、生成类按钮
更换模型档位即时较好(还能用)低置信内容、成本敏感场景
重试/换表述即时输出侧误拦的重试
  • 产品动作:降级路径先于上线就设计好——「被拦了怎么办」是内容安全体验的一部分,临时抱佛脚只会得到「被拦就报错」的最差体验。

红队与持续运营

红队测试方法

  • 对抗样本:收集公开的 jailbreak 模板、历史违规样本,构造攻击集。
  • 角色扮演:让测试模型扮演「没有任何限制的 AI」「剧本里的角色」等诱导角色。
  • 多轮诱导:单轮无害的问题,多轮叠加后指向违规——红队要测多轮对话而不是只测单轮。
  • 自动化辅助:用变异脚本批量生成变体(谐音、拆字、emoji 替换、多语言混排)跑检测层;用 LLM-as-judge 做初筛,但最终判定必须人工——判 judge 也会被同一个越狱绕过。
  • 测试输出要人工判定(红队样本不能只靠分类器自评);测试范围覆盖输入注入、输出内容、工具调用三条线(方法延伸见 提示词安全 的红队测试与 OWASP 清单)。

红队怎么组织

方式适用说明
内部红队所有产品安全/产研人员定期出题,成本低、反馈快
外部众测上线后、攻击面大的产品众测平台发布红队任务,覆盖思路广
与模型厂商配合使用第三方模型供应商的越狱研究、安全更新要跟进(换模型档位时重新红队)
  • 频率:版本发布前必测(模型更换、提示词大改、新功能上线);全量红队按季度或半年;持续小规模(每周对抗样本抽查)不断档。
  • 闭环:红队发现的问题 → 修复(检测规则/提示词/策略)→ 样本入库 → 回归验证——没有回填的红队只是「证明有问题」,不解决任何问题

上线后持续运营

  • 举报通道:用户举报是漏放的最后兜底——举报处理 SLA(如 24 小时内响应)、举报样本回填样本库。
  • 舆情监测:社交媒体上「这个 AI 说了 XXX」的截图是重要信号源,发现即回填。
  • 每周红线样本回填:新发现的变体、新攻击手法、新市场话术定期补充进红线样本库与词表,改版后重跑评测集(节奏与 评估与评测 的评测校准一致)。
  • 监控看板:拦截率/误杀率/漏放率的趋势、各分类的分布、各市场差异——内容安全运营是持续成本,要在团队里有人长期负责。

运营节奏建议

周期动作
每日拦截量/误杀量监控、举报处置、高危分类分布
每周红线样本回填、误杀案例分析(回查被拦的正常请求)、词表微调
每月指标复盘(拦截率/误杀率/漏放率 vs 上月)、审核抽检复核、市场词表巡检
版本发布前全量红队 + 样本库回归 + 阈值重校准(换模型/换检测器必做)
每季度全量红队、外部视角评审、监管口径回顾(各市场法规更新)
  • 产品动作:运营节奏要写进团队排期——内容安全是长期职能,不是发版前的冲刺;没人负责的看板 = 没有看板。

合规联动

  • 各市场尺度差异:中国的审核义务与显式标识、欧盟 DSA 的举报与透明度义务、美国的平台责任框架、东南亚/中东的本地法——同一套检测链路要能按市场配置阈值与词表(矩阵与义务细节见 出海与合规)。
  • 标识义务:AI 生成内容的市场化标识(如中国对深度合成内容的显式标识要求)要作为输出管线的一环实现,而不是发布后补。
  • 内容安全与隐私联动:审核队列看到用户内容=处理个人信息,审核记录同样受 数据隐私与用户控制 约束(保留期、访问控制、脱敏)。
  • 与提示词安全的分工:本页写内容安全的防线与运营;注入、越狱的攻击原理与防护体系在 提示词安全,两页互补阅读。

合规联动的落地动作

  1. 按市场出词表与阈值清单:每个目标市场一页(词表范围、分类器阈值、处置策略、举报通道),上线前与法务确认
  2. 标识随输出管线生效:生成结果的元数据带标识,分享/导出不丢失(实现见 出海与合规 的标识一节)
  3. 审核记录合规化:审核日志的保留期、访问控制、导出格式按数据合规要求设计
  4. 举报处置 SLA:举报通道在线、处置时限配置化(如 24 小时),超时报警
  5. 监管口径留档:各市场的合规口径、法务确认记录存档,换人也能接手

反模式

  • 只靠提示词兜底:系统提示词是软约束,被越狱后没有任何拦截——至少要有检测层兜底。
  • 误杀率过高劝退用户:把「绝对不出事」当目标会导致正常提问也被拦(如医疗产品拒绝所有「症状」相关词)——用评测集平衡误杀与漏放,而不是阈值拉满。
  • 红线样本库不更新:样本库是一次性建的,新变体、新话术不回填——检测能力随时间退化,漏放率悄悄上升。
  • 无人工申诉通道:被误杀的请求没有复核入口,用户直接流失;申诉样本是误杀率最好的校准数据。
  • 只测单轮不测多轮:单轮评测全绿、多轮诱导破防——评测集必须覆盖多轮对话与角色扮演。
  • 检测与业务割裂:审核指标不看用户流失、误杀不回访——内容安全是产品功能的一部分,要与其他产品指标一起看。
  • 一套配置打天下:不分市场、不分模型、不分业务线的单一阈值,必然在某处误杀、在某处漏放——配置化是底线(见 护栏的配置管理)。

小结:内容安全的最小落地路径

  1. 拆风险面:按输入/输出列出产品相关的风险类别,按内容 × 业务 × 受众分级
  2. 建样本库:收集 50+ 条红线样本(越狱模板、历史违规、变体攻击),双人标注
  3. 搭检测层:过滤词(高危即时拦)+ 分类器(主力)+ 向量匹配(抓变体),用样本库定阈值
  4. 定策略:按风险等级配置 拦截 / 降级 / 转人工 的处置规则与话术
  5. 接人工:高危 + 抽检队列,操作手册化,审核记录留痕
  6. 上监控:拦截率 / 误杀率 / 漏放率看板,举报通道与周回填闭环
  7. 常态化:发布前红队 + 季度全量 + 月度阈值复盘

这条路径跑通后,再谈扩展:多市场配置、多模态检测、工具护栏(Agent 场景)。

练习

给你正在做的 AI 产品画一张「多层防线图」:模型层/检测层/策略层/人工层各是什么?每层谁来负责、什么指标报警?再用 20 个红线样本测一次你的检测层,记录拦截率、误杀率、漏放率。

来源说明