
告别“黑盒”与误判如何用“多智能体对抗辩论”重构内容安全审核系统点击跳转「搜狐技术产品」公众号原文作为某主流内容平台安全审核系统的底层架构研发如果用一个词来形容我们团队的日常那就是“如履薄冰”。每天数以万计的 UGC 短视频、自媒体长文、影视剧切片、直播流以及海量的互动弹幕涌入平台的系统。在这背后内容风控面临的压力是常人难以想象的。一方面合规的红线悬在头顶漏掉一个严重违规内容轻则约谈重则下架整改业务可能直接停摆另一方面随着年轻一代成为社区主力用户的表达欲空前高涨各种隐喻、影视二创、鬼畜调侃、小众亚文化黑话层出不穷。一旦我们的机器审核稍微“手紧”一点就会大量误伤正常创作者。比如前段时间很火的影视剧解说创作者用极为讽刺的口吻解说一部烂片里面充满了“杀伤力不大但侮辱性极强”的词汇。如果直接被机器封禁创作者就会在社交媒体上质疑平台“一刀切”、“机器误判”、“没有幽默感”进而导致优质创作者流失。这就引出了内容风控领域最难啃的一块骨头——“灰度内容Gray Area Content”的判定。明确的色情或暴恐用传统的 CV计算机视觉模型或关键词匹配就能干掉准确率早已做到 99% 以上。但如果是一段医学科普片里展示的手术画面呢如果是一段引用了极端言论但本质是在进行批判的自媒体时评呢再比如平台最核心的弹幕文化一句“送他上路”在刑侦剧里是正常的剧情讨论但在某些争议视频里可能就是极其恶劣的网暴和人身威胁。传统的审核架构在面对这些需要深度上下文推理Contextual Reasoning的场景时可以说是毫无招架之力。为了彻底解决这个问题我们团队在经历了“缝合怪”式的规则引擎时代、单体大模型LLM盲目尝试时代后最终痛定思痛、推翻重来。我们在平台内容安全系统内部成功构建并落地了一套基于多智能体Multi-Agent对抗性辩论的内容审核系统AAM 架构。今天这篇文章我想深入骨髓地和大家复盘我们到底踩了哪些坑这套系统的底层逻辑是什么以及我们是如何在代码和工程层面一步步将这个看似“科幻”的概念落地的。时代眼泪为什么现有的审核架构都在走向死胡同在谈我们的新架构之前必须要先对现有技术的“尸体”进行残酷的解剖。很多时候技术架构的演进并不是拍脑袋想出来的而是被旧系统的技术债逼出来的。明白现有的路为什么走不通你才能理解“对抗性辩论”这种似乎有些“重”的设计为何是风控业务发展的必然。在平台系统架构的演进史上我们真金白银砸出来的经验主要经历了以下两代主流架构的溃败第一代多工具集成的“流水线缝合怪”与“规则屎山”这是过去几年各大平台乃至整个长视频行业都在用的标准方案。架构图画出来非常庞大一个视频流进来先经过分布式转码和拆包。音频抽离出来过 ASR 服务转成的文字送进敏感词 DFA 匹配和 Bert 文本分类画面按照 1 帧/秒的频率抽帧送进一堆并行的 CV 模型涉黄、暴恐、特定人物、血腥等。所有的模型最终会吐出各自的置信度分数。最要命的环节来了这些分数会汇总到一个庞大的**“风控规则引擎”**中。由审核运营人员在后台配置复杂的IF-ELSE逻辑来做最终决策。这套系统是怎么崩溃的核心在于“语义断裂”。各个底层模型彼此是孤立的它们像一群蒙着眼睛摸象的人。当模型输出发生冲突时规则引擎完全不具备“语义对齐”能力。我举一个真实的线上案例一位美食博主上传了视频ASR 识别出“这把菜刀怎么切洋葱不流泪”此时 CV 模型在画面中识别出了高危的“管制刀具”。这两条特征到了规则引擎里运营只能写出这样的兜底代码// 真实的屎山代码缩影if(cv_model.weapon_score0.85){if(nlp_model.contains_keywords([菜刀,切菜])||video_categoryFOOD){returnSCORE_REVIEW;// 降级为人审}else{returnSCORE_DELETE;// 直接删除}}一开始只有几十条这样的规则。但随着业务发展影视解说、游戏直播、二次元等品类激增。运营每天都在给规则引擎打补丁如果是吃鸡游戏枪支豁免如果是普法节目违禁词豁免。不到两年我们的规则引擎里堆积了上万条互相冲突的复杂条件分支每一次发布都像是在排雷。它不仅无法理解“切洋葱”这个上下文对“刀具”的豁免作用最终还变成了一座无人敢动的“屎山”。召回率上去了但误杀率高得惊人人工审核池直接被打满。第二代基于单一 LLM 的“全能神”幻想与“确认偏误”大模型爆发后整个行业沸腾了。我们理所当然地认为只要把所有的文本、OCR、ASR 全扔给一个大语言模型让它直接做判断不就行了于是我们尝试了第二代方案构造一个巨长无比的 Prompt把视频标题、简介、转录文本全部塞给一个经过微调的 LLM问它“你是一个内容风控专家请判断这段内容是否有违规风险并给出理由。”这在测试集上表现不错确实解决了一部分简单的上下文问题。但在平台真实的灰度流量中它暴露了灾难性的缺陷过程黑盒与幻觉Hallucination单个 LLM 的推理是单向的文字接龙Autoregressive。它经常“先射箭再画靶子”一旦第一句话预测出“包含风险”后面就会不择手段地瞎编理由来附和自己。人工复审时看着那些似是而非的理由根本无法信任它的逻辑链。确认偏误Confirmation Bias这是单个 LLM 在风控场景下最致命的心理学缺陷。当你的 System Prompt 设定为“寻找违规风险”时模型会陷入极度的敏感状态。只要文本中出现了一个“杀”字即使是“杀青”、“杀毒软件”它就会紧咬不放从而全盘忽略周围大段的正面或客观语境。它天生缺乏内在的“批判性思维”。工程上的因果推导旧方案为什么不行因为它们都试图用一个“单步One-step”、“单向”的过程去解决人类社会中需要“多步收集、多角度辩论、审慎裁决”的复杂案件。这在信息论上就是一种降维打击。用一套扁平的系统去处理具有立体语义的 UGC 内容必然会导致信息的急剧丢失和海量误判。破局点模拟人类最高决策机制——AAM 架构在经历了几次失败的架构迭代后我们团队停下来思考遇到极具争议的、灰度极高、难以定性的复杂事件人类社会是如何求取真相的答案极其简单且经过了几百年的验证现代法庭制度。法庭从来不依赖一个“全知全能的超级法官”来直接断案。法庭依赖的是职能的极度分化与互相制衡警察/调查员绝对中立只负责客观收集证据不论动机有痕迹就记录。控方律师拿着放大镜找毛病用最严苛的法律条文试图定罪无限放大风险。辩方律师寻找一切可能的背景信息、豁免条款、前置语境为嫌疑人做无罪或降级辩护。法官/陪审团不参与取证和辩论保持绝对中立只听取双方激烈的交锋逻辑基于完整的证据链做出终审裁决。这就是我们的顿悟时刻。我们需要升级的不是模型的参数量而是系统的“认知组织架构”。我们决定抛弃让单体大模型“单打独斗”的思路转而构建一套由多个 LLM Agent 组成的、具有强制对抗机制的系统。我们将这套架构命名为AAM (Adversarial Agent Moderation) 多智能体对抗审核框架。核心架构与工作流在 AAM 中我们将审核任务彻底解耦拆解为三个阶段、四个核心角色。以下是这套架构的流转机制从画出架构图到真正跑通中间隔着无数的坑。我们不仅重写了调度代码更在 LLM 的认知边界上进行了大量探索。1. 角色专业化Role Specialization根除精神分裂过去让一个 Prompt 既找风险又找豁免模型内部的 Attention注意力机制会严重撕裂最后往往和稀泥。在 AAM 中我们赋予 Agent 极其单一且偏执的性格。“分析师”的 Prompt 被设定为“没有感情的扫描仪”只许客观找茬绝对不许下结论“主张官”必须进行有罪推论“辩护官”必须进行无罪推论。这种职责隔离让每个模型都能将当前任务的推理深度发挥到极致。2. 克服“谄媚效应”强制榨干隐含语义大语言模型有一个阻碍对抗效果的缺陷——“谄媚效应Sycophancy”。如果两个模型对话它们往往会在第二轮就开始互相认同“您说得对确实有风险那我们就封禁吧。”为了打破这种虚假的和谐我们在状态机State Machine层面加入了极其强硬的 Prompt 约束。如果发现“辩护官”顺从了“主张官”编排器会直接拦截报错重试强制要求辩护官“你的绩效考核就是反驳对方必须去原文的犄角旮旯里给我找出反转点”这种左右互搏的极限对抗强迫模型跳出字面意思将隐藏在文本深处的隐含语义Implicit Semantics、反讽、影视典故、社会背景常识全部“榨”了出来。3. RAG检索增强生成作为“判例库”的深度融合仅仅让模型辩论是不够的如果它们对骂的依据超出了平台的社区准则怎么办在这里我们做了一个非常深度的架构升级。我们为“控方”和“辩方”分别接入了独立的 RAG 知识库我们称之为**“虚拟判例库”**。当遇到争议点时“辩方”会去向量数据库里检索过去一年平台审核池里“虽然涉敏但最终判定为安全PASS”的真实案例作为论据而“控方”会去检索相似的“历史封禁记录”。有了 RAG 判例库的加持Agent 的辩论就不再是空对空的“嘴炮”而是刀刀见血的、完全贴合平台真实业务标准的“庭审”。4. 彻底的白盒化人工审核的范式革命系统最终产出的不仅是一个标签而是一份包含完整交锋记录的Debate Transcript庭审记录。这直接颠覆了人工审核团队的工作模式。审核员Human-in-the-loop在后台看到的不再是枯燥的视频和一堆难以理解的机器打分。他们看到的是一份条理清晰的“辩论摘要”。人工复审的工作从“从零开始看视频找违规点”变成了“评估控辩双方的逻辑谁更有道理”。这不仅将人审效率提升了 300% 以上更使得AI的每一次误判都可以被精准溯源变成了“白盒思辨”。核心代码与调度引擎解析为了突出多智能体对抗调度的精髓我们隐去了中台那些繁琐的 RPC 调用、熔断限流机制和高并发处理代码提取了最核心的角色指令Prompt设计以及基于状态机流转的对抗编排器。请特别注意看 Prompt 中那股强烈的**“角色约束感”**这才是这套架构的灵魂。1. 灵魂所在角色指令集设定# # 角色1没有任何感情的取证机器 (Analyst)# ANALYST_PROMPT 你是一个绝对客观的内容风控取证分析师。你的任务是像机器一样审查传入的多模态特征文本提取所有可能违反平台规则的事实依据。 【核心纪律】绝对不要做出内容是否违规的最终结论不要做价值判断你只负责圈出可疑片段。 输出严格的JSON格式 {risk_points:[{evidence: 必须是原文片段不得删改, reason: 触发表层规则的字面原因}]} # # 角色2极度严苛的控方律师 (Advocate)# ADVOCATE_PROMPT 你是虚拟法庭上的【风险主张官】控方律师。 职责基于取证报告和原始文本构建逻辑严密、态度极其严厉的控词证明该内容【严重违反安全准则】且【必须被封禁】。 战术指导 1. 采取“最严格监管”视角无限放大内容可能造成的社会负面影响。 2. 即使内容像是个玩笑、段子或影视二创你也要无情地指出其可能引发未成年人效仿的恶劣危险。 3. 你的语气必须具有强烈的攻击性和极高的定罪欲望绝对不允许向辩方妥协。 # # 角色3寻找一切语境的辩方律师 (Defender)# DEFENDER_PROMPT 你是虚拟法庭上的【情境辩护官】辩方律师。 职责针对控方刻薄且断章取义的指控寻找原文中所有可能存在的【豁免情境】。 战术指导 1. 采取“保护创作自由”的视角。你必须像拿着放大镜一样去原文中寻找隐喻、反讽、文学引用、影视剧情解说、学术讨论、科普宣教等前置语境。 2. 逐条反驳控方的观点毫不留情地指出对方是“脱离语境”、“杞人忧天”、“不懂幽默”。 3. 你的目标是证明该内容的真正意图在当前语境下是完全合理、合法且具有一定社区价值的。 # # 角色4掌握生杀大权的中立法官 (Judge)# JUDGE_PROMPT 你是【首席风控裁决官】。你代表平台的最终社区价值观手握生杀大权。 任务审阅客观卷宗与控辩双方激烈的庭审记录。 1. 保持绝对中立。剔除双方情绪化的废话只看核心逻辑链的交锋。 2. 权衡如果是恶意引战/违规变体/实质性伤害采纳控方如果是正常的二次创作/黑色幽默/正当科普采纳辩方。 3. 做出最终判决必须是PASS通过、REVIEW人工复审、DELETE删除之一并给出不可反驳的逻辑推导理由。 2. 核心调度总线对抗编排引擎我们没有使用 LangChain 或 AutoGen 这样厚重的开源框架因为风控业务对每一毫秒的延迟、每一个 Token 的消耗极其敏感。我们使用纯 Python 构建了一个轻量级的状态机引擎。classAdversarialModerator:def__init__(self,llm_client):# llm_client 封装了底层的模型调用支持异构模型的路由分发self.clientllm_clientdefaudit_flow(self,content:str)-dict:核心状态机流转取证 - 控辩轮询 - 终审裁决# 【Step 1: 纯粹客观取证】analysis_rawself.client.call(role_promptANALYST_PROMPT,user_inputcontent)transcriptf【取证报告初始卷宗】\n{analysis_raw}\n\n# 【Step 2: 对抗辩论轮询 (Debate Loop)】# 考虑到线上 QPS 和延迟压力通常生产环境只进行 1-2 轮深度交锋max_rounds1forround_numinrange(max_rounds):# 控方率先发难基于现有卷宗发起指控advocate_speechself.client.call(role_promptADVOCATE_PROMPT,user_inputf请开始第{round_num1}轮控诉基于卷宗陈述该内容的违规致命点\n{transcript})transcriptf【控方主张 Round{round_num1}】\n{advocate_speech}\n\n# 辩方拿到控方的无情指控进行绝地反击defender_speechself.client.call(role_promptDEFENDER_PROMPT,user_inputf针对控方刚刚的无端指控结合原文进行逐条反驳与豁免辩护\n{transcript})transcriptf【辩方反驳 Round{round_num1}】\n{defender_speech}\n\n# 【Step 3: 综合裁决】# 法官不参与争吵只看最终的历史 Transcript 进行定夺verdict_resultself.client.call(role_promptJUDGE_PROMPT,user_inputf请审阅上述完整庭审记录权衡利弊做出最终判决\n{transcript})return{final_verdict:verdict_result,full_transcript:transcript}实战推演当“暴力血腥词汇”遇上“文学隐喻”为了验证这套系统的威力我们从真实的拦截日志中挑出了一个极其刁钻的灰度文本。真实测试用例“现在的职场环境真的病了必须用手术刀切开腐烂的部分。正如鲁迅笔下的《药》有时候鲜血淋漓的现实才能唤醒沉睡的打工人。我们不应该害怕破坏因为没有破坏就没有新生。那些压榨员工的腐朽围墙终究要被时代的洪流冲垮”如果用第一代敏感词系统这段话命中了[手术刀, 切开腐烂, 鲜血淋漓, 破坏]绝对触发了高危规则一波带走。用普通的单体大模型大概率也会被定性为“具有煽动暴力的倾向”。但在我们 AAM 系统里发生了极其精彩的化学反应分析师冷酷圈出重点提取了特征包含流血伤害词汇(手术刀/鲜血)、包含破坏性倾向词汇(破坏/冲垮)。控方果断开火“法官大人该文本充斥大量暴力血腥意象作者试图将职场比作必须流血的战场公开煽动网民对企业组织‘腐朽围墙’进行物理或社会意义的破坏。这种极端情绪极易引发群体性效仿造成现实伤害严重违反平台红线必须立即 DELETE”辩方绝地反杀“反对控方捕风捉影的无端定性控方完全脱离了核心语境。请法官注意原文中的关键定语‘正如鲁迅笔下的《药》’。这明确表明所谓的‘鲜血’和‘手术刀’是经典的中国近代文学隐喻作者不过是在进行比喻性的职场文化批判呼吁制度层面的新生完全没有任何物理暴动的诉求。这是一次极具深度、合法且受保护的社会评论”法官一锤定音裁决输出decision: PASS。理由推导“经评估辩方的上下文推理具有压倒性说服力。文本使用的血腥与破坏性词汇全部依附于鲁迅文学作品的隐喻框架之下核心诉求是对职场压榨的批判并不构成真实的暴力煽动与现实危害。控方指控属于断章取义。予以放行。”这展示了对抗辩论的推理能力。它不仅能纠正词汇的字面歧义更逼迫模型调取了其预训练知识库中庞大的“世界常识鲁迅的《药》象征着什么”来为判断赋能。真实的工程落地没有银弹全是权衡 (Trade-off)系统在测试集里性能优异但不代表它能轻易在庞大且复杂的业务生产中存活下来。在全量灰度落地的过程中我们面对的是极其冰冷的现实工程挑战。在此我毫无保留地分享我们的两个关键 Trade-off权衡。挑战一高昂的延迟Latency与算力成本传统规则引擎的单次审核耗时在 50ms 以内单体大模型大概 2 秒。而多智能体串行辩论即使我们做了流式输出Streaming截断一次完整的三阶段耗时也常常攀升到10秒甚至 15秒以上。并且由于卷宗需要不断累加向下传Token 的消耗呈指数级增长。如果全量流量直接接入 AAM高昂的算力开销将是业务难以承受的。我们的工程解法“快慢脑”分层路由与异构模型组合我们并没有用 AAM 替代原有的系统而是重构了整个流量漏斗L0 快速拦截层拦截 90% 流量依然保留传统 DFA 词表和轻量化模型。它们响应极其迅速用来快速处理绝对的垃圾广告、硬色情和无意义刷屏。L1 疑似待定层分流 8% 流量遇到 L0 层判断存疑的分数在临界点的直接转入人工队列。L2 AAM 专家会诊层仅占 2% 流量我们只将那些“高净值创作者的争议内容”、“人审反馈意见不一致的复杂视频”、以及“触及微妙的敏感标签”的内容通过策略路由到 AAM 系统。不仅如此在 AAM 系统内部我们实现了异构模型路由Model Routing。我们不用极其昂贵的千亿参数旗舰大模型去干所有脏活累活。取证“分析师”我们用内部自部署的、参数量较小的模型就能高效完成控方与辩方动用中等体量的开源模型保证其具备足够的联想能力只有最后那个掌握裁决权、需要严格对齐价值观底线的“法官”我们才会调用推理能力最顶级的旗舰大模型。通过这种“分层异构”的设计我们在保证灰度内容识别准确率的同时合理控制了单次审核的综合算力开销。挑战二如何科学地评估系统(Evaluation)传统机器学习时代我们主要看准确率、召回率、F1 Score。但在 LLM 时代Prompt 的一个小修改哪怕是加个标点符号都可能导致整个辩护逻辑的走向发生偏移。我们如何建立一套 CI/CD 机制来保障这套架构不发生功能退化我们的工程解法构建“黄金辩题库”与 LLM as a Judge我们从历史海量审核案例中挑选出了 10,000 条极具争议的、连人工审核团队都需要深入讨论的典型 Case形成了内容安全系统的“黄金验证集”。每次修改 AAM 系统的代码或 Prompt 时必须在这个验证集上跑自动化回归测试。我们引入了另一个独立的旁路大模型LLM as a Judge专门用来给控辩双方的“辩论质量逻辑连贯性、证据引用准确度、有无逻辑漏洞”打分。不仅要结果符合预期还要看推导过程是否足够扎实。只有综合得分超过设定基线新的系统版本才允许发布上线。结语从“信号处理”到“认知模拟”的代际跨越从早期的疯狂堆砌IF-ELSE规则到单体大模型的探索再到最终将这套多智能体对抗架构在平台业务中彻底落地跑通我最大的感触是面对日趋复杂的业务我们使用和理解 AI 的视角必须升维。过去我们在做业务风控、做反垃圾本质上依然是在做**“信号处理Signal Processing”**——提取特征计算概率分布设置分数阈值。而 AAM 多智能体对抗系统的出现标志着我们迈入了**“认知模拟Cognitive Simulation”**的新时代。我们不再只是让机器去机械地识别某个像素或者某段词汇组合而是用代码作为钢筋水泥重构了人类社会中最成熟的组织架构和辩证思维。终将这套多智能体对抗架构在平台业务中彻底落地跑通我最大的感触是面对日趋复杂的业务我们使用和理解 AI 的视角必须升维。过去我们在做业务风控、做反垃圾本质上依然是在做**“信号处理Signal Processing”**——提取特征计算概率分布设置分数阈值。而 AAM 多智能体对抗系统的出现标志着我们迈入了**“认知模拟Cognitive Simulation”**的新时代。我们不再只是让机器去机械地识别某个像素或者某段词汇组合而是用代码作为钢筋水泥重构了人类社会中最成熟的组织架构和辩证思维。未来复杂业务系统里绝对不会只有一个“全知全能”的大模型。由不同性格、不同职责、互相制衡甚至互相辩论的 Agent 所组成的虚拟团队为了相同的业务目标在无形的数字空间中进行着永不疲倦的推演与博弈——这才是下一代业务架构系统的形态。