Core Concepts
Reasoning Techniques
Memory Systems
Retrieval
Agent Types
Design Patterns
Training & Alignment
Frameworks
Tools & Products
Safety & Governance
Evaluation
Research
Development
Meta
Core Concepts
Reasoning Techniques
Memory Systems
Retrieval
Agent Types
Design Patterns
Training & Alignment
Frameworks
Tools & Products
Safety & Governance
Evaluation
Research
Development
Meta
Multi-Agent Debate (MAD) is a reasoning framework introduced by Du et al. (2023) where multiple LLM instances independently generate responses to a query, then iteratively critique and refine each other's answers over several rounds of structured debate until convergence. The approach significantly improves factuality and reasoning accuracy by leveraging diverse reasoning perspectives and cross-verification.
Individual LLM instances are prone to overconfidence, hallucination, and reasoning errors that go uncorrected in single-pass generation. Inspired by Minsky's “Society of Mind” concept, MAD treats multiple LLM copies as a deliberative group where errors in one agent's reasoning are challenged by others, driving convergence toward correct answers through argumentative pressure.
The debate protocol operates in three phases:
The standard configuration uses 3 agents debating for 2 rounds, balancing computational cost against accuracy gains.
The convergence mechanism relies on cross-verification pressure:
$$P(\text{correct after debate}) > P(\text{correct single agent})$$
Initially diverse responses (especially on uncertain queries) shift toward agreement as agents verify each other's claims. Incorrect answers typically stem from isolated reasoning errors that other agents identify and challenge.
class MultiAgentDebate: def __init__(self, model, num_agents=3, num_rounds=2): self.model = model self.num_agents = num_agents self.num_rounds = num_rounds def debate(self, question): # Phase 1: Independent generation responses = [] for i in range(self.num_agents): response = self.model.generate( f"Answer this question with detailed reasoning:\n{question}" ) responses.append(response) # Phase 2: Iterative debate rounds for round_num in range(self.num_rounds): new_responses = [] for i in range(self.num_agents): other_responses = [r for j, r in enumerate(responses) if j != i] prompt = self._build_debate_prompt( question, responses[i], other_responses ) updated = self.model.generate(prompt) new_responses.append(updated) responses = new_responses # Phase 3: Majority vote for final answer answers = [self._extract_answer(r) for r in responses] return majority_vote(answers) def _build_debate_prompt(self, question, own_response, others): other_text = "\n---\n".join(others) return ( f"Question: {question}\n\n" f"Your previous response:\n{own_response}\n\n" f"Other agents' responses:\n{other_text}\n\n" f"Examine the other responses carefully. Where do you agree " f"or disagree? Update your answer based on this discussion." )
Kim et al. (2026) discovered that modern reasoning models like DeepSeek-R1 and QwQ-32B internally simulate multi-agent debate without explicit prompting — a phenomenon they term “Societies of Thought” (arXiv:2601.10825).
Key findings from their analysis of 8,000+ reasoning traces:
This suggests that multi-agent debate is not merely an external prompting strategy but reflects a fundamental computational pattern for effective reasoning — paralleling collective intelligence in human groups where diversity enables superior problem-solving.
For $n$ agents over $r$ rounds, agent $i$'s response at round $t$ is:
$$a_i^{(t)} = \text{LLM}\left(q, a_i^{(t-1)}, \{a_j^{(t-1)}\}_{j \neq i}\right)$$
The final answer is selected by majority vote:
$$a^* = \text{mode}\left(\{\text{extract}(a_i^{(r)})\}_{i=1}^{n}\right)$$