12. 大模型应用的内容安全审核体系怎么搭建(敏感词、合规、Guardrails)?

整理内容安全审核、敏感词治理与 Guardrails 体系。

简单回答

内容安全审核需要在输入侧和输出侧各建一道防线。输入侧过滤恶意请求和 Prompt 注入,输出侧审核模型回答中的敏感信息、违规内容和幻觉。技术上是关键词匹配 + 分类模型 + LLM 审核的多层组合。整体要求是低误杀(不影响正常使用)、低漏放(不放过真正的违规内容)、低延迟(不显著增加响应时间)。

详细解释

为什么大模型需要专门的内容安全体系?

传统应用的内容安全主要针对用户生成内容(UGC),但大模型应用多了一个全新的风险源——模型生成的内容(AIGC)。模型可能输出虚假信息、歧视性内容、泄露隐私数据、生成有害指导等,而且这些内容看起来"很像样",比 UGC 的垃圾内容更难识别。

输入侧审核

输入侧审核在用户消息到达模型之前执行。第一层是关键词/正则匹配,拦截明显的敏感词、违禁词、Prompt 注入模式。速度快但覆盖面有限,容易被绕过。第二层是分类模型,用训练好的分类器判断输入是否属于敏感类别(色情、暴力、政治、违法等)。可以用 OpenAI 的 Moderation API,也可以自训模型。第三层对高风险场景,可以用一个快速 LLM 做意图判断——让小模型先判断用户的请求是否合规,再决定是否送入主模型。

输入审核的核心要求是快。这一步在请求关键路径上,每多 100ms 都影响体验。所以一般第一层关键词几毫秒搞定,分类模型几十毫秒,LLM 审核只在第二层结果不确定时才触发。

输出侧审核

输出侧审核在模型回答生成后、发送给用户之前执行。检查的内容包括:敏感信息泄露(模型是否输出了 system prompt 内容、用户隐私数据、内部 API 信息),违规内容(歧视、暴力、色情等),事实性问题(明显的虚假信息——虽然完全检测幻觉不现实,但一些明显的错误可以拦截),格式合规性(比如金融场景必须有风险提示,医疗场景必须有免责声明)。

流式输出给输出审核带来了额外挑战。token 是逐个推送的,你不能等整个回答生成完了再审核(用户已经看到了)。一种做法是边生成边做实时审核,检测到敏感内容时立即终止生成。另一种是做轻量的实时检查(关键词)+ 全文完成后的重量审核(分类模型),如果重量审核发现问题,标记这条回答并告知用户。

Guardrails 的设计

Guardrails 是比内容安全更广义的概念,除了安全合规,还包括输出质量和格式的控制。比如要求模型输出必须是合法的 JSON、不能超过一定长度、必须包含特定字段、不能包含竞品名称等。

NeMo Guardrails(NVIDIA 开源)是一个比较成熟的 Guardrails 框架,支持定义输入/输出规则、topic 控制、对话流程约束等。也有 Guardrails AI 等专门做输出校验的库。

多语言和文化差异

不同语言和地区的敏感词和合规标准不同。中文场景的敏感词库和英文完全不同,某些在一个文化中正常的表达在另一个文化中可能是禁忌。多语言应用需要维护多套规则和分类模型。

误杀和漏放的平衡

审核系统最难的是平衡误杀率和漏放率。过严的审核会拦截大量正常请求,影响用户体验;过松则存在安全风险。实际操作中通常对不同风险等级设置不同的阈值——高风险(违法、色情)从严,低风险(轻微敏感)从宽。同时需要建立人工复核机制,对分类模型不确定的 case 做人工审核,持续优化模型。

面试时可以这样答

内容安全审核要在输入和输出两侧各建防线。

输入侧是拦截恶意请求。第一层关键词匹配速度最快,第二层分类模型覆盖面更广,第三层 LLM 意图判断最准但最慢。三层按需触发,保证延迟可控。

输出侧审核更复杂,因为模型可能输出敏感信息泄露、违规内容或明显的错误信息。流式输出场景下不能等全部生成完才审核,需要边生成边做轻量检查,检测到问题及时终止。

Guardrails 是更广义的概念,不只是安全,还包括格式控制、长度控制、必填字段检查等。NeMo Guardrails 是一个比较成熟的框架。 最难的是平衡误杀和漏放。高风险内容从严,低风险内容从宽,同时建立人工复核的 feedback loop 持续优化。

常见追问

  1. 流式输出中检测到敏感内容后怎么处理?已经推送出去的内容怎么办?
  2. 幻觉检测在输出审核中怎么做?有可行的方案吗?
  3. 安全审核的延迟预算一般给多少?怎么优化?