TL;DR
Когда LLM одновременно придумывает решение, критикует его и делает выводы на будущее — режимы мышления мешают друг другу в одном контексте. R-APS — это протокол, который разносит пять режимов рассуждения по отдельным контекстам и управляет их взаимодействием на трёх уровнях: внутри одного шага, внутри одной сессии и между сессиями.
Главная находка: LLM «сбрасывает» всю работу при первой же ошибке, вместо того чтобы зафиксировать, что именно сломалось. Представьте: вы пишете бизнес-план, GPT говорит «не то», и переписывает всё — вместо того чтобы сказать «финансовый блок неверен, остальное сохрани». Вдобавок: накопленные «правила из прошлых сессий» никогда не проверяются, устаревают и постепенно портят результат.
R-APS решает это тремя ходами: типизированный критик точно называет, какой шаг провалился (не "всё плохо" — а "провалился блок X"); Adversary-агент специально ломает решение, чтобы найти слабейшее место; Meta-Analyst после каждой сессии извлекает правила и явно аннулирует те, что устарели.
Схема метода
УРОВЕНЬ 1 — INTRA-STAGE (внутри одного запроса):
[Designer] → предлагает решение
↓
[Critic 1] → проверяет структуру → FAIL? → только структуру пересчитать
↓ PASS
[Critic 2] → проверяет смысл/логику → FAIL? → только логику пересчитать
↓ PASS
[Critic 3] → проверяет устойчивость → FAIL? → только параметры пересчитать
Принцип: каждый критик называет КОНКРЕТНЫЙ этап провала → фиксируем всё остальное
---
УРОВЕНЬ 2 — INTRA-EPISODE (внутри сессии):
[Adversary] → специально ломает решение Designer-а
→ Sobol-скрининг: находит самое уязвимое место
→ worst-case сценарий становится отдельным критерием качества
Принцип: устойчивость = первоклассный критерий, не бонус
---
УРОВЕНЬ 3 — INTER-EPISODE (между сессиями):
[Meta-Analyst] → после сессии:
1. Извлекает правила из траекторий (включая провалы, не только успехи)
2. АННУЛИРУЕТ устаревшие правила с конкретными контрпримерами
3. Передаёт обновлённый банк правил в следующую сессию
Принцип: знания не накапливаются монотонно — они актуализируются явным образом
Всё работает через структурированные промпты, без дообучения модели.
Пример применения
Задача: Павел запускает новый продукт — онлайн-курс по финансовой грамотности для фрилансеров. Нужна стратегия продвижения. Он хочет получить не просто план, а устойчивый план — такой, который выдержит возражения инвесторов и не рассыпется при первой критике.
Промпт — Шаг 1 (Designer):
Ты — Designer. Твоя задача: предложить стратегию продвижения онлайн-курса
по финансовой грамотности для фрилансеров. Аудитория: фрилансеры 25-40 лет,
доход 100-300к₽/мес, Москва и крупные города.
Структурируй ответ по этапам:
1. Позиционирование (чем отличается от конкурентов)
2. Канал привлечения (где искать аудиторию)
3. Оффер и цена
4. Первые 30 дней запуска
Каждый этап — отдельный блок.
Промпт — Шаг 2 (Typed Critic — новый чат):
Ты — Typed Critic. Вот стратегия продвижения курса:
[вставить ответ Designer]
Проверь каждый этап ОТДЕЛЬНО:
- [Позиционирование]: провалился / прошёл → если провал: ПОЧЕМУ именно
- [Канал]: провалился / прошёл → если провал: ПОЧЕМУ именно
- [Оффер/цена]: провалился / прошёл → если провал: ПОЧЕМУ именно
- [Первые 30 дней]: провалился / прошёл → если провал: ПОЧЕМУ именно
Важно: называй КОНКРЕТНЫЙ этап. Не "стратегия слабая" — а "провалился
блок Цена, потому что...". Этапы которые прошли — сохраняются без изменений.
Промпт — Шаг 3 (Adversary — новый чат):
Ты — Adversary. Твоя задача: сломать эту стратегию.
[вставить финальную стратегию после правок]
Найди САМОЕ УЯЗВИМОЕ место. Разыграй worst-case сценарий:
- Что случится если ВКонтакте закроет рекламный кабинет за день до запуска?
- Что если конкурент выйдет с ценой в 2 раза ниже за неделю до запуска?
- Что если первый отзыв окажется резко негативным?
По каждому сценарию: что рушится, что выживает, что нужно изменить заранее.
Результат: После трёх итераций читатель получает стратегию, прошедшую типизированную критику (каждый блок проверен и сохранён или исправлен точечно) и adversarial stress-test. Adversary покажет конкретные worst-case сценарии — не абстрактные риски, а конкретные ломающие события. Typed Critic зафиксирует, что именно в стратегии слабое, не требуя переписывать сильные части.
Почему это работает
LLM плохо делает несколько вещей одновременно. Когда в одном промпте нужно и придумать, и покритиковать, и вынести уроки — режимы рассуждения тянут в разные стороны. Модель либо слишком мягко критикует то, что сама же придумала, либо сбрасывает хорошие части вместе с плохими.
Зато LLM хорошо выполняет одну чётко заданную роль. Если сказать "ты — Adversary, твоя задача сломать это решение" — модель симулирует разрушительную критику намного агрессивнее, чем если спросить "что не так с этим планом?". Роль формирует контекст выдачи.
Метод использует это напрямую: каждая роль получает свой контекст и свою задачу. Designer не знает что будет Adversary. Typed Critic смотрит только на этапы, не на общее впечатление. Meta-Analyst видит весь trail — включая провалы — и только тогда формирует правила.
Рычаги управления:
- Количество критиков → для простых задач достаточно одного Typed Critic вместо трёх каскадных
- Степень агрессии Adversary → "сломай одним сценарием" vs. "разыграй пять worst-case"
- Явность типизации → попросите Critic называть провалы по жёсткой схеме ("FAIL: блок Цена") — ответы станут точнее
- Цикл аннуляции → в конце серии сессий добавьте вопрос "какие из прошлых правил теперь неверны?" — это и есть Meta-Analyst вручную
Шаблон промпта
Шаблон Designer (Шаг 1):
Ты — Designer. Предложи {решение/план/стратегию} для задачи:
Задача: {описание задачи}
Контекст: {кто, где, зачем, ограничения}
Структурируй ответ по этапам:
1. {Этап 1}
2. {Этап 2}
3. {Этап 3}
...
Каждый этап — отдельный блок с заголовком.
Шаблон Typed Critic (Шаг 2):
Ты — Typed Critic. Проверь каждый этап решения ОТДЕЛЬНО.
Решение:
{вставить ответ Designer}
Для каждого этапа выдай:
[{Название этапа}]: PASS / FAIL
Если FAIL — объясни ПОЧЕМУ именно этот этап, не всё решение.
Этапы с PASS — зафиксированы и не переписываются.
Только этапы с FAIL требуют доработки.
Шаблон Adversary (Шаг 3):
Ты — Adversary. Твоя задача — сломать это решение.
Решение:
{вставить финальную версию}
Критерии атаки: {укажи 2-3 реальные угрозы из контекста}
По каждой атаке:
- Что именно рушится
- Что выживает
- Что нужно изменить заранее, чтобы устоять
Шаблон Meta-Analyst (после серии сессий):
Ты — Meta-Analyst. У нас прошло {N} сессий по задаче {тема}.
Траектория сессий (включая провалы):
{краткое описание каждой сессии: что пробовали, что сработало, что нет}
Сделай:
1. Извлеки 3-5 правил, которые работают стабильно
2. Явно аннулируй правила, которые опровергнуты — с конкретным примером почему
3. Сформулируй обновлённый банк правил для следующей сессии
Плейсхолдеры: {задача} — ваша конкретная цель; {этапы} — логические части вашего плана/решения; {угрозы} — реальные риски из вашего контекста; {траектория} — краткий лог предыдущих попыток.
🚀 Быстрый старт — вставь в чат:
Вот шаблон метода R-APS (разделение режимов рассуждения).
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить все поля шаблонов.
[вставить шаблон выше]
LLM спросит про структуру вашей задачи (на какие этапы она делится) и про реальные угрозы/риски — потому что Typed Critic не может работать без этапов, а Adversary — без контекста атак. Она возьмёт паттерн из шаблонов и адаптирует три роли под вашу ситуацию.
Ограничения
⚠️ Требует нескольких запросов: Полный цикл — минимум 3 отдельных чата (Designer → Critic → Adversary). Для быстрых задач это избыточно.
⚠️ Слабо работает для субъективных задач: Typed Critic требует чёткие критерии для каждого этапа. Если нет объективных границ ("хорошо / плохо"), типизация превращается в размытые оценки.
⚠️ Meta-Analyst требует реального лога провалов: Принцип явной аннуляции правил работает только если сохранять траекторию неудачных попыток — не только успехи. Без этого превращается в обычное "что узнали".
⚠️ Adversary может быть слишком мягким: GPT/Claude в роли разрушителя иногда "щадит" решение. Нужно явно прописывать критерии атаки — иначе worst-case окажется not-so-worst.
Ресурсы
Название: R-APS: Compositional Reasoning and In-Context Meta-Learning for Constrained Design via Reflective Adversarial Pareto Search
Авторы: João Pedro Gandarela, Thiago Rios, Stefan Menzel, André Freitas
Организации: Idiap Research Institute (Швейцария), EPFL (Швейцария), Honda Research Institute Europe (Германия), University of Manchester (Великобритания)
Связанные методы: Reflexion (Shinn et al., 2024), ReAct (Yao et al., 2023), Voyager (Wang et al., 2023), ExpeL (Zhao et al., 2024), AutoGen (Wu et al., 2023)
