第 21 章 · Debate 模式

一份“言之凿凿”的选品报告

那个跨境卖家让 Agent 帮他判断:“2026 年下半年,宠物智能饮水机在欧洲市场值不值得押?”

Agent 很快给了一份漂亮报告:市场规模、增长率、目标人群、建议进货量,条理清晰、数字充沛,结论是“强烈建议押注”。卖家差点就信了——直到他随手核了一个数据,发现那个“欧洲市场年增长 40%” 是模型编出来的,真实数字只有个位数。

这就是单个 Agent 最危险的毛病:它会自信地给出错误答案(confidently wrong),而且因为是自己生成的,很难自我察觉(第 14 章讲 Reflection 时也提到)。让同一个 Agent 反复检查自己,效果有限——它容易一条道走到黑,为自己的错误辩护。

现实中我们怎么逼近真相?让不同的人各抒己见、互相质疑。真理越辩越明。这个思路搬到 Agent 上,就是本章的 Debate(多智能体辩论,multi-agent debate)模式

模式:让多个独立 Agent 互相质疑

Debate 的核心:让多个独立的 Agent 对同一问题各自给出答案,然后互相批评、反驳、修正,最后汇聚到一个更可靠的结论。

典型流程分四步:

  1. 独立作答(independent answering):N 个 Agent 各自独立回答同一个问题,不看别人的答案,以保证多样性。
  2. 交叉质疑(critique):每个 Agent 看到别人的答案,指出其中的问题、提出反驳和证据。
  3. 修正(revise):各 Agent 根据收到的质疑,修正自己的答案。
  4. 收敛(converge):多轮之后答案趋于一致,或由一个裁判 Agent(judge agent)综合出最终结论。

回到那份饮水机报告:如果一开始就让三个独立 Agent 分别作答,很可能只有一个编造了“40% 增长”,另外两个要么给出真实数字、要么坦承“查不到可靠数据”。到了质疑环节,那个编造的数字立刻会被另外两个抓出来——错误在辩论中被淘汰,靠谱的部分存活下来。

为什么有效:独立性带来纠错

Debate 有效的关键,是一个词:独立性(independence)

不同的 Agent(或同一模型的不同实例、不同提示、不同角色)会犯不同的错误。当 A 的错误恰好落在 B 的知识盲区之外、B 的错误落在 A 的盲区之外时——A 的错被 B 抓住、B 的错被 A 抓住,而双方都答对的部分会互相印证、稳稳存活。这就是“三个臭皮匠”的数学原理:只要错误是独立的、不高度相关,多个视角的交叉验证就能显著提升正确率。

反过来说,如果几个 Agent 用同一个模型、同样的提示、同样的偏见,它们会犯同样的错——那辩论就退化成“一起错、还互相点头确认”,不但没纠错,反而增加了你对错误答案的信心。所以 Debate 的生命线是保持真正的多样性:不同模型、不同角色设定、不同提示视角。

与 Reflection、ToT 的区别

这三个高级推理模式容易混,放一起对照最清楚:

模式核心动作谁在做靠什么提质
Reflection(第 14 章)自我审视—修正单个 Agent(或加一个审阅者)想得更仔细
Tree-of-Thoughts(第 20 章)探索多条路径—选最优一个思路,多个分支想得更全
Debate(本章)多个答案互相质疑—收敛多个独立 Agent视角更多

Debate 的独特价值在最后一列:它不靠“想得更深”或“想得更全”,而靠独立视角的相互制衡——这是前两者给不了的纠错机制。

用 pi 实现

Debate 也是一种在 harness 之上构建的模式,用 Part 5 的多 Agent 能力就能搭:

// 概念示意:多 Agent 独立作答 → 交叉质疑 → 裁判综合
async function debate(question, { agents, rounds = 2 }) {
  // 1. 独立作答(并行,且各自独立会话,保证多样性)
  let answers = await Promise.all(agents.map((a) => a.answer(question)));

  // 2. 多轮交叉质疑与修正
  for (let r = 0; r < rounds; r++) {
    answers = await Promise.all(
      agents.map((a, i) =>
        a.revise(question, {
          myAnswer: answers[i],
          othersAnswers: answers.filter((_, j) => j !== i), // 这一步才看到别人
        })
      )
    );
  }

  // 3. 裁判 Agent 综合出最终结论
  return judgeAgent.synthesize(question, answers);
}

两个要点值得盯住。第一,第 1 步必须并行且独立——每个辩手用独立的会话(session),别让它们互相看,否则会趋同、失去多样性;直到质疑阶段才把彼此的答案放进上下文。这体现了多 Agent 系统里反复出现的黄金原则——先发散,后收敛(diverge then converge)。第二,judgeAgent 不是简单投票,它要读懂各方的论据和反驳、判断谁的证据更硬,再综合成结论——裁判的质量,直接决定辩论的产出质量。

