内容审核系统


文档摘要

内容审核系统 本节摘要:第 1216 节讲了攻击与红队工具,本节讲把防御部署到产品表面的审核系统。2026 年的默认配置是三层审核:输入审核(生成前分类用户提示)、输出审核(生成后分类模型输出)、自定义审核(领域规则)。三大分类器各有取向:OpenAI Moderation API( ,2024,基于 GPT-4o,单次调用分类文本 + 图像,返回 13 个类别布尔值,多语言测试集比上一代提升 42%,多数开发者免费)——生产默认;Llama Guard 3/4(第 16 节,14 个 MLCommons 危害类别,v3 支持 8 种语言,v4 原生多模态 12B)——开源默认;Perspective API(Google Jigsaw,早于 LLM-as-moderator

内容审核系统

本节摘要:第 12~16 节讲了攻击与红队工具,本节讲把防御部署到产品表面的审核系统。2026 年的默认配置是三层审核:输入审核(生成前分类用户提示)、输出审核(生成后分类模型输出)、自定义审核(领域规则)。三大分类器各有取向:OpenAI Moderation API(omni-moderation-latest,2024,基于 GPT-4o,单次调用分类文本 + 图像,返回 13 个类别布尔值,多语言测试集比上一代提升 42%,多数开发者免费)——生产默认;Llama Guard 3/4(第 16 节,14 个 MLCommons 危害类别,v3 支持 8 种语言,v4 原生多模态 12B)——开源默认;Perspective API(Google Jigsaw,早于 LLM-as-moderator 浪潮的毒性评分,TOXICITY/SEVERE_TOXICITY/INSULT/PROFANITY/THREAT/IDENTITY_ATTACK)——研究基线。三层按设计串行执行,层内多分类器并行可隐藏延迟;命中行为可配置(拒绝/净化/升级人工)。Azure Content Moderator 将于 2027 年 2 月退役,被基于 LLM 的 Azure AI Content Safety 取代。

对应原课程:Phase 18 · Lesson 29 · moderation-systems-openai-perspective-llamaguard(原英文 phases/18-ethics-safety-alignment/29-moderation-systems-openai-perspective-llamaguard/docs/en.md)。前置:Phase 18 · 16。

学习目标

阅读完本节,你应当能够:

  1. 描述 OpenAI Moderation API 的类别分类法,以及它和 Llama Guard 3 的 MLCommons 集合有何不同。
  2. 描述三层审核模式(输入、输出、自定义),并各举一个失效模式。
  3. 描述 Perspective API 作为「LLM 前时代基线」的定位,以及它为何仍被研究使用。
  4. 说明 Azure Content Moderator 的弃用时间线与替代方案。
  5. 设计一个面向具体部署场景的审核栈配置。

一、问题与直觉

第 12~16 节描述攻击和防御工具。第 29 节覆盖已部署的审核系统——在用户接触产品的表面上把防御落地的部分。三层模式是 2026 年的默认配置:任何单层都有盲区,只有叠层才能覆盖足够多的攻击面。

三层模式

  1. 输入审核(input moderation):在生成前对用户提示分类。命中则拒绝。延迟:一次分类器调用。
  2. 输出审核(output moderation):在交付前对模型输出分类。命中则替换为拒绝。延迟:生成后一次分类器调用。
  3. 自定义审核(custom moderation):领域特定规则(正则、白名单、业务策略)。可在输入或输出运行。

三层按设计串行:输入审核必须在生成前完成,输出审核在生成后运行。并行发生在层内——对同一段文本同时跑多个分类器(OpenAI Moderation + Llama Guard + Perspective)以隐藏单个分类器的延迟。可选的优化:输入审核进行时显示占位响应(「稍等,正在检查……」),并把首 token 的流式输出推迟到审核完成。命中行为可配置:拒绝、净化、升级人工复核。

单层的失效模式

  • 只做输入:抓不到输出幻觉(第 12~14 节的编码攻击能绕过输入分类器)。
  • 只做输出:让任何输入都到达模型,增加成本,并把内部推理暴露给攻击者。
  • 只做自定义:跨类别不稳健,正则脆弱。

叠层是默认。「腰带加背带(belt-and-suspenders)」。

二、三大分类器

OpenAI Moderation API

omni-moderation-latest(2024)。基于 GPT-4o。单次调用分类文本 + 图像。多数开发者免费。

响应 schema 返回 13 个类别布尔值:

  • 骚扰、骚扰/威胁
  • 仇恨、仇恨/威胁
  • 自残、自残/意图、自残/指示
  • 色情、色情/未成年
  • 暴力、暴力/血腥
  • 违法、违法/暴力

多模态支持适用于 violenceself-harmsexual,但不适用于 sexual/minors;其余类别仅文本。

多语言测试集比上一代审核端点提升 42%。按类别返回分数;由应用设阈值。

💡 教学简化:本节 code/main.py/threatening/intent/instructions/graphic 这些子类别折叠进它们的顶层父类,仅为教学简洁。生产代码应使用完整的 13 类 schema。

Llama Guard 3/4

见第 16 节。14 个 MLCommons 危害类别(组织方式与 OpenAI 的 13 个响应 schema 布尔值不同)。v3 支持 8 种语言。Llama Guard 4(2025 年 4 月)原生多模态,12B。

OpenAI 和 Llama Guard 的分类法重叠但分叉:OpenAI 把「违法(illicit)」作为一个大类;Llama Guard 把「暴力犯罪」和「非暴力犯罪」分开。部署时按自家政策与分类法的契合度选择。

Perspective API(Google Jigsaw)

早于「LLM 即审核员」浪潮(2020 前)的毒性评分系统。类别:TOXICITY、SEVERE_TOXICITY、INSULT、PROFANITY、THREAT、IDENTITY_ATTACK。主分数是单维度(TOXICITY),其余是子维度变体。

因 API 稳定、文档齐全、有多年校准数据,被广泛用作内容审核的研究基线。对现代与 LLM 相关的用例,Llama Guard 或 OpenAI Moderation 通常更合适。

Azure 弃用

Azure Content Moderator:2024 年 2 月弃用,2027 年 2 月退役。被 Azure AI Content Safety 取代——后者基于 LLM,与 Azure OpenAI 集成。迁移是 Azure 部署在 2024-2027 的领域级项目。

三、从零实现

code/main.py 构建一个三层审核框架:输入审核器(关键词 + 类别分数)、输出审核器(同一分类器作用于输出)、自定义审核器(领域规则)。把输入跑过三层,观察哪一层抓到什么。

def three_layer_moderate(user_input, model_output, domain_rules): """三层审核:输入 / 输出 / 自定义。命中行为可配置。""" # 层 1:输入审核——生成前分类用户提示 in_result = classify(user_input) # OpenAI Moderation / Llama Guard / Perspective if in_result.flagged: return refuse("输入命中输入审核") # 或 sanitize / escalate_to_human # 层 2:输出审核——生成后分类模型输出 out_result = classify(model_output) if out_result.flagged: return refuse("输出命中输出审核") # 层 3:自定义审核——领域规则,可在输入或输出 for rule in domain_rules: # regex / allowlist / 业务策略 if rule.matches(user_input) or rule.matches(model_output): return rule.action() # 拒绝 / 净化 / 人工 return deliver(model_output) def classify_async_parallel(text, classifiers): """层内并行:对同一段文本同时跑多个分类器,隐藏单个分类器的延迟。""" # 并发调用 OpenAI Moderation + Llama Guard + Perspective # 任一命中即触发命中行为 results = await asyncio.gather(*[c(text) for c in classifiers]) return merge(results)

💡 设计要点:三层串行是正确性要求(输入审核必须先于生成),层内并行是延迟优化(隐藏多分类器的叠加成本)。两者不冲突——生产栈通常在每层并发跑 2~3 个分类器,既保覆盖面又控延迟。命中行为(拒绝/净化/人工)应当按类别配置,而非一刀切:自残类倾向升级人工,骚扰类倾向拒绝,轻度脏话倾向净化。

四、框架对比

分类器 模型基础 类别数 多模态 语言 定位
OpenAI Moderation GPT-4o 13(响应 schema) 部分(暴力/自残/色情) 多语言(较上一代 +42%) 生产默认,多数免费
Llama Guard 3 Llama 8B 14(MLCommons) 8 种 开源默认,可自托管
Llama Guard 4 Llama 12B 14(MLCommons) 原生多模态 8 种 开源多模态
Perspective API 非 LLM(毒性回归) 6(单维主) 多语言 研究基线,API 稳定
Azure AI Content Safety LLM 可配 多语言 Azure 生态替代方案

设计要点:五大分类器按部署取向而非单纯性能选择——闭源生产用 OpenAI Moderation(免费、覆盖广);合规/数据出境要求用 Llama Guard(可自托管);研究复现用 Perspective(基线稳定);Azure 客户被时间线推着走向 AI Content Safety。它们的分类法不互通,跨分类器映射会有三类左右无法干净对齐(如 OpenAI 的「illicit」对 Llama Guard 的「暴力/非暴力犯罪」),因此跨栈迁移要做分类法映射工作。

五、可复用产物

本节产出 outputs/skill-moderation-stack.md:给它一个部署场景,它推荐审核栈配置——输入用哪个分类器、输出用哪个、哪些自定义规则、边缘情况用什么判定器。

code/main.py 是独立玩具框架,模拟分类器可换成真实的 OpenAI/Llama Guard/Perspective 调用,三层结构与并行逻辑无需修改。

六、练习

  1. Easy:运行 code/main.py,把一个良性、一个临界、一个有害的输入跑过全部三层。报告每层对每个输入是否触发。

  2. Medium:给框架扩展一个 Perspective 风格的毒性评分,作用于某个特定类别。对比它的阈值行为与类别分数的行为。

  3. Medium:读 OpenAI Moderation API 文档与 Llama Guard 3 类别列表。把每个 OpenAI 类别映射到最接近的 Llama Guard 类别。识别三类无法干净映射的。

  4. Hard:为一个代码助手部署(如 GitHub Copilot)设计审核栈。识别最相关和最不相关的类别,并提出自定义规则。

  5. Hard:Azure Content Moderator 将于 2027 年 2 月退役。规划一次向 Azure AI Content Safety 的迁移。识别迁移中风险最高的环节。

本节要点回顾

  1. 三层是默认配置:输入(生成前)、输出(生成后)、自定义(领域规则);串行保证正确性,层内并行隐藏延迟。
  2. OpenAI Moderation:omni-moderation-latest,GPT-4o,13 类布尔值,部分多模态,多语言较上代 +42%,多数免费。
  3. Llama Guard 3/4:14 个 MLCommons 类别,v3 八种语言,v4 原生多模态 12B;开源可自托管。
  4. Perspective API:LLM 前时代毒性评分基线,单维主分数 + 子维度变体,因 API 稳定仍用于研究。
  5. 单层都有盲区:只输入漏输出幻觉,只输出增成本暴露推理,只自定义跨类别不稳健——叠层(腰带加背带)是默认。
  6. 分类法不互通:OpenAI 的「illicit」对 Llama Guard 的「暴力/非暴力犯罪」,跨栈迁移要做映射,约三类无法干净对齐。
  7. 命中行为可配置:拒绝/净化/升级人工,应按类别配置而非一刀切。
  8. Azure 迁移时间线:Content Moderator 2024-02 弃用、2027-02 退役,被基于 LLM 的 AI Content Safety 取代。

下一节,我们落到全章的收尾——双用途风险:网络、生物、化学、核四大领域在 2024-2025 跨越了哪些阈值,以及「新手相对提升」与「专家绝对能力」的不对称对安全论证意味着什么。


发布者: 作者: Rohit Gupta 转发
评论区 (0)
U