Истина через столкновение мнений
Одинокая LLM уверенно выдаёт ответ — и так же уверенно ошибается, не замечая своих слабых мест (мы разбирали это в уроке про проверку и критику). Reflection добавлял одного критика. Debate идёт дальше: несколько агентов активно спорят об ответе. Каждый не просто оценивает — он защищает свою версию и атакует чужие. Слабый аргумент под перекрёстным огнём разваливается, сильный — выдерживает и укрепляется.
Идея давняя: так устроены научная дискуссия, судебный процесс, парламентские дебаты. Общество веками использует спор как механизм отсеивания плохих идей. Multi-agent debate переносит это на агентов: несколько «умов» с разными позициями честнее одного, потому что вынуждены обосновывать себя и отвечать на возражения.
Не путай с простым ансамблем (voting из урока про параллелизм), где N агентов независимо дают ответ, а мы берём большинство. В Debate агенты видят ответы друг друга и реагируют — спорят раунд за раундом. Голосование — параллельное и «слепое»; дебаты — итеративные и «зрячие»: аргументы влияют друг на друга.
Как устроены дебаты
Каноническая схема: несколько дебатёров (обычно 2–3) получают вопрос и дают первые ответы с обоснованием. Дальше идут раунды: каждый видит ответы оппонентов, критикует их и уточняет/защищает свой. После нескольких раундов судья (отдельный агент) читает всю дискуссию и выносит вердикт — какой ответ победил (или синтезирует итог).
debaters = [agent("оптимист"), agent("скептик")] # разные позиции
transcript = []
# первый раунд — независимые ответы
for d in debaters:
transcript.append(d.answer(question))
# раунды спора: каждый видит чужие ответы и отвечает
for _ in range(N_ROUNDS):
for d in debaters:
transcript.append(d.rebut(question, transcript)) # критикует + уточняет
# судья выносит вердикт по всей дискуссии
verdict = judge.decide(question, transcript)
Обрати внимание на две вещи. Во-первых, дебатёрам полезно дать разные роли/позиции (оптимист vs скептик, «за» vs «против») — иначе они быстро согласятся и спорить будет не о чем. Во-вторых, судья — отдельный агент: он не участвовал в споре, поэтому оценивает беспристрастнее (тот же принцип независимого критика).
Когда спор реально помогает
Debate — дорогой паттерн (много раундов × много агентов = много вызовов LLM), поэтому применять его надо там, где он окупается.
- сложные рассуждения, где легко ошибиться
- спорные вопросы без очевидного ответа
- высокая цена ошибки (важные решения)
- задачи, где нужна проверка логики аргументами
- простые фактологические вопросы
- есть объективная проверка (тесты, факт) → verifier
- важны скорость и цена
- ответ очевиден — спорить не о чем
Если ответ можно объективно проверить (код проходит тесты, факт есть в источнике), спор — не лучший инструмент: дешевле и надёжнее верификатор из урока про проверку и критику. Debate силён там, где нет однозначной проверки, а качество зависит от рассуждения: стратегические решения, оценки, сложная логика, этические дилеммы. Спор проверяет аргументы, когда проверить факт нельзя.
Сходимость и её ловушки
Хороший спор сходится: с раундами позиции сближаются к обоснованному ответу. Но у сходимости две ловушки, которые важно контролировать.
- Ложный консенсус (конформизм). Агенты — вежливые LLM, склонные соглашаться. Есть риск, что они быстро «поддакнут» друг другу и сойдутся на неверном ответе, не поспорив по-настоящему. Лечится жёсткими ролями («ты обязан оспаривать») и температурой/разнообразием.
- Отсутствие сходимости. Наоборот — агенты упираются каждый в своё и спорят бесконечно. Нужен лимит раундов и решающий голос судьи.
Debate — это цикл, а значит нужен предохранитель: фиксированное число раундов (обычно 2–3, дальше прирост качества падает, а стоимость растёт) плюс судья, который обязан вынести вердикт. Без этого спор либо зациклится, либо выродится в поддакивание. И следи за разнообразием позиций — если дебатёры одинаковые, спора не выйдет.
Debate среди паттернов
| Паттерн | Агенты работают | Суть |
|---|---|---|
| Supervisor / Pipeline / Swarm | над разными частями | распределение работы |
| Voting (ансамбль) | над одним, независимо | параллельно + большинство |
| Reflection | автор + один критик | self-critique петля |
| Debate | над одним, споря | столкновение аргументов + судья |
Debate — «тяжёлая артиллерия» повышения качества: дороже голосования и Reflection, но и глубже — потому что аргументы проверяются в столкновении, а не просто складываются. Резервируй его для действительно трудных вопросов.
Типичные ошибки
Если у агентов нет разных позиций/ролей, они мгновенно согласятся — спора не будет. Задавай противоположные установки («защищай A» / «защищай B»).
Вежливые модели склонны поддакивать и сходиться на неверном. Требуй в промпте активно оспаривать и не соглашаться без веских причин.
Без предела спор зациклится, без судьи — не будет итога. Фиксируй число раундов (2–3) и обязательный вердикт.
Для фактов и задач с объективной проверкой спор — дорого и излишне. Там нужен verifier, а Debate — для трудных рассуждений без явной проверки.
Шпаргалка
ПАТТЕРН: N агентов спорят над ОДНИМ вопросом → судья выбирает ответ
каждый ЗАЩИЩАЕТ свою позицию и АТАКУЕТ чужие → слабое отсеивается
DEBATE ≠ VOTING:
voting — независимо, «слепо», параллельно, большинство
debate — видят друг друга, спорят раундами, судья решает
СХЕМА:
дебатёры (разные позиции!) → первые ответы →
раунды: критикуют+уточняют (видят чужое) → судья (отдельный) → вердикт
ЛОВУШКИ СХОДИМОСТИ:
ложный консенсус (поддакивание) → жёсткие роли «оспаривай»
нет сходимости → лимит раундов + решающий судья
✅ КОГДА: сложные рассуждения · спорные вопросы · высокая цена ошибки
❌ НЕ НАДО: простые факты · есть объективная проверка → VERIFIER · важна цена
СРЕДИ ПАТТЕРНОВ: дороже voting/Reflection, но глубже (аргументы ПРОВЕРЯЮТСЯ)
ПРАВИЛА:
• РАЗНЫЕ позиции дебатёров (иначе нет спора)
• промпт: активно оспаривать, не поддакивать
• лимит раундов (2–3) + обязательный судья
• где есть «истина» → verifier, а не debate
Практическое задание
Устрой спор агентов:
Задание: дебаты по спорному вопросу
- Возьми вопрос без очевидного ответа (например, «стоит ли стартапу с 3 разработчиками сразу переходить на микросервисы?»). Создай двух дебатёров с противоположными позициями и одного судью.
- Проведи 2–3 раунда: первый — независимые ответы, дальше — каждый критикует оппонента и уточняет своё, видя всю дискуссию.
- Дай судье весь транскрипт и попроси вынести обоснованный вердикт (или синтез). Оцени: стал ли итоговый ответ глубже, чем первый ответ любого дебатёра в одиночку?
- Сделай дебатёров одинаковыми (без разных позиций) и увидь ложный консенсус — они быстро согласятся. Верни разные роли.
- Сравни стоимость: во сколько раз больше вызовов LLM, чем у одиночного ответа? Оправдан ли Debate для этого вопроса?
- Со звёздочкой: возьми фактологический вопрос с проверяемым ответом и покажи, что здесь verifier дешевле и надёжнее дебатов — почувствуй границу применимости.
Что дальше
Мы разобрали четыре топологии координации: Supervisor, Pipeline, Swarm, Debate. Все они опираются на то, как агенты обмениваются данными. Последний урок раздела — про два фундаментальных подхода к этому обмену: shared state против message passing.