TL;DR
MARS (Multi-Agent Review System) — техника коллаборации агентов, которая переносит логику научного рецензирования в промпты. Один агент (автор) генерирует решение, несколько агентов (рецензенты) независимо оценивают его без общения друг с другом, мета-рецензент собирает фидбек и решает — принять или отправить на доработку.
Главная находка: рецензенты не должны общаться между собой, чтобы система работала эффективно. Multi-Agent Debate (MAD) — популярный подход, где агенты устраивают круглый стол и обмениваются мнениями напрямую. Проблема: каждый агент общается с каждым → взрывной рост токенов и времени. В MARS рецензенты работают параллельно и независимо, как в реальном peer review. Это избавляет от дорогих межагентных коммуникаций, сохраняя качество фидбека.
Суть метода: четыре чётких роли вместо хаотичного обсуждения. Автор пишет ответ с пошаговыми рассуждениями (CoT). Рецензенты независимо проверяют: выдают вердикт (принять/отклонить), уверенность (1-5), обоснование с указанием ошибок. Мета-рецензент интегрирует отзывы, принимает финальное решение и формулирует конкретные предложения для доработки. Если отклонено — автор получает структурированный фидбек и пересматривает решение. Один цикл: генерация → ревью → мета-ревью → ребаттал (если нужно).
Схема метода
ШАГ 1 (Автор): Генерация начального ответа
Вход: задача пользователя
Выход: пошаговые рассуждения + финальный ответ
ШАГ 2 (Рецензенты): Независимая оценка (параллельно, без общения)
Вход: задача + ответ автора
Выход (каждый рецензент):
- Вердикт: принять/отклонить
- Уверенность: 1-5
- Обоснование: где ошибка, что не так
ШАГ 3 (Мета-рецензент): Интеграция и решение
Вход: задача + ответ автора + все отзывы рецензентов
Выход:
- Финальное решение: принять/отклонить
- Обоснование решения
- Предложения по доработке (если отклонено)
ШАГ 4 (Автор): Доработка (если отклонено)
Вход: свои рассуждения + фидбек мета-рецензента
Выход: обновлённый ответ
Все шаги выполняются отдельными запросами к LLM.
Пример применения
Задача: Тебе нужно решить, стоит ли запускать новый продукт сейчас или подождать. У тебя есть данные по рынку, конкурентам, бюджету — но выводы противоречивые. Один источник говорит "рынок перегрет", другой "окно возможностей". Классическая ситуация, где одна модель даст поверхностный ответ, а debate растянется на 15 запросов.
Промпт:
Действуй как система MARS для принятия решения.
ЗАДАЧА:
Анализ запуска нового продукта — маркетплейс локальных мастеров для Москвы.
ДАННЫЕ:
- Конкурент Proffi потерял 40% аудитории за год
- Яндекс.Услуги вырос на 25%, но отзывы негативные (комиссия 30%)
- Бюджет на запуск: 3 млн ₽, runway 6 месяцев
- Команда: 2 разработчика, 1 маркетолог
- Гипотеза: дать мастерам прямые контакты клиентов без комиссии
ПРОТИВОРЕЧИЯ:
- Рынок перегрет VS окно возможностей из-за слабости Яндекса
- Мало денег VS достаточно для MVP
- Команда маленькая VS можем быстро валидировать
ШАГ 1 — АВТОР:
Проанализируй ситуацию пошагово:
1. Оцени рыночную ситуацию
2. Оцени ресурсы команды
3. Оцени риски
4. Дай рекомендацию: запускать сейчас / подождать / не запускать
Формат: Рассуждения: [...] | Решение: [...]
ШАГ 2 — РЕЦЕНЗЕНТЫ:
Ты — рецензент решения выше. Проверь:
- Учёл ли автор все данные?
- Логичны ли выводы?
- Есть ли ошибки в рассуждениях?
Формат:
Вердикт: [принять/отклонить]
Уверенность: [1-5]
Обоснование: [где ошибка или что упущено]
Рекомендация: [твой вариант решения]
ШАГ 3 — МЕТА-РЕЦЕНЗЕНТ:
Интегрируй отзывы рецензентов. Вынеси финальное решение.
Если отклоняешь — дай конкретные предложения автору.
Формат:
Решение: [принять/отклонить]
Обоснование: [...]
Предложения: [только если отклонил]
ШАГ 4 — АВТОР (если отклонено):
Пересмотри своё решение с учётом фидбека.
Формат: Причины согласия/несогласия: [...] | Обновлённое решение: [...]
Результат:
Модель покажет полный цикл рецензирования:
- Автор выдаст структурированный анализ с пошаговыми рассуждениями
- 2 рецензента независимо проверят логику (один может зацепиться за недооценку runway, другой — за переоценку конкурентов)
- Мета-рецензент синтезирует критику и выдаст вердикт: либо "ОК, запускаем", либо "отклонено — пересчитай runway с учётом маркетинговых затрат"
- Если отклонено — автор вернётся к анализу, учтёт фидбек и обновит решение
Финальный output — обоснованное решение, проверенное с нескольких независимых углов, без хаоса круглого стола.
Почему это работает
Слабость LLM: модель плохо замечает собственные ошибки. Self-reflection даёт результат "всё верно" даже когда там очевидный прокол — счётчик слов сбился, логическая цепочка порвалась, факт выдуман. Причина: модель не имеет внешней точки опоры для проверки.
Сильная сторона LLM: модель хорошо обнаруживает ошибки в чужом тексте — особенно если дать чёткие критерии проверки. Рецензент видит чужой текст свежим взглядом, без якоря на "я это написал". Плюс, если задача — найти ошибку, модель фокусируется на критическом анализе, а не на генерации.
Как метод использует силу: MARS разделяет генерацию и проверку. Автор думает о решении задачи. Рецензенты думают о поиске ошибок. Мета-рецензент думает об интеграции фидбека. Каждая роль имеет одну чёткую задачу, вместо "подумай обо всём сразу".
Почему рецензенты не общаются: в MAD каждый агент должен учесть N-1 других мнений. При 3 агентах это 3×2=6 связей. При 5 агентах — 20 связей. Токены растут квадратично. В MARS рецензенты работают параллельно — каждый смотрит только на автора. При 5 рецензентах это 5 связей. Линейный рост вместо квадратичного.
Аналогия с ResNet: в нейросетях residual learning учит не функцию h(x), а остаток f(x) = h(x) - x. Это эффективнее. MARS делает то же на уровне промптов: рецензенты не пытаются решить задачу с нуля, они ищут разницу между текущим ответом и правильным — то есть ошибки. Мета-рецензент передаёт эти "градиенты" автору для корректировки.
Рычаги управления
Число рецензентов (2-5)
- Больше рецензентов → более надёжное обнаружение ошибок, но дороже
- Для простых задач хватит 2, для критичных решений — 4-5
- Эффект: линейный рост токенов (не квадратичный как в MAD)
Критерии оценки рецензентов
- Базовые: Faithfulness (соответствие фактам), Correctness (правильность шагов)
- Можно добавить свои: полнота анализа, учёт контекста, креативность
- Эффект: направляет внимание рецензентов на нужные аспекты
Уровень детализации фидбека
- Минимум: "вердикт + уверенность"
- Максимум: "вердикт + уверенность + обоснование + рекомендация"
- Эффект: детальный фидбек → точнее доработка, но больше токенов
Условие принятия решения мета-рецензентом
- Строгое: все рецензенты согласны → принять
- Мягкое: большинство рецензентов согласно → принять
- Взвешенное: учёт уверенности рецензентов
- Эффект: баланс между точностью и количеством итераций
Инструкция автору при ребаттале
- Жёсткая: "доверяй фидбеку, переделай"
- Гибкая (как в статье): "если согласен — исправь, если нет — отстаивай"
- Эффект: защита от over-correction (когда правильный ответ отвергается)
Шаблон промпта
Действуй как MARS (Multi-Agent Review System).
=== ШАГ 1: АВТОР ===
Задача: {описание_задачи}
Проанализируй пошагово и дай ответ в формате:
Рассуждения: [твои шаги с промежуточными результатами]
Ответ: {формат_ответа}
=== ШАГ 2: РЕЦЕНЗЕНТ (повтори для каждого рецензента) ===
Проверь решение автора:
Задача: {описание_задачи}
Решение автора: {ответ_автора}
Критерии оценки:
1. Faithfulness: соответствуют ли рассуждения фактам?
2. Correctness: правилен ли каждый шаг?
Формат вывода:
Вердикт: [принять | отклонить]
Уверенность: [1-5] (5 = максимальная уверенность)
Обоснование: [причины вердикта, найденные ошибки]
Рекомендация: [твой вариант ответа]
=== ШАГ 3: МЕТА-РЕЦЕНЗЕНТ ===
Интегрируй отзывы рецензентов и вынеси финальное решение.
Задача: {описание_задачи}
Решение автора: {ответ_автора}
Отзывы рецензентов:
{отзыв_1}
{отзыв_2}
Не полагайся слепо на рецензентов — думай самостоятельно.
Формат вывода:
Решение: [принять | отклонить]
Обоснование: [причины решения]
Предложения: [конкретные рекомендации автору, только если отклонил]
Рекомендация: [твой вариант ответа]
=== ШАГ 4: АВТОР — ДОРАБОТКА (только если отклонено) ===
Мета-рецензент отклонил твоё решение.
Фидбек мета-рецензента: {фидбек_мета_рецензента}
Если сильно согласен с фидбеком — исправь решение.
Если не согласен — отстаивай первоначальный ответ и повтори его.
Не доверяй слепо — думай сам.
Формат вывода:
Причины: [согласен/не согласен с фидбеком и почему]
Обновлённые рассуждения: [новые шаги с учётом фидбека]
Ответ: {формат_ответа}
Что подставлять:
{описание_задачи}— текст задачи пользователя{формат_ответа}— например, "одна буква (A/B/C/D)" или "число" или "развёрнутый ответ"{ответ_автора}— вывод из Шага 1{отзыв_N}— вывод каждого рецензента из Шага 2{фидбек_мета_рецензента}— вывод из Шага 3
Важно: Каждый шаг — это отдельный запрос к LLM. Копируй выводы предыдущих шагов в следующие.
🚀 Быстрый старт — вставь в чат:
Вот шаблон MARS для многоагентного анализа. Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит про формат ответа, критерии оценки, количество рецензентов — потому что эти параметры определяют структуру процесса. Она возьмёт паттерн рецензирования из шаблона и адаптирует под твою задачу.
Ограничения
⚠️ Избыточность для простых задач: MARS требует минимум 4 запроса (автор + 2 рецензента + мета-рецензент). Для вопроса "столица Франции" это overkill. Используй для задач с многошаговой логикой, где цена ошибки высока.
⚠️ Риск over-correction: Если рецензенты сильно критичны или мета-рецензент неправ — правильный ответ автора может быть отвергнут. Исследование пыталось защитить инструкцией "доверяй себе, если не согласен", но гарантий нет. Особенно опасно при субъективных критериях оценки.
⚠️ Verbalized confidence ненадёжна: Рецензенты выставляют уверенность 1-5, но модели склонны завышать — часто ставят 5 даже при сомнениях. Мета-рецензент может принять решение на основе ложной уверенности. В реальности нужны более точные методы калибровки.
⚠️ Токены × 4-5 по сравнению с CoT: MARS экономит 50% токенов относительно MAD, но всё равно тратит в 4-5 раз больше чем простой Chain-of-Thought. Учитывай стоимость при масштабе.
Как исследовали
Команда взяла три популярных бенчмарка — MMLU (вопросы с вариантами по разным предметам), GPQA (задачи уровня выпускника по физике, химии, биологии — настолько сложные, что эксперты делают ошибки), GSM8K (математические задачи школьного уровня). Проверяли на ChatGPT (GPT-3.5-turbo) и Mixtral-8×22B — закрытая и открытая модель.
Сравнивали MARS с четырьмя baseline-методами: CoT (стандартные пошаговые рассуждения), self-reflection (модель проверяет сама себя), self-consistency (несколько путей рассуждений + мажоритарное голосование), MAD (круглый стол агентов). Идея была проста: может ли MARS дать точность MAD при меньших затратах?
Результат удивил. MARS не просто приблизился к MAD по точности — в ряде случаев превзошёл. Например, на GPQA с ChatGPT MARS дал 36.33% против 31% у MAD. На GSM8K с Mixtral — 90.33% против 87% у MAD. При этом токены и время сократились вдвое: на GPQA с ChatGPT MAD съел 5042 токена за 11.92 секунды, MARS — 2479 токенов за 6.01 секунды.
Почему такая разница? Исследователи проследили, что в MAD агенты тратят массу токенов на дублирование информации — каждый пересказывает своё мнение всем остальным, получается полносвязный граф коммуникаций. При 3 агентах это 6 связей, при 5 — 20. В MARS рецензенты смотрят только на автора — линейный рост связей. Плюс, рецензенты не генерируют полные решения, а только критикуют — экономия токенов.
Интересно, что команда проверила смесь моделей: ChatGPT автор + Mixtral рецензенты. Выяснилось, что сильные рецензенты подтягивают слабого автора, но не выше его потолка. А вот Mixtral автор + ChatGPT рецензенты дал неожиданно высокий результат — 46.4% на GPQA. Это намекает, что комбинация моделей — нетривиальная задача для будущих исследований.
Ещё один эксперимент: персоны для рецензентов (консервативный vs агрессивный). Не сработало. Оказалось, что естественная случайность LLM уже даёт разнообразие, а агрессивные персоны генерируют шумный фидбек, который запутывает мета-рецензента. Вывод: полагайся на природную вариативность, не изобретай искусственные роли.
Оригинал из исследования
Контекст: Исследователи давали ChatGPT задачу из GSM8K про четырёх собак с возрастающим весом. Автор правильно вывел формулу, но ошибся при подстановке начального значения. Ниже — полный цикл MARS с этим примером.
=== AUTHOR RESPONSE ===
Thoughts: Let's denote the weight of the first dog as A.
According to the problem, each subsequent dog weighs twice as much.
- Dog 1: A
- Dog 2: 2A
- Dog 3: 4A
- Dog 4: 8A
Wait, problem says "constant multiple" — let me recalculate:
If the multiple is k:
- Dog 1: A
- Dog 2: kA
- Dog 3: k²A
- Dog 4: k³A
Given Dog 1 = 10 pounds, Dog 4 = k³ × 10.
But I need to find k... Let me assume k=2 based on pattern.
So Dog 4 = 2³ × 10 = 80 pounds.
Actually, rereading: "each subsequent dog weighs a constant multiple"
Let's say multiple is m:
- Dog 2 = m × Dog 1
- Dog 3 = m × Dog 2 = m² × Dog 1
- Dog 4 = m × Dog 3 = m³ × Dog 1
Hmm, problem doesn't give m directly. Let me recalculate A...
If A = 5/11, then... [ERROR: contradicts given A=10]
Answer: 220 pounds
=== REVIEWER 1 ===
Decision: wrong
Confidence: 5
Justification: Author correctly derived that Dog 4 = m³A, but then
incorrectly recomputed A as 5/11, contradicting the given information
that Dog 1 weighs 10 pounds. This error propagated to the final answer.
Recommendation: Use A = 10 pounds directly, solve for m if needed,
then calculate Dog 4 = m³ × 10.
=== REVIEWER 2 ===
Decision: wrong
Confidence: 4
Justification: Author's approach is sound but calculation went off track.
Cannot see where 5/11 came from. Final answer seems arbitrary.
Recommendation: Stick to the formula m³A with A=10.
=== META-REVIEWER ===
Decision: wrong
Justification: Both reviewers identified the core error — author
incorrectly recomputed the initial weight A despite it being given
as 10 pounds. This cascaded into an incorrect final answer.
Suggestions: Return to the formula Dog 4 = m³A. Substitute A = 10
pounds. If the problem provides the value of m or additional constraints,
use them. If not, solve for m from given relationships.
Recommendation: Re-calculate using A = 10 and correct value of m.
=== AUTHOR REBUTTAL ===
Reasons: I agree with the meta-reviewer. Upon review, I see I mistakenly
recomputed A when it was already given as 10 pounds.
Thoughts:
- Dog 1 = A = 10 pounds (given)
- Each dog weighs 2× the previous (assuming m=2 based on context)
- Dog 2 = 2 × 10 = 20 pounds
- Dog 3 = 2 × 20 = 40 pounds
- Dog 4 = 2 × 40 = 80 pounds
Wait, let me re-read: "constant multiple" — if it's 2.2 not 2:
Actually, problem says "each subsequent dog weighs a constant multiple"
Let me check if there's info about the multiple...
[re-reads problem]
Problem states Dog 4 weight formula is 2²A based on pattern shown.
So Dog 4 = 4 × 10 = 40... no wait, 2² = 4, but formula shows 2²A...
Let me recalculate assuming the pattern is Dog_n = 2^(n-1) × A:
- Dog 1 = 2⁰ × 10 = 10 pounds
- Dog 4 = 2³ × 10 = 80 pounds
Hmm, but original answer was 220... Let me check formula again.
Actually, re-reading meta-reviewer: if m³A and A=10, then:
m³ × 10 = 220
m³ = 22
m = ∛22 ≈ 2.8
So each dog weighs 2.8× the previous.
Dog 4 = 2.8³ × 10 = 21.952 × 10 ≈ 220 pounds.
Answer: 220 pounds
Адаптации и экстраполяции
💡 Адаптация для code review:
MARS идеально подходит для проверки кода. Автор — программист, рецензенты — линтеры разного профиля (security, performance, readability), мета-рецензент — архитектор, который решает, принять PR или отправить на доработку.
=== ШАГ 1: АВТОР ===
Напиши функцию на Python для {задача}.
Код должен быть читаемым, эффективным, безопасным.
Формат:
```python
# код
```
Пояснение: [что делает код]
=== ШАГ 2: РЕЦЕНЗЕНТЫ ===
Рецензент Security:
Проверь код на уязвимости: SQL injection, XSS, небезопасные eval().
Вердикт: [принять | отклонить]
Найденные проблемы: [...]
Рецензент Performance:
Проверь сложность алгоритма, избыточные циклы, неэффективные структуры.
Вердикт: [принять | отклонить]
Найденные проблемы: [...]
Рецензент Readability:
Проверь именование переменных, структуру, комментарии.
Вердикт: [принять | отклонить]
Найденные проблемы: [...]
=== ШАГ 3: МЕТА-РЕЦЕНЗЕНТ (Архитектор) ===
Интегрируй отзывы. Если критические проблемы (security, performance) — отклони.
Если только readability — можно принять с замечаниями.
Решение: [принять | отклонить | условно принять]
Обоснование: [...]
Предложения автору: [...]
=== ШАГ 4: АВТОР — РЕФАКТОРИНГ ===
Исправь код с учётом фидбека.
Эффект: Каждый рецензент специализируется на своём аспекте. Мета-рецензент взвешивает приоритеты (security > performance > style). Автор получает структурированный фидбек вместо абстрактного "переделай".
🔧 Техника: Убрать confidence score → упростить для быстрых задач
Если задача не критична и ты хочешь ускорить процесс — убери оценку уверенности из рецензентов.
=== ШАГ 2: РЕЦЕНЗЕНТ (упрощённый) ===
Вердикт: [принять | отклонить]
Обоснование: [почему]
Эффект: Меньше токенов, быстрее. Мета-рецензент просто считает голоса (большинство wins). Подходит для задач, где важна скорость, а риск over-correction низок.
🔧 Техника: Добавить "print-отладку" → видеть внутренние шаги
В оригинале автор выдаёт только финальные рассуждения. Если хочешь видеть как модель думает на каждом шаге — добавь явные промежуточные выводы.
=== ШАГ 1: АВТОР (с отладкой) ===
Формат:
Шаг 1: [что делаю]
Результат шага 1: [промежуточный результат]
Шаг 2: [что делаю]
Результат шага 2: [промежуточный результат]
...
Финальный ответ: [...]
Эффект: Рецензенты могут зацепиться за конкретный шаг, где ошибка. Мета-рецензент даёт более точный фидбек ("ошибка в шаге 3, а не в шаге 5"). Токенов чуть больше, зато прозрачность выше.
Ресурсы
MARS: Toward More Efficient Multi-Agent Collaboration for LLM Reasoning
Xiao Wang, Jia Wang, Yijie Wang (Indiana University Bloomington)
Pengtao Dang, Sha Cao, Chi Zhang (Oregon Health & Science University)
Код: https://github.com/xwang97/MARS
