多智能体辩论与协作


文档摘要

多智能体辩论与协作 本节摘要:第 05 节的 Self-Refine 是「一个模型批判自己」——有群体思维(groupthink)风险;CRITIC 把批判锚定在外部工具上——但工具并非总有。Du 等人(ICML 2024,《Society of Minds》)给出了第三条路:N 个模型实例独立提出答案,然后在 R 轮里互相批判,最终收敛。机制是:每个实例读其他实例的提案并批判,据批判更新自己的答案,R 轮后返回收敛答案。它在事实性、规则遵从、推理上都有提升——N 份独立提案的交叉核对降低幻觉,一个模型漏掉的规则被其他模型抓住,多种框架的碰撞收敛到更鲁棒的结论。原始实验因成本用 N=3、R=2;且跨模型组合(ChatGPT+Bard)胜过单模型辩论。

多智能体辩论与协作

本节摘要:第 05 节的 Self-Refine 是「一个模型批判自己」——有群体思维(groupthink)风险;CRITIC 把批判锚定在外部工具上——但工具并非总有。**Du 等人(ICML 2024,《Society of Minds》)**给出了第三条路:N 个模型实例独立提出答案,然后在 R 轮里互相批判,最终收敛。机制是:每个实例读其他实例的提案并批判,据批判更新自己的答案,R 轮后返回收敛答案。它在事实性、规则遵从、推理上都有提升——N 份独立提案的交叉核对降低幻觉,一个模型漏掉的规则被其他模型抓住,多种框架的碰撞收敛到更鲁棒的结论。原始实验因成本用 N=3、R=2;且**跨模型组合(ChatGPT+Bard)胜过单模型辩论**。《Improving Multi-Agent Debate with Sparse Communication Topology》(arXiv:2406.11776)进一步指出:**全连接(full mesh)并非最优**——稀疏拓扑(星形、环形、中心辐射)能在更低 token 成本下达到同等准确率(每个辩手只看部分同伴)。本节吃透辩论协议、稀疏拓扑的成本算术(N=5/R=3 全连接 60 次批判操作 vs 星形 12 次)、辩论何时有效(事实/规则/开放推理)何时有害(延迟敏感、成本敏感、简单查找),并用标准库实现全连接与稀疏两种辩论,测量 token 成本 vs 准确率。读完本节,你应能避免「收敛崩塌、中心失效、提示同质化」三种失败。

对应原课程:Phase 14 · Lesson 25 · multi-agent-debate(原英文 phases/14-agent-engineering/25-multi-agent-debate/docs/en.md)。前置:第 12 节(工作流模式)、第 05 节(Self-Refine 与 CRITIC)。

学习目标

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

  1. 解释辩论协议:N 个提案者、R 轮、收敛到一个共享答案
  2. 描述辩论为何能提升事实性、规则遵从、推理
  3. 解释稀疏拓扑:为何不必每个辩手都看到其他所有辩手。
  4. 算出全连接与星形拓扑的批判操作成本,说明何时稀疏更优。
  5. 用标准库在全连接与稀疏两种辩论上测量 token 成本 vs 准确率。
  6. 识别三种失败:收敛崩塌、中心失效、提示同质化。

一、问题与直觉

三种「自我/交叉修正」模式的区别:

  • Self-Refine(第 05 节) —— 一个模型批判自己。风险:群体思维——同一个模型的偏差会被它自己强化,「我同意我」。
  • CRITIC(第 05 节) —— 批判锚定外部工具(计算器、搜索)。强大,但工具并非总有——开放推理题没有现成工具可查。
  • 辩论(本节) —— 多个实例交叉批判,靠分歧收敛。填补了上两者的缺口:不依赖单一模型,也不依赖外部工具。

Society of Minds(Du 等人,ICML 2024)

  • N 个模型实例独立对同一问题提出答案。
  • 在 R 轮里,每个模型读其他模型的提案并批判。
  • 模型据批判更新答案。
  • R 轮后返回收敛答案。

原始实验因成本用 N=3、R=2。准确率随 Agent 数与轮数增加而提升(在 MMLU、GSM8K、国际象棋走子合法性、传记生成上)。**跨模型组合胜过单模型辩论**:ChatGPT + Bard 一起 > 任一单独。

稀疏拓扑

《Improving Multi-Agent Debate with Sparse Communication Topology》(arXiv:2406.11776,2024-2025)指出:全连接并非总最优。稀疏拓扑(星形、环形、中心辐射)能在更低 token 成本下达到同等准确率——每个辩手只看一部分同伴。

成本算术:

  • 全连接 N=5、R=3 = 5 × 3 = 15 份提案,每份读 4 个同伴 = **60 次批判操作**。
  • 星形 N=5、R=3(1 中心 + 4 辐条)= 15 份提案,辐条只读中心 = **12 次批判操作**。

省 80% 的批判操作,准确率往往持平——因为辐条之间若意见相同,看中心(汇总)就够了。

辩论何时有帮助

  • 事实性 —— N 份独立提案,交叉核对降低幻觉。
  • 规则遵从 —— 国际象棋走子合法性:一个模型漏规则,其他模型抓住。
  • 开放推理 —— 多种框架碰撞,收敛到正确答案。

辩论何时有害

  • 延迟敏感 UX —— N × R 串行轮是你可能没有的延迟。
  • 成本敏感规模 —— 每题 N × R token。
  • 简单事实查找 —— 一次查找比五场辩论便宜。

