Skip to Content
ArchitecturesMulti-Agent Debate

Multi-Agent Debate

Multi-Agent Debate has several agents answer the same question, read each other’s answers and argue over a few rounds; a judge (or a majority vote) then produces the final answer. Reserve it for high-stakes, contested questions where a wrong answer is expensive: it costs 3–5× a single agent and helps most on decision-style questions where different perspectives catch each other’s blind spots.

Based on Du et al. 2023 (Improving Factuality and Reasoning in Language Models through Multiagent Debate) and Liang et al. 2023 (divergent thinking via debate); similar patterns exist in AutoGen GroupChat and CAMEL.

Pattern

  1. Round 0 (independent). All debaters answer the original question simultaneously, with no awareness of each other. Run in parallel.
  2. Rounds 1..K (debate). Each debater receives the original question + the full transcript so far. They defend or update their position. All debaters in a round run in parallel.
  3. Optional convergence check. If every debater in a round gives the same final answer, terminate early. Defaults on; disable for adversarial-only debates where you want full rounds. A round-0 agreement ends the debate there with that answer, without calling the judge; agreement in a later round goes straight to synthesis.
  4. Synthesize. A judge Agent synthesizes the final answer from the full transcript. Without a judge, majority vote on the final round’s answers.

How answers are compared

Debaters are asked to end each reply with a Final answer: ... line (a \boxed{...} answer also counts). The convergence check and the majority vote compare those final answers, normalised for case, whitespace, surrounding punctuation and **bold**, not the whole replies. Two long, similarly worded arguments for different answers (“Final answer: 42” / “Final answer: 48”) don’t count as agreement, and differently worded replies that land on the same answer do.

  • Convergence needs every debater’s final answer to match. If any reply has no Final answer: line, the check falls back to comparing whole replies: every pair’s word-level Jaccard similarity must be at least convergence_similarity (default 0.85; 1.0 means whitespace-normalised equality).
  • Majority vote groups the replies by final answer (a reply without one is grouped by its whole text) and returns the first reply in the biggest group. Ties go to the answer given first in debater order.

Rounds

rounds counts the debate rounds after the independent round 0, so each debater answers up to rounds + 1 times. Du et al.’s rounds=2 (an independent answer plus one round of debate) is rounds=1 here. The default, rounds=2, is two rounds of debate.

Failures and budget

A debater that raises, or comes back interrupted (its own max_turns, its budget), sits that round out: the debate emits a debate.debater_failed event and carries on with the others. The debate fails only when no debater answers. Every debater’s and the judge’s spend is charged to the coordinator’s budget, and the coordinator’s budget is checked before each debate round.

Usage

from loomflow import Agent from loomflow.team import Team optimist = Agent("Argue for the positive case.", model="claude-opus-4-7") skeptic = Agent("Argue for the cautious case.", model="claude-opus-4-7") analyst = Agent("Argue from the data.", model="gpt-4o") cio = Agent( "You are the CIO. Read the full debate transcript and pick the " "best decision with one paragraph of justification.", model="claude-opus-4-7", ) team = Team.debate( debaters=[optimist, skeptic, analyst], judge=cio, rounds=2, convergence_similarity=0.85, model="claude-opus-4-7", ) result = await team.run("Should we adopt agent harnesses for our customer support stack?")

Here each debater answers up to three times: independently, then in two rounds of debate.

When debate pays off

  • High-stakes decisions: Pricing, hiring, security policy, architecture choices.
  • Adversarial review: Red-team / blue-team style argumentation.
  • Domain disagreement is informative: Different specialists with different priors should disagree, and the disagreement is the signal.

When NOT to use

  • Tasks with a clear right answer (math, code). Debate is wasteful.
  • Time-sensitive interactive use (chatbots): too slow.
  • Cost-sensitive bulk processing. 3–5× Single-agent cost.

Convergence ≠ correctness. Debaters may converge on a wrong answer if they share priors. Pair with diverse models and prompts so blind-spot triangulation is real. For best-of-N with a different- model critic, ActorCritic is cheaper.

Last updated on