第 21 章 · Debate 模式
一份“言之凿凿”的选品报告
那个跨境卖家让 Agent 帮他判断:“2026 年下半年,宠物智能饮水机在欧洲市场值不值得押?”
Agent 很快给了一份漂亮报告:市场规模、增长率、目标人群、建议进货量,条理清晰、数字充沛,结论是“强烈建议押注”。卖家差点就信了——直到他随手核了一个数据,发现那个“欧洲市场年增长 40%” 是模型编出来的,真实数字只有个位数。
这就是单个 Agent 最危险的毛病:它会自信地给出错误答案(confidently wrong),而且因为是自己生成的,很难自我察觉(第 14 章讲 Reflection 时也提到)。让同一个 Agent 反复检查自己,效果有限——它容易一条道走到黑,为自己的错误辩护。
现实中我们怎么逼近真相?让不同的人各抒己见、互相质疑。真理越辩越明。这个思路搬到 Agent 上,就是本章的 Debate(多智能体辩论,multi-agent debate)模式。
模式:让多个独立 Agent 互相质疑
Debate 的核心:让多个独立的 Agent 对同一问题各自给出答案,然后互相批评、反驳、修正,最后汇聚到一个更可靠的结论。
典型流程分四步:
- 独立作答(independent answering):N 个 Agent 各自独立回答同一个问题,不看别人的答案,以保证多样性。
- 交叉质疑(critique):每个 Agent 看到别人的答案,指出其中的问题、提出反驳和证据。
- 修正(revise):各 Agent 根据收到的质疑,修正自己的答案。
- 收敛(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 | 让每位辩手和裁判返回结构化立场/打分对象,使“收敛”有可比较的输入 | 无内建辩论编排,多轮循环需自己写 |
| Agno | Team 的 collaborate 模式可让多 Agent 就同一问题各自作答再汇总 | 接近辩论形态,但“互相质疑、多轮反驳”仍要自行编排 |
| pi | 多 Agent + 并行 + 一个裁判 Agent 自行组合,可跨 provider 当辩手 | 关键的独立性(各辩手用独立会话)由你在 harness 层显式保证 |
一句话点破:四家都没有一等的“辩论”原语——Debate 是通用推理模式,各家差别只在编排便利性,而真正决定成败的独立性,无论用哪家都得你自己保证。
小结
- Debate(multi-agent debate,多智能体辩论)让多个独立 Agent 互相质疑、收敛到更可靠的结论,专治单 Agent“自信地错”。
- 它的生命线是独立性:不同 Agent 犯不同的错,正确的部分在交叉质疑中存活;用同一模型同一提示会退化成“一起错还互相确认”。
- 流程遵循“先发散、后收敛”:首轮独立作答(隔离)→ 交叉质疑与修正 → 由裁判 Agent 按证据强度综合出结论。
- 它靠“视角更多”提质,区别于 Reflection 的“想得更细”和 ToT 的“想得更全”。
- 用对场景:对有明确对错的问题最有效,主观问题会变成各说各话;成本随人数和轮数爆炸,要设上限、能收敛就提前停。
ToT、Debate 都是“多想/多辩”来提质。下一章看一个更贴近实用的组合范式——Research-Synthesis(研究—综合),它也是本书贯穿项目的核心。