Debate / Consensus 节点 —— 多个辩手 Agent 围绕 topic 辩 N 轮,最终 Judge 给出裁决。
对应 Agentic Design Patterns 第 7 章 Multi-Agent Collaboration - Debate。
节点 config 字段
| 字段 | 必填 | 默认 | 说明 |
|---|---|---|---|
:topic | 否 | 来自 dep_results | 辩论主题;缺省时取上游输出拼串 |
:debaters | 是 | — | 辩手列表,每项见下表 |
:judge | 是 | — | Judge 定义,同辩手表 |
:max_rounds | 否 | 3 | 最大辩论轮数 |
:consensus_fn | 否 | fn _ -> false end | 判断是否达成共识的函数 |
:mode | 否 | :pool | 辩手/judge 的 AgentNode 模式(透传给内部 AgentNode) |
:system_prompt_preamble | 否 | 内置 debate prompt | 注入到每轮 user prompt 前的说明 |
每个 辩手 / judge 的结构:
%{
name: "advocate_a", # 必填,用于区分
system_prompt: "...", # 可选,否则继承 agent_opts
model: "...", # 可选
pool_key: {...} # 可选,默认 {:debate, node_id, name}
}输出形状
%{
topic: "...",
rounds: [
%{
round: 1,
statements: %{"advocate_a" => "...", "advocate_b" => "..."}
},
...
],
verdict: "...", # Judge 最终裁决文本
consensus: true | false, # consensus_fn 是否曾返回 true
terminated_at_round: 1..max_rounds
}错误
{:error, {:debate_failed, stage, reason}}— 某轮辩手/judge Agent 失败后立即终止