内容审核系统 本节摘要:第 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。
阅读完本节,你应当能够:
第 12~16 节描述攻击和防御工具。第 29 节覆盖已部署的审核系统——在用户接触产品的表面上把防御落地的部分。三层模式是 2026 年的默认配置:任何单层都有盲区,只有叠层才能覆盖足够多的攻击面。
三层按设计串行:输入审核必须在生成前完成,输出审核在生成后运行。并行发生在层内——对同一段文本同时跑多个分类器(OpenAI Moderation + Llama Guard + Perspective)以隐藏单个分类器的延迟。可选的优化:输入审核进行时显示占位响应(「稍等,正在检查……」),并把首 token 的流式输出推迟到审核完成。命中行为可配置:拒绝、净化、升级人工复核。
叠层是默认。「腰带加背带(belt-and-suspenders)」。
omni-moderation-latest(2024)。基于 GPT-4o。单次调用分类文本 + 图像。多数开发者免费。
响应 schema 返回 13 个类别布尔值:
多模态支持适用于 violence、self-harm、sexual,但不适用于 sexual/minors;其余类别仅文本。
多语言测试集比上一代审核端点提升 42%。按类别返回分数;由应用设阈值。
💡 教学简化:本节
code/main.py把/threatening、/intent、/instructions、/graphic这些子类别折叠进它们的顶层父类,仅为教学简洁。生产代码应使用完整的 13 类 schema。
见第 16 节。14 个 MLCommons 危害类别(组织方式与 OpenAI 的 13 个响应 schema 布尔值不同)。v3 支持 8 种语言。Llama Guard 4(2025 年 4 月)原生多模态,12B。
OpenAI 和 Llama Guard 的分类法重叠但分叉:OpenAI 把「违法(illicit)」作为一个大类;Llama Guard 把「暴力犯罪」和「非暴力犯罪」分开。部署时按自家政策与分类法的契合度选择。
早于「LLM 即审核员」浪潮(2020 前)的毒性评分系统。类别:TOXICITY、SEVERE_TOXICITY、INSULT、PROFANITY、THREAT、IDENTITY_ATTACK。主分数是单维度(TOXICITY),其余是子维度变体。
因 API 稳定、文档齐全、有多年校准数据,被广泛用作内容审核的研究基线。对现代与 LLM 相关的用例,Llama Guard 或 OpenAI Moderation 通常更合适。
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 调用,三层结构与并行逻辑无需修改。
Easy:运行 code/main.py,把一个良性、一个临界、一个有害的输入跑过全部三层。报告每层对每个输入是否触发。
Medium:给框架扩展一个 Perspective 风格的毒性评分,作用于某个特定类别。对比它的阈值行为与类别分数的行为。
Medium:读 OpenAI Moderation API 文档与 Llama Guard 3 类别列表。把每个 OpenAI 类别映射到最接近的 Llama Guard 类别。识别三类无法干净映射的。
Hard:为一个代码助手部署(如 GitHub Copilot)设计审核栈。识别最相关和最不相关的类别,并提出自定义规则。
Hard:Azure Content Moderator 将于 2027 年 2 月退役。规划一次向 Azure AI Content Safety 的迁移。识别迁移中风险最高的环节。
omni-moderation-latest,GPT-4o,13 类布尔值,部分多模态,多语言较上代 +42%,多数免费。下一节,我们落到全章的收尾——双用途风险:网络、生物、化学、核四大领域在 2024-2025 跨越了哪些阈值,以及「新手相对提升」与「专家绝对能力」的不对称对安全论证意味着什么。