TL;DR
MC² — техника, которая разбивает одну задачу на три роли внутри одного запроса: Решатель генерирует ответ, Монитор его проверяет, Контроллер решает что делать дальше — принять, поправить или выбросить и начать заново. Если Контроллер говорит "начать заново" — Решатель получает конкретный фидбэк и пробует другой подход. Максимум N итераций внутри одного диалога.
Главная проблема, которую решает метод: LLM делает ошибки с уверенным видом. Спросишь "проверь себя" — она скажет "всё верно" и подтвердит ту же ошибку другими словами. Почему? Потому что самопроверка и генерация текут в одном потоке: модель продолжает цепочку слов, а не реально перепроверяет. Это как попросить человека найти ошибку в тексте, который он только что написал — глаз замылен.
MC² разрывает этот поток: каждая роль получает отдельный контекст задачи и чёткие инструкции. Монитор не продолжает решение — он его аудирует. Контроллер не генерирует ответ — он выносит вердикт. Этот структурный разрыв и даёт точность. Второй слой — память об ошибках: после серии задач система извлекает уроки и инжектит их в следующие запросы. Применительно к чату — это мануальный "дневник ошибок", который вы держите и вставляете в промпт.
Схема метода
┌─────────────────────────── КАЖДАЯ ЗАДАЧА ────────────────────────────┐
│ │
│ ШАГ 1: Решатель → генерирует ответ + ход рассуждений │
│ ↓ │
│ ШАГ 2: Монитор → находит первый сомнительный шаг + вердикт │
│ ↓ │
│ ШАГ 3: Контроллер → принимает решение: │
│ • ПРИНЯТЬ → финальный ответ │
│ • ИСПРАВИТЬ → мелкая правка → финальный ответ │
│ • НАЧАТЬ ЗАНОВО → фидбэк → обратно к Шагу 1 │
│ │
│ Максимум N итераций, всё в одном промпте │
└───────────────────────────────────────────────────────────────────────┘
┌──────────────────── МЕЖДУ ЗАДАЧАМИ (опционально) ────────────────────┐
│ │
│ После серии задач → выдели паттерны ошибок → запиши уроки │
│ Перед следующей задачей → вставь уроки в промпт │
└───────────────────────────────────────────────────────────────────────┘
Всё в рамках одного диалога в ChatGPT/Claude. Внешний цикл памяти — мануально, через ваш текстовый файл.
Пример применения
Задача: Вы решаете, открывать ли ПВЗ Wildberries в спальном районе Екатеринбурга. Попросили GPT проанализировать — он бодро выдал "хорошая идея". Хочется реальной проверки, а не оптимистичного резюме.
Промпт:
Ты работаешь в трёх ролях. Выполняй их последовательно и явно.
**ЗАДАЧА:** Оцени бизнес-смысл открытия ПВЗ Wildberries
в спальном районе Екатеринбурга с вложением 600 000 рублей.
Аренда 35 000 руб/мес, конкурентов поблизости нет,
трафик пешеходный — район у метро.
---
**РОЛЬ 1 — РЕШАТЕЛЬ:**
Дай развёрнутую оценку: окупаемость, риски, ключевые факторы.
Показывай ход рассуждений пошагово.
---
**РОЛЬ 2 — МОНИТОР:**
Проверь ответ Решателя. Найди:
- Первый шаг, где рассуждение под вопросом
- Допущения, которые не проверены
- Что Решатель проигнорировал или преувеличил
Вынеси вердикт: ВЕРНО / ЕСТЬ ПРОБЛЕМЫ (укажи конкретно что)
---
**РОЛЬ 3 — КОНТРОЛЛЕР:**
На основе вердикта Монитора прими решение:
- ПРИНЯТЬ — аргументация надёжная, выдай финальный вывод
- ИСПРАВИТЬ — есть неточности, исправь их и выдай финальный вывод
- НАЧАТЬ ЗАНОВО — фундаментальная ошибка в подходе,
укажи что именно пересмотреть и запусти Решателя заново
с этим фидбэком
Максимум 2 итерации.
Результат: Модель покажет работу трёх ролей явно и последовательно. Решатель выдаст первичный анализ с расчётами. Монитор укажет на непроверенные допущения — например, что "отсутствие конкурентов" может означать отсутствие спроса, а не свободную нишу. Контроллер либо примет ответ, либо попросит пересчитать с учётом этого. В финале — вывод, который прошёл явную проверку, а не просто "звучит уверенно".
Почему это работает
Почему не работает "просто попроси проверить": LLM генерирует текст как продолжение цепочки. Когда вы пишете "проверь свой ответ", модель продолжает ту же цепочку — и с высокой вероятностью подтверждает себя. Это не лень, это механика: следующий токен предсказывается на основе уже сказанного.
Что умеет модель хорошо: Следовать структурированным ролям. Когда роль Монитора прописана отдельно с конкретными инструкциями ("найди первый сомнительный шаг"), модель генерирует текст в другом регистре — критически. Структура в промпте разрывает инерцию продолжения.
Как метод использует это: Три роли создают три разных контекста для генерации текста. Решатель работает в режиме "предложи решение". Монитор — в режиме "найди слабое место". Контроллер — в режиме "реши что делать". Один и тот же вопрос, три разные рамки → разные ответы → реальная проверка.
Рычаги управления: - Число итераций (1–3) → больше итераций = глубже проверка, но дольше и дороже; для простых задач хватит 1 - Строгость Монитора → можно добавить "будь особенно критичен к цифрам и причинно-следственным связям" - Условие "Начать заново" → можно заменить на "переформулируй с другой точки зрения" вместо полного перезапуска - Дневник ошибок → если вы регулярно делаете похожие задачи, добавьте в начало промпта блок "Известные ловушки: [ваши уроки]"
Шаблон промпта
Ты работаешь в трёх ролях. Выполняй последовательно и явно.
**ЗАДАЧА:** {задача с контекстом и данными}
---
**РОЛЬ 1 — РЕШАТЕЛЬ:**
Реши задачу. Показывай ход рассуждений пошагово.
---
**РОЛЬ 2 — МОНИТОР:**
Проверь ответ Решателя:
- Найди первый шаг, вызывающий сомнение
- Укажи непроверенные допущения
- Вынеси вердикт: ВЕРНО / ЕСТЬ ПРОБЛЕМЫ
---
**РОЛЬ 3 — КОНТРОЛЛЕР:**
На основе вердикта Монитора:
- ПРИНЯТЬ → финальный ответ как есть
- ИСПРАВИТЬ → поправь конкретные места → финальный ответ
- НАЧАТЬ ЗАНОВО → скажи что именно пересмотреть
и запусти Решателя заново с этим фидбэком
Максимум {число_итераций} итераций.
Что подставлять:
- {задача с контекстом и данными} — конкретная задача с цифрами, условиями, вводными; чем конкретнее, тем точнее проверка
- {число_итераций} — 1 для быстрой проверки, 2–3 для сложных аналитических задач
🚀 Быстрый старт — вставь в чат:
Вот шаблон MC² (трёхролевая проверка). Адаптируй под мою задачу.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит о задаче и желаемом количестве итераций — потому что без конкретного содержания задачи и глубины проверки шаблон не заработает. Она возьмёт структуру трёх ролей и подставит ваши данные.
Ограничения
⚠️ Простые задачи: Не применяй для вопросов с очевидным ответом — три роли добавят объём, но не качество. Метод светит на сложных аналитических или логических задачах.
⚠️ Внешний цикл памяти требует ручной работы: Автоматическое накопление уроков между задачами (то, что авторы называют MCA) работает только в коде. В чате — нужно самому выписывать паттерны ошибок и вставлять их в следующий промпт.
⚠️ Слабые модели: На маломощных моделях (не GPT-4o, не Claude Sonnet и выше) роли могут смешиваться — Монитор начинает предлагать решения вместо критики. Метод лучше работает с сильными моделями.
⚠️ Токены: Три роли + итерации = заметно длиннее обычного ответа. На задачах где токены ограничены — выбирай 1 итерацию.
Ресурсы
Работа: Beyond Meta-Reasoning: Metacognitive Consolidation for Self-Improving LLM Reasoning
Авторы: Ziqing Zhuang, Linhai Zhang, Jiasheng Si, Deyu Zhou, Yulan He
Организации: Southeast University, King's College London, The Alan Turing Institute, Qilu University of Technology