在 pi 里,这些辩手可以是同一 harness 起的多个 agent 实例,通过给每个实例不同的系统提示(乐观派/怀疑派/数据派)来制造视角差异;pi-ai 层还支持指定不同 provider,让你能真正用不同模型当辩手,把独立性做到底。

动手看看

拿一个你手头有标准答案的判断题(比如一个已经核实过的市场数据),先让单个 Agent答一遍、记下它错在哪;再起三个不同系统提示的 Agent 独立答、交叉质疑一轮,看那个错误是否被抓出来纠正。这个对照会很直观地让你感到“独立性”的威力。

再做个反面实验:把三个辩手换成完全相同的提示和模型,重跑一遍。多半你会看到它们迅速趋同——甚至一起坚持那个错误答案。这就是“多样性丧失”的样子,记住它,你才知道 Debate 什么时候会失灵。

实战中的几个坑

坑一:辩手不独立,一起错还互相确认。

  • 现象:几个 Agent 很快达成一致,但一致的结论是错的。
  • 原因:用了同一模型、同一提示,它们共享同样的偏见,犯同样的错。
  • 对策:强制多样性——不同 provider/模型、不同角色设定、不同提示视角,并让首轮作答彼此隔离。

坑二:成本随辩手数和轮数爆炸。

  • 现象:N 个 Agent × 多轮质疑 × 裁判,一次判断烧掉几十次调用。
  • 原因:Debate 天生调用量大,轮数和人数没设上限。
  • 对策:控制辩手数(3 个通常够)、轮数(1–2 轮往往就收敛)、达成一致就提前停;非关键问题别上 Debate。

坑三:用在纯主观问题上,变成各说各话。

  • 现象:对“哪个 logo 更好看”这类问题辩论半天,谁也说服不了谁,裁判也只能和稀泥。
  • 原因:Debate 靠“用证据纠错”,主观问题没有可核验的对错。
  • 对策:把 Debate 留给有明确对错的问题(数据核实、事实判断、逻辑推理);主观问题另用别的方法。

坑四:裁判偏心或被“说得多”的辩手带跑。

  • 现象:裁判总倒向发言最长、语气最肯定的那个,而非证据最硬的那个。
  • 原因:裁判提示没强调“按证据强度而非表达自信度判断”。
  • 对策:给裁判明确的评判标准(要求列出各方证据、指出谁的论据被成功反驳),让它对“自信但无据”的发言保持警惕。

对比:其他框架

Multi-agent debate 是学术界验证过能提升事实准确性和推理质量的推理范式,同样是模式层面的技巧——四家框架都能实现,差别在组织“多 Agent 独立发言 + 裁判收敛”的便利性。

框架Debate 怎么做特点
LangGraph每个辩手建成节点、多轮辩论建成循环、裁判建成汇聚节点,轮次与终止条件显式控制适合需精确编排辩论流程的场景
CrewAI把辩手和裁判定义成不同角色的 Agent,用 Crew 协作最贴合“一队有分工的下属互相质疑”,但要自己隔离各角色记忆以保独立
PydanticAI让每位辩手和裁判返回结构化立场/打分对象,使“收敛”有可比较的输入无内建辩论编排,多轮循环需自己写
AgnoTeam 的 collaborate 模式可让多 Agent 就同一问题各自作答再汇总接近辩论形态,但“互相质疑、多轮反驳”仍要自行编排
pi多 Agent + 并行 + 一个裁判 Agent 自行组合,可跨 provider 当辩手关键的独立性(各辩手用独立会话)由你在 harness 层显式保证

一句话点破:四家都没有一等的“辩论”原语——Debate 是通用推理模式,各家差别只在编排便利性,而真正决定成败的独立性,无论用哪家都得你自己保证。

小结

  1. Debate(multi-agent debate,多智能体辩论)让多个独立 Agent 互相质疑、收敛到更可靠的结论,专治单 Agent“自信地错”。
  2. 它的生命线是独立性:不同 Agent 犯不同的错,正确的部分在交叉质疑中存活;用同一模型同一提示会退化成“一起错还互相确认”。
  3. 流程遵循“先发散、后收敛”:首轮独立作答(隔离)→ 交叉质疑与修正 → 由裁判 Agent 按证据强度综合出结论。
  4. 它靠“视角更多”提质,区别于 Reflection 的“想得更细”和 ToT 的“想得更全”。
  5. 用对场景:对有明确对错的问题最有效,主观问题会变成各说各话;成本随人数和轮数爆炸,要设上限、能收敛就提前停。

ToT、Debate 都是“多想/多辩”来提质。下一章看一个更贴近实用的组合范式——Research-Synthesis(研究—综合),它也是本书贯穿项目的核心。