Society of Mind and Multi-Agent Debate
Minsky's 1986 premise, that intelligence is a society of specialists, keeps getting rediscovered. In 2023 Du et al. turned it into a concrete algorithm: multiple LLM instances propose answers, read each other's answers, critique, and update. Over N rounds they converge on a consensus that beats zero-shot CoT and reflection on six reasoning and factuality tasks. Two findings matter: both **multiple agents** and **multiple rounds** contribute independently. The society beats a single-agent monologue, and the multi-round exchange beats one-shot voting.
Learning Objectives
- Write out the Du et al. debate loop (propose, read peers' previous-round answers, revise, majority-vote) and say why it beats self-consistency's i.i.d. samples.
- Separate the agent-count and round-count ablations and say which combination drives the gains.
- Run main.py and read err-vs-truth next to agreement to see why consensus is not correctness, including how the sequential update departs from the paper.
- Pick debate settings for a real task (agents, rounds, heterogeneity, adversarial slot) and spot sycophancy cascades, topic drift and compute blowup.
Problem
Self-consistency (sample one model many times and take the majority answer) is the cheapest reasoning improvement you can bolt on. It works, but it saturates fast. Doubling your samples stops buying a meaningful jump.
Debate attacks the saturation. Instead of N independent samples from one model, N agents read each other's reasoning and revise. The samples are no longer i.i.d., so the correlation between them drops, and the convergence point is often correct where i.i.d. voting was confidently wrong.
Concept
The Du et al. 2023 algorithm
From arXiv:2305.14325 (ICML 2024):
- Each of N agents produces an initial answer to the question.
- For round r = 2..R: each agent is shown the other agents' round r-1 answers and asked "considering these, give your updated answer."
- After R rounds, majority-vote the final answers.
The paper tests on MMLU, GSM8K, biographies, MATH, and factuality benchmarks. Debate consistently beats CoT and Self-Reflection.
Two independent knobs
Ablations from the same paper:
- Agent count alone (1 round, majority vote of N) beats single-agent on most tasks, but plateaus.
- Round count alone (1 agent seeing its own prior reasoning) barely helps, which is reflection's known weakness.
- Both together produces the big jumps. The multi-round exchange between multiple agents drives the gain.
Why it works
Two mechanisms:
- Exposure to disagreement. When an agent sees another agent's reasoning chain with a different conclusion, it has to either justify or update. Either way, the context for round r+1 is richer than the context for round r.
- Correlated error reduction. In self-consistency, all samples come from the same model, so the errors correlate and you average into a confidently wrong answer. Different models or different seeds decorrelate them. Different debated views decorrelate them further.
Heterogeneous debate
A-HMAD and related follow-ups use different base models for different agents. Llama + Claude + GPT debating reduces monoculture collapse (Lesson 26) because the correlated errors of one model family are not shared by the others.
The downside: a weak model in the debate can drag the consensus toward its wrong answer (see "Should we be going MAD?", arXiv:2311.17371).
NLSOM: the 129-agent extension
Zhuge et al. ("Mindstorms in Natural Language-Based Societies of Mind," arXiv:2305.17066) scaled this idea to 129-member societies. The result: specialization and self-organization emerge with scale, and the system outperforms single-agent on tasks like visual question answering.
Failure modes
- Sycophancy cascade. Agents defer to whichever agent sounds most confident, and the debate collapses to the loudest voice. Prompting for adversarial roles ("one agent must argue the counter-position") helps.
- Topic drift. Debates over many rounds drift from the original question. Re-inject the question each round to pull them back.
- Compute blowup. N agents × R rounds is N·R LLM calls, each with a growing context. A 5-agent, 5-round debate is 25 calls at growing context, and the cost per question can exceed 10× a single CoT call.
Build It
code/main.py runs a 3-agent × 3-round debate on a numeric question whose true answer is 42. The agents start at 38, 42.5, and 51, each with a scripted confidence. No model is called: each agent "updates" to the confidence-weighted average of its own answer and the others', so the round-by-round log shows the debate dynamics and nothing else. A second run goes to 5 rounds.
The demo shows two effects:
- A single round of exchange pulls the outliers toward 42, but the best-placed agent drifts away from it, and all three end up close to each other.
- Extra rounds past round 2 show diminishing returns (matches Du et al.'s plateau).
The log also prints error against the truth, and it does not shrink. The group settles at 44.5, which is further from 42 than the round-0 mean of 43.83. Agreement reaches 1.00 because the update rule averages, not because anyone got closer to being right. The error also drifts the wrong way because each agent revises in sequence and sees its neighbors' new answers (see the Author's Note).
Run:
python3 code/main.py
Use It
outputs/skill-debate-configurator.md configures a debate for a new task: number of agents, number of rounds, heterogeneity (same model vs mixed), role assignment (symmetric vs one-adversarial). It also estimates the token cost before you run.
Ship It
If you ship debate:
- Cap rounds at 3. Du et al. show 3 rounds capture most of the gain. More is cost, not quality.
- Cap agents at 5. Beyond 5, context bloat and cost dominate.
- Heterogeneous by default. At least two different base models in the pool.
- Adversarial slot. One agent prompted to disagree regardless. Breaks sycophancy.
- Log each round. Debate systems that hide intermediate rounds are hard to debug or audit.
I'd run main.py and read the err-vs-truth column before the agreement column. Agreement hits 1.00 at round 3 and looks like success, but the error against 42 climbs from 1.83 to 2.48 over the same rounds. The group settles at 44.5, further from the truth than where it started.
The cause is a detail that's easy to miss. run_debate builds an updates list that looks like a snapshot, but others holds the live agent objects and the revisions happen one agent at a time. So B reads A's already-updated answer within the same round, and C reads both. Du et al. show each agent the previous round's answers. If you update synchronously with the same weights, all three agents land on 42.89 after round 1 and stay there, with error 0.89, better than the 1.83 baseline. So the drift away from 42 is an artifact of the sequential update, and this toy departs from the paper there.
The scripted confidence is the only stand-in for how persuasive an agent sounds, so the adversarial-agent exercise is where I'd start. Try an agent that opposes the majority and see whether the group still lands on a number it agrees on.
Exercises
- Run
code/main.py, then set the round count to 5 and watch diminishing returns. At which round does additional convergence stop? - Add a fourth agent with an adversarial role: always disagree with the current majority. Does this break or improve convergence?
- Plot (print) the agreement score per round (fraction of agents on the majority answer). When does it hit 1.0 and is that equivalent to "correct"?
- Read Du et al. Section 4 ablations. Replicate the "agents-only" vs "rounds-only" vs "both" result using this code.
- Read "Should we be going MAD?" (arXiv:2311.17371) and list two debate variants beyond round-robin, such as judge-led, chain-of-debate, adversarial.
Key Terms
| Term | What people say | What it actually means |
|---|---|---|
| Society of Mind | "Minsky's idea" | Intelligence as interacting specialists; 1986 framing now operationalized via LLM debate. |
| Multi-agent debate | "Agents argue" | N agents propose, critique each other, revise over R rounds, majority-vote. |
| Consensus | "They agree" | Not epistemic truth, just the fraction on the majority answer. Can be confidently wrong. |
| Rounds | "Exchange steps" | One round = each agent reads the others and updates once. |
| Heterogeneous debate | "Mix model families" | Using different base models to decorrelate errors. |
| Sycophancy cascade | "Everyone agrees with the loud one" | Debate failure where agents defer to the most confident agent regardless of correctness. |
| NLSOM | "129-agent society" | Natural-language society of mind; Zhuge et al.'s scaled version. |
| Correlated error | "Same model, same bug" | Why self-consistency saturates; debate across different views decorrelates. |
Further Reading
- Du et al. (2023). Improving Factuality and Reasoning in Language Models through Multiagent Debate: the reference paper, ICML 2024
- Zhuge et al. (2023). Mindstorms in Natural Language-Based Societies of Mind: 129-agent NLSOM
- Should we be going MAD? A Look at Multi-Agent Debate Strategies for LLMs: benchmarks debate variants
- Debate project page: Du et al.'s code, demos, and ablation details
Code
- main.py (python, 111 lines)