2026 实战实例

  • Anthropic orchestrator-workers(第 12 节)—— 带综合步骤的辩论变体。
  • LangGraph supervisor(第 13 节)—— 中央路由 + 专家 Agent,可把辩论实现为一个节点。
  • OpenAI Agents SDK(第 16 节)—— Agent 间来回 handoff 做迭代批判。
  • 多智能体评估 —— 配对辩论 + 评估器-优化器,产出评估信号。

⚠️ 三种失败模式:① 收敛崩塌(Convergence collapse)——所有 Agent 收敛到第一个错误答案上;用「强制分歧轮」缓解(前几轮要求每个辩手产出不同提案)。② 中心失效(Hub failure)——星形拓扑里,坏中心污染所有人;轮换中心或用多中心。③ 提示同质化(Prompt homogenization)——所有 Agent 用同一提示,产出相同答案;用多样提示和/或不同模型

二、从零实现

原课程 code/main.py 实现标准库辩论:

  • Debater 类(脚本化 LLM,带每辩手的意见漂移)。
  • FullMeshDebateSparseDebate 运行器。
  • 三个问题:一个事实题、一个规则题、一个推理题。
  • 指标:收敛答案、收敛轮数、总批判操作数。

Step 1:Debater(带意见漂移)

class Debater: def __init__(self, name, bias): self.name, self.bias = name, bias self.answer = None def propose(self, question): self.answer = scripted_llm(question, bias=self.bias) # 各自带偏差 return self.answer def critique_and_update(self, question, peers): critiques = [critique(self.answer, p.answer) for p in peers] self.answer = update(self.answer, critiques) # 据批判更新 return self.answer

Step 2:全连接 vs 稀疏拓扑

def full_mesh_round(debaters, question): ops = 0 for d in debaters: peers = [o for o in debaters if o is not d] # 每个看所有其他 N-1 个 d.critique_and_update(question, peers) ops += len(peers) return ops def star_round(debaters, question, hub): ops = 0 spokes = [d for d in debaters if d is not hub] hub.critique_and_update(question, spokes) # 中心看所有辐条 ops += len(spokes) for s in spokes: # 辐条只看中心 s.critique_and_update(question, [hub]); ops += 1 return ops

Step 3:收敛判定 + 成本

def debate(debaters, question, rounds, topology): for d in debaters: d.propose(question) total_ops = 0 for r in range(rounds): total_ops += topology(debaters, question) if converged(debaters): break # 提前收敛即停 return debaters[0].answer, r+1, total_ops

运行 python3 code/main.py 会输出每协议的准确率与成本;稀疏在 2/3 的问题上以更低成本匹配全连接。

💡 设计要点:辩论的收益是「N 份独立性的交叉核对」,但独立性会被提示同质化破坏——N 个用同一提示的 Agent 几乎等于 1 个。真正有效要求多样性:不同提示、不同模型、甚至不同的温度采样。没有多样性的辩论,只是更贵的 Self-Refine。

三、框架对比

方式 机制 适合 成本
Self-Refine(第 05 节) 单模型自批自改 廉价修正
CRITIC(第 05 节) 批判锚外部工具 有工具可查时 1× + 工具
辩论(全连接) N 提案者互看互批 高价值、可并行、要鲁棒 N×R×(N-1)
辩论(稀疏/星形) 辐条只看中心 同上但要控成本 N×R 左右
跨模型辩论 不同模型互批 准确率最高 N×R,多模型

四、可复用产物

原课程 outputs/skill-debate.md:脚手架一个多智能体辩论,可配置拓扑、N、R 与收敛规则,含强制分歧轮与多样性检查(提示是否同质)。

五、练习

  1. (Easy) 实现「强制分歧」规则:第 1 轮每个辩手必须产出不同提案。测其对收敛速度的影响。
  2. (Medium) 加置信度加权聚合:辩手返回 (答案, 置信度),聚合器按置信度加权。有帮助吗?
  3. (Medium) 把一个「Agent」换成另一个带不同意见的脚本 LLM。异质性提升准确率吗?
  4. (Hard) 测全连接 vs 稀疏在你的 3 题上的 token 成本,画成本 vs 准确率图。
  5. (Hard) 读 Society of Minds 论文,把玩具移植到 N=5、R=3。什么坏了?什么变好了?

本节要点回顾

  1. 辩论是第三条路:区别于 Self-Refine(单模型自批,群体思维风险)与 CRITIC(锚外部工具,工具非总有)。
  2. Society of Minds(Du,ICML 2024):N 实例独立提案,R 轮互批更新,收敛;原始用 N=3 R=2。
  3. 跨模型 > 单模型:ChatGPT+Bard 一起胜过任一单独;多样性是辩论收益的来源。
  4. 稀疏拓扑:全连接非最优,星形/环形/中心辐射在更低成本下持平(arXiv:2406.11776)。
  5. 成本算术:N=5 R=3 全连接 60 次批判 vs 星形 12 次,省 80%。
  6. 何时有效:事实性(交叉核对降幻觉)、规则遵从(漏规则被抓)、开放推理(多框架收敛)。
  7. 何时有害:延迟敏感(N×R 串行)、成本敏感、简单查找(一次查找比五场辩论便宜)。
  8. 实战实例:orchestrator-workers、LangGraph supervisor、Agents SDK handoff、多智能体评估。
  9. 三大失败:收敛崩塌(强制分歧轮)、中心失效(轮换/多中心)、提示同质化(多样提示+不同模型)。
  10. 没有多样性的辩论=更贵的 Self-Refine:收益来自独立性,独立性靠多样性保证。

下一节,我们直面生产 Agent 的失败模式——循环、幻觉工具调用、上下文中毒、成本失控等系统性失效,以及如何在架构层而非靠运气来防住它们。


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