Debate模式
1. 定义与边界
Debate 模式是让多个 Agent 独立生成观点、互相质询或批判,再由裁决器选择、合并或要求重试的协作模式。它的目标不是制造“热闹讨论”,而是在不确定、高风险或容易出错的问题上增加独立检查和证据对抗。
Debate 不适合:
- 简单事实查询,直接检索更可靠。
- 需要低延迟的在线交互。
- 没有可验证标准的开放式创意任务。
- 所有 Agent 使用完全相同提示、相同上下文、相同模型且没有独立证据来源的场景。
2. 为什么重要
研究论文显示,多 Agent debate 可在部分推理和事实性任务中提升表现,但这类收益依赖任务类型、模型能力、裁决策略和独立性。工程上不能把 debate 当成通用增益器。
它更适合三类问题:
- 高风险决策:需要多方提出反例和风险。
- 复杂推理:需要发现步骤错误。
- 证据冲突:需要比较不同来源和假设。
3. 核心机制
Debate 的关键不是 Agent 数量,而是独立性和裁决标准:
- 独立生成:各 Agent 在隔离上下文中形成初始答案。
- 证据声明:每个结论必须附证据、假设和不确定性。
- 交叉质询:Agent 针对对方证据、推理和遗漏提出问题。
- 修订:允许基于质询修正答案。
- 裁决:裁决器按评分 rubric、事实来源或测试结果选择结果。
4. 架构/流程
Debate 可分为三类:
| 类型 | 机制 | 适用 |
|---|---|---|
| Parallel self-consistency | 多个 Agent 独立作答后投票或裁决 | 数学、推理、代码方案 |
| Cross-examination | Agent 互相指出漏洞 | 安全评审、方案评审 |
| Evidence debate | 各 Agent 引用不同证据来源,裁决器核查 | 研究、事实核验、政策分析 |
更可靠的工程实现通常把 debate 和外部验证结合,例如单元测试、检索来源、静态检查、业务规则校验,而不是只让模型互评。
5. 工程实现
Debate 轮次配置:
debate:
agents:
- name: proposer
prompt: "提出可执行方案,列出假设"
- name: skeptic
prompt: "寻找失败模式和反例"
- name: verifier
prompt: "只根据证据和测试判断"
rounds: 2
independence:
hide_other_answers_until_round: 1
require_source_citations: true
judge:
rubric:
- factual_support
- logical_consistency
- safety_risk
- implementation_cost
stop_if:
consensus_score_gte: 0.85
max_cost_usd: 0.50
裁决器输入不要只给最终答案,还要给证据和反驳:
{
"candidate_id": "answer_b",
"claims": [
{
"claim": "Supervisor 模式适合集中审计",
"evidence_refs": ["source:langchain_multi_agent", "source:openai_agents_tracing"],
"confidence": 0.82
}
],
"known_objections": [
"Supervisor 可能成为单点瓶颈"
],
"tests_passed": ["citation_check", "policy_check"]
}
6. 生产实践
- Debate 前先判断是否有明确裁决标准。
- 对需要事实的 debate 引入检索和来源校验。
- 对代码和数据任务用测试结果裁决,而不是模型偏好。
- 控制轮数,通常 1-2 轮质询已经能暴露主要问题。
- 对 Agent 初始答案做上下文隔离,避免互相锚定。
- 记录每轮观点、反驳、修订和裁决理由。
- 对低风险任务禁用 debate,避免成本膨胀。
7. 常见反模式
| 反模式 | 问题 | 修正 |
|---|---|---|
| 三个同模型同提示互相讨论 | 独立性不足 | 使用不同角色、上下文或证据源 |
| 没有裁决标准 | 最终选择变成主观偏好 | 先定义 rubric 和验证器 |
| 用 debate 代替搜索 | 模型互相强化幻觉 | 必须核对权威来源 |
| 轮数过多 | 成本上升且收益递减 | 设置最大轮数和早停 |
| 裁决器看不到证据 | 无法判断事实 | 提供来源、测试和 trace |
8. 评测方法
Debate 评测应比较:
- 单 Agent baseline。
- 多采样 self-consistency。
- Debate + judge。
- Debate + 外部验证器。
指标:
| 指标 | 说明 |
|---|---|
| 准确率增益 | 与单 Agent 相比是否提升 |
| 单位成功成本 | 成本增加是否值得 |
| 事实错误率 | 是否减少无来源断言 |
| 裁决一致性 | 同样输入多次裁决是否稳定 |
| 反例发现率 | 是否能发现故障模式 |
| 安全拦截率 | 是否能发现高风险建议 |
9. 安全与治理
- Debate 中的对抗文本可能包含提示注入,不应直接转发给高权限工具。
- Skeptic Agent 不应为了“找漏洞”而生成可执行攻击步骤给 Executor。
- Judge 不能只看语言说服力,应看证据、测试和策略规则。
- 高风险裁决应要求人类审批。
- Debate trace 可能包含敏感推理和内部策略,需要脱敏和访问控制。
10. 工程手册补充
10.1 Debate 的使用边界
Debate 适合暴露假设和反例,不适合替代事实核验、测试和权限审批。
debate_config:
roles: [proposer, critic, judge]
max_rounds: 2
require_evidence: true
judge_rubric:
- factual_support
- constraint_compliance
- implementation_risk
forbidden:
- "用投票替代外部事实查询"
- "让 debater 调用高风险写工具"
| 失败模式 | 表现 | 处理 |
|---|---|---|
| 群体幻觉 | 多个 Agent 同意错误事实 | 要求 evidence artifact |
| 辩论表演化 | 文字很多,新增信息很少 | 限制轮次和信息增量 |
| Judge 偏置 | 总选更自信的一方 | 使用 rubric 和隐藏候选顺序 |
| 成本失控 | 每轮全量上下文互传 | 摘要状态和证据引用 |
上线清单:
- Debate 输出只能成为候选结论,最终还要 verifier 或人审。
- 评测要比较“无 debate、critic-only、full debate”的单位成功成本。
- 安全上,debater 只读,不能拥有 commit、外发、删除类工具。
11. 权威资料
- Du et al., Improving Factuality and Reasoning in Language Models through Multiagent Debate: https://arxiv.org/abs/2305.14325 (核对日期:2026-05-09)
- Chan et al., ChatEval: Towards Better LLM-based Evaluators through Multi-Agent Debate: https://arxiv.org/abs/2308.07201 (核对日期:2026-05-09)
- OpenAI Agents SDK - Tracing: https://openai.github.io/openai-agents-python/tracing/ (核对日期:2026-05-09)
- OWASP Top 10 for LLM Applications: https://owasp.org/www-project-top-10-for-large-language-model-applications/ (核对日期:2026-05-09)