3,583 papers
arXiv:2604.23270 80 25 апр. 2026 г. FREE

CAP-CoT: трёхагентная состязательная проверка — как найти дыры в рассуждениях через намеренные ошибки

КЛЮЧЕВАЯ СУТЬ
Паттерн: модель слепа к своим ошибкам — но отлично видит чужие. CAP-CoT позволяет находить шаткие шаги в пошаговых рассуждениях до того, как цена ошибки стала реальной. Рядом с правильной цепочкой кладётся намеренно дефектная версия — с теми же числами, той же структурой, но скрытыми дырами. Контраст «хороший шаг против похожего плохого на одних данных» делает слабые места очевидными — Арбитр разбирает обе версии шаг против шага и выдаёт конкретные правки.
Адаптировать под запрос

TL;DR

CAP-CoT — техника, которая заставляет модель генерировать намеренно дефектную версию своих рассуждений, а затем сравнивать её с правильной, чтобы найти и исправить слабые места. Три роли: Решатель строит правильную цепочку, Противник — правдоподобно ошибочную, Арбитр сравнивает обе и выдаёт конкретные пошаговые правки.

Главная боль — CoT-рассуждения ненадёжны. Та же задача, тот же промпт — и модель может дать разный ответ в разных запусках. Проблема глубже: ошибки на ранних шагах незаметно тянут за собой все последующие шаги. Стандартный "думай пошагово" показывает только «как правильно» — и модель не видит, какие именно шаги шаткие. Это как строить тезис в голове: кажется логично, пока не столкнёшься с контраргументом.

CAP-CoT решает это через контраст: если поставить рядом правильное и намеренно дефектное рассуждение, слабые места правильной версии становятся заметны. После 2–3 циклов сравнения и правок промпт Решателя становится значительно устойчивее — и остаётся надёжным даже при высокой "случайности" модели.


🔬

Схема метода

ЦИКЛ (повторить 2–3 раза):

  ШАГ 1: Решатель → правильная пошаговая цепочка рассуждений
          [нумерованные шаги, явные допущения, единый формат]

  ШАГ 2: Противник → правдоподобная, но намеренно дефектная цепочка
          [выбрать 1–2 типа ошибок: jump / confusion / fuzzy / wrapper]

  ШАГ 3: Арбитр → сравнивает обе цепочки, выдаёт:
          шаг → тип проблемы → конкретная правка
          → обновляет промпт Решателя (исправить слабые шаги)
          → обновляет промпт Противника (в след. цикле ошибки точнее)

ПОСЛЕ ЦИКЛОВ: Используется только уточнённый промпт Решателя

Все шаги — отдельные запросы. Три роли, но один и тот же LLM.


🚀

Пример применения

Задача: Предприниматель решает закрыть офлайн-магазин детских игрушек и перейти полностью на Wildberries. Нужно проверить логику решения перед тем, как подписывать договор аренды склада.


Шаг 1 — Решатель:

Ты — бизнес-аналитик. Рассуждай строго пошагово, нумеруй каждый шаг.
Обозначай допущения явно. Сохраняй единый формат по всей цепочке.

Задача: оцени решение закрыть офлайн-магазин и перейти полностью на Wildberries.
Данные: детские игрушки, средний чек 2 400 ₽, 40 транзакций/день,
аренда 180 000 ₽/мес, Wildberries комиссия 15% + логистика ~8%.

Построй цепочку: финансы → риски → итоговый вывод.

Шаг 2 — Противник:

Ты — бизнес-аналитик. Твоя задача: создать правдоподобную,
но намеренно дефектную версию рассуждений по той же задаче.

Используй эти типы ошибок (выбери 2):
- jump: пропусти ключевой промежуточный шаг
- confusion: перепутай связанные, но разные понятия
- fuzzy: спрячь логическую дыру за расплывчатыми обобщениями
- wrapper: встрой неверный ключевой шаг в грамотно звучащее объяснение

Задача: [та же про магазин и Wildberries]

Важно: рассуждение должно выглядеть убедительно, но содержать 
скрытые целевые ошибки.

Шаг 3 — Арбитр:

Сравни две цепочки рассуждений по одной задаче.

[Цепочка А — правильная]:
{вставить результат шага 1}

[Цепочка Б — дефектная]:
{вставить результат шага 2}

Для каждого шага:
Шаг №: [номер] | Цепочка: [А / Б / обе] | Тип проблемы: [пропуск / 
смешение / нечёткость / подмена] | Конкретная правка: [что исправить]

Затем: выдай улучшенную Цепочку А с учётом найденных уязвимостей.

Результат: Шаг 1 даст структурированный финансовый анализ. Шаг 2 — внешне похожую цепочку с теми же числами, но со скрытыми дырами (например, Противник может "перепутать" комиссию с маржой или "пропустить" сезонность продаж). Арбитр в шаге 3 разберёт обе версии пошагово и выдаст улучшенный анализ — с теми слабостями, которые реально существовали в первой версии, но были незаметны без контраста.


🧠

Почему это работает

LLM хорошо видит чужие ошибки, но плохо — свои. Когда модель генерирует рассуждение, она вероятностно следует тому, что "звучит правильно" на каждом следующем токене. Попросить её найти дыру в уже написанном тексте трудно: та же логика оценивает его как связный — значит, ок. Это не слабость — это принцип работы.

Контраст делает слабые места видимыми. Рядом стоит текст с теми же данными и той же структурой, но скрытыми ошибками. Арбитр сравнивает не "абстрактно", а шаг против шага. Различия — хороший / плохой шаг на одном материале — создают обучающий сигнал. Именно этот принцип работает в контрастном обучении: не "вот правильно", а "вот правильно рядом с похожим неправильным".

Четыре типа ошибок — это рычаги управления Противником: - jump — пропущен ключевой шаг - confusion — перепутаны похожие понятия (комиссия vs маржа, оборот vs прибыль) - fuzzy — логическая дыра спрятана за расплывчатым языком ("в целом, результаты позитивные") - wrapper — неверный вывод обёрнут в грамотное объяснение

Меняй mix типов ошибок — получаешь разные уязвимости на поверхности. Для финансового анализа — confusion + jump, для аргументации — fuzzy + wrapper.

Дополнительные рычаги: - Число циклов — 1 достаточно для быстрой проверки, 2–3 для сложных многошаговых задач - Архетип Противника → дай конкретную роль вместо безликого агента: "CFO, который ищет дыры в юнит-экономике" острее, чем просто "критик" - Формат фидбека Арбитра → добавь "оцени надёжность каждого шага от 0 до 10" → получишь вероятностную карту рисков


📋

Шаблон промпта

Трёхшаговый процесс — три отдельных запроса:

=== ШАГ 1: РЕШАТЕЛЬ ===

Ты — эксперт в области {домен}. Рассуждай строго пошагово, 
нумеруй каждый шаг. Обозначай допущения явно. 
Сохраняй единый формат по всей цепочке.

Задача: {задача с конкретными данными}

Построй цепочку рассуждений до финального вывода.


=== ШАГ 2: ПРОТИВНИК ===

Ты — эксперт в области {домен}. Создай правдоподобную,
но намеренно дефектную цепочку рассуждений по той же задаче.

Используй типы ошибок: {выбери 1–2 из списка}
- jump: пропусти ключевой промежуточный шаг
- confusion: перепутай связанные, но разные понятия
- fuzzy: спрячь логическую дыру за расплывчатыми обобщениями
- wrapper: встрой неверный ключевой шаг в грамотно звучащее объяснение

Задача: {та же задача}

Важно: рассуждение должно выглядеть убедительно.


=== ШАГ 3: АРБИТР ===

Сравни две цепочки рассуждений по одной задаче.

[Цепочка А — правильная]:
{результат шага 1}

[Цепочка Б — дефектная]:
{результат шага 2}

Для каждого шага в формате:
- Шаг №: [номер]
- Цепочка: [А / Б / обе]
- Тип проблемы: [пропуск / смешение / нечёткость / подмена]
- Конкретная правка: [что именно исправить]

Затем: выдай улучшенную Цепочку А с учётом всех найденных уязвимостей.

Плейсхолдеры: - {домен} — область задачи: финансовый анализ, юридическая аргументация, стратегия, медицинская логика - {задача с конкретными данными} — чем конкретнее данные, тем правдоподобнее ошибки Противника - {выбери 1–2} — для начала попробуй fuzzy + jump: это самые частые и незаметные паттерны


🚀 Быстрый старт — вставь в чат:

Вот шаблон CAP-CoT — метод проверки рассуждений через 
состязательный контраст. Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит о конкретных данных задачи и домене — потому что Противнику нужны реальные числа и факты, чтобы ошибки прятались правдоподобно внутри той же числовой логики. Без этого Цепочка Б будет очевидно плохой и контраст теряет смысл.


⚠️

Ограничения

⚠️ Стоимость токенов: Три запроса на цикл × 2–3 цикла = 6–9 сообщений вместо одного. Для простых задач — избыточно.

⚠️ Субъективные задачи: Если нет чёткого "правильно / неправильно" (выбор цвета логотипа, оценка тональности текста), Противник не сможет создать структурированно дефектную цепочку — и контраст теряет смысл.

⚠️ Зависимость от качества модели: Слабые модели генерируют очевидно плохие цепочки — контраст неинформативен. Метод лучше всего работает с сильными моделями: GPT-4o, Claude Sonnet 3.5+.

⚠️ Специализация промпта: Уточнённый промпт Решателя "настраивается" под конкретный класс задач. Для другого типа задач цикл нужно прогонять заново.


🔍

Как исследовали

Исследователи взяли три роли — Решатель, Противник, Арбитр — и прогнали шесть бенчмарков на четырёх моделях: от GPT-4o-mini до DeepSeek-V3. Бенчмарки специально подобраны с разным типом сложности: школьная математика (GSM8K), олимпийская математика (MATH), многоходовой QA (HotpotQA) и задачи на длинный контекст (LongBench). Эта разнородность важна — она проверяет, работает ли метод универсально, а не только на одном типе задач.

Самое интересное — тест на температуру. Все базовые методы (AoT, MAD, CCoT) теряли стабильность пропорционально росту температуры: чем выше случайность генерации, тем разбросанней результаты. CAP-CoT после 3 циклов оптимизации держал вариацию ниже 1.0 даже при температуре 0.7–1.0. Это значит, что уточнённый промпт буквально "запекает" логику в инструкцию — случайность модели перестаёт разрушать рассуждение. Промпт становится надёжным независимо от настроек.

Аблация показала чёткий порядок важности: Решатель один → добавить Арбитра → добавить Противника. Каждый шаг улучшал точность, но самый большой прирост давал именно Противник. Без него — просто итеративная правка. С ним — системное обнаружение слабостей через контраст. Само исследование реализовано через LangChain и API, но результат — уточнённый промпт, который работает в любом обычном чате.


💡

Адаптации и экстраполяции

🔧 Техника: безликий агент → конкретный архетип → острее критика

Вместо абстрактного "Противника" дай роль с характером: - Бизнес-решение → Противник = "CFO, который ищет дыры в юнит-экономике и не верит оптимистичным прогнозам" - Юридический аргумент → Противник = "адвокат другой стороны, который строит контраргументы" - Технический план → Противник = "разработчик без контекста проекта, который читает спецификацию впервые"

Конкретная роль сужает пространство ошибок до нужного домена — Противник атакует точнее.

🔧 Техника: один запрос вместо трёх → быстрая проверка

Если три отдельных запроса — много, можно сыграть все роли в одном:

Реши задачу {задача} пошагово.

Затем: сыграй роль Противника — создай альтернативную версию своих же 
рассуждений, используя тип ошибки "fuzzy" (прячь логические дыры за 
расплывчатым языком).

Затем: сравни обе версии пошагово и выдай улучшенную финальную цепочку.

Это менее точно — модель знает, что генерирует ошибки, и Противник выходит "мягче". Но для быстрой самопроверки аргумента работает.

🔧 Экстраполяция: CAP-CoT + явная карта рисков

Добавь в Арбитра инструкцию: "оцени надёжность каждого шага по шкале 0–10, где 0 = легко оспорить, 10 = неопровержимо". Получишь не только улучшенную цепочку, но и карту уязвимостей: сразу видно, на каком шаге аргументация держится ненадёжно.


🔗

Ресурсы

Название: CAP-CoT: Cycle Adversarial Prompt for Improving Chain of Thoughts in LLM Reasoning

Авторы: Shuxu Chen, Yitian Zhou, Jiaquan Zhang, Haoyu Bian, Aming Wu, Sungyoung Lee, Chaoning Zhang, Hyundong Shin

Организации: Kyung Hee University (Южная Корея), University of Electronic Science and Technology of China (UESTC), Henan Polytechnic University

Смежные работы: Chain-of-Thought (Wei et al.), Contrastive CoT (CCoT), Self-Refine, Tree of Thoughts, Graph of Thoughts, Reflexion, OPRO


📋 Дайджест исследования

Ключевая суть

Паттерн: модель слепа к своим ошибкам — но отлично видит чужие. CAP-CoT позволяет находить шаткие шаги в пошаговых рассуждениях до того, как цена ошибки стала реальной. Рядом с правильной цепочкой кладётся намеренно дефектная версия — с теми же числами, той же структурой, но скрытыми дырами. Контраст «хороший шаг против похожего плохого на одних данных» делает слабые места очевидными — Арбитр разбирает обе версии шаг против шага и выдаёт конкретные правки.

Принцип работы

Три роли, один и тот же LLM — три отдельных запроса. Решатель строит правильную пошаговую цепочку с нумерацией и явными допущениями. Противник берёт те же данные и создаёт правдоподобно дефектную версию — выбираешь тип ошибок: jump (пропущен ключевой шаг), confusion (перепутаны похожие понятия — комиссия vs маржа, оборот vs прибыль), fuzzy (логическая дыра спрятана за расплывчатым «в целом, результаты позитивные»), wrapper (неверный вывод в умной обёртке). Противнику нужны реальные числа — без них его ошибки будут очевидны и контраст теряет смысл. Арбитр сравнивает обе версии и обновляет промпт Решателя. После 2–3 циклов Решатель становится устойчивее.

Почему работает

Модель генерирует текст токен за токеном, следуя тому что «звучит связно». Попросить её найти дыру в уже написанном тексте — сложно: та же логика оценивает его как нормальный. Это не баг — это принцип работы. Контраст меняет задачу: не «найди ошибку в своём тексте», а «сравни два похожих текста и найди различия» — это у модели получается на порядок лучше. Тот же принцип что в контрастном обучении: не «вот правильно», а «вот правильно рядом с похожим неправильным». Меняй сочетание типов ошибок — получаешь разные уязвимости на поверхность: для финансового анализа работает confusion + jump, для аргументации — fuzzy + wrapper.

Когда применять

Финансовый анализ и стратегические решения — для многошаговых задач перед тем как подписывать договор, выбирать направление, запускать процесс. Особенно когда ошибка на раннем шаге незаметно тянет за собой все последующие. Работает с сильными моделями: GPT-4o, Claude Sonnet 3.5 и выше. НЕ подходит для субъективных задач без чёткого «правильно/неправильно» — выбор дизайна, оценка тональности — Противник не сможет создать структурно дефектную версию, и контраст рассыпается.

Мини-рецепт

1. Запусти Решателя: попроси LLM рассуждать пошагово — нумерация шагов, явные допущения, единый формат до конца. Добавь конкретные числа: чем точнее данные, тем правдоподобнее будут ошибки Противника.
2. Запусти Противника: тот же LLM, та же задача, те же данные — задание создать убедительную, но намеренно дефектную версию. Для старта выбери fuzzy + jump: это самые незаметные паттерны. Укажи, что рассуждение должно выглядеть убедительно.
3. Запусти Арбитра: скопируй обе цепочки, попроси разобрать шаг против шага в формате: номер шага → тип проблемы → конкретная правка. Затем — выдать улучшенную версию Цепочки А.
4. Повтори 2–3 цикла: в каждом раунде Противник становится точнее (Арбитр обновляет и его промпт), а Решатель — устойчивее. Для простой проверки хватит одного цикла.

Примеры

[ПЛОХО] : Оцени решение перейти полностью на маркетплейс. Думай шаг за шагом.
[ХОРОШО] : Три отдельных запроса: Сначала: Ты — финансовый аналитик. Рассуждай пошагово, нумеруй каждый шаг. Оцени решение закрыть офлайн-магазин и перейти на Wildberries. Данные: средний чек 2 400 ₽, 40 продаж в день, аренда 180 000 ₽/мес, комиссия площадки 15% + логистика 8%. Построй цепочку: финансы → риски → вывод. Потом: Создай правдоподобную, но намеренно дефектную версию той же цепочки. Ошибки: confusion — перепутай комиссию и маржу; jump — пропусти сезонность детских игрушек. Те же данные, та же структура. Рассуждение должно выглядеть убедительно. Затем: Сравни Цепочку А [вставить] и Цепочку Б [вставить] шаг против шага. Для каждого шага: тип проблемы + конкретная правка. Затем выдай улучшенную Цепочку А.
Источник: CAP-CoT: Cycle Adversarial Prompt for Improving Chain of Thoughts in LLM Reasoning
ArXiv ID: 2604.23270 | Сгенерировано: 2026-04-28 05:41

Проблемы LLM

ПроблемаСутьКак обойти
Модель плохо находит ошибки в собственных рассужденияхПопросишь проверить только что написанное рассуждение. Модель оценит его как связное — и скажет "всё верно". Та же логика строила текст, та же логика его оценивает. Ошибка на раннем шаге тянет за собой все следующие шаги. Снаружи — выглядит гладко. Внутри — трещина с самого начала. Работает так для любой многошаговой задачи: финансовый анализ, юридическая аргументация, стратегические решенияНе проси модель проверить саму себя. Поставь рядом намеренно дефектную версию рассуждения. Попроси сравнить шаг против шага — различия сразу видны

Методы

МетодСуть
Три роли для проверки рассуждений — Решатель, Противник, АрбитрТри отдельных запроса к одной и той же модели. Запрос 1 — Решатель: Ты — эксперт в {домен}. Рассуждай пошагово, нумеруй каждый шаг, обозначай допущения явно. Задача: {задача с данными}. Запрос 2 — Противник: Создай правдоподобную, но намеренно дефектную версию рассуждения по той же задаче. Используй типы ошибок: jump (пропуск шага), confusion (путаница понятий), fuzzy (дыра за расплывчатыми словами), wrapper (неверный вывод в грамотной обёртке). Рассуждение должно выглядеть убедительно. Запрос 3 — Арбитр: Сравни Цепочку А (правильную) и Цепочку Б (дефектную). Для каждого шага: номер шага тип проблемы конкретная правка. Выдай улучшенную Цепочку А. Почему работает: модель сравнивает шаг против шага на одних и тех же данных. Один шаг правильный, рядом — похожий, но с дырой. Различие видно сразу. Это сильнее чем просить "найди ошибки в тексте". Когда применять: сложные многошаговые задачи с чётким критерием верности — финансовые расчёты, логическая аргументация, диагностика. Не работает: субъективные задачи без критерия "верно/неверно", простые одношаговые задачи (дорого по токенам), слабые модели (очевидные ошибки Противника — контраст теряет смысл). Лучше всего с GPT-4o, Claude Sonnet 3.5+

Тезисы

ТезисКомментарий
Контраст с намеренно дефектным текстом работает сильнее самопроверкиКогда просишь модель найти ошибки в своём тексте — она оценивает его той же логикой которой строила. Всё "звучит правильно". Когда рядом стоит похожая, но дырявая версия — модель сравнивает конкретный шаг с конкретным шагом на одном материале. Различие создаёт обучающий сигнал. Именно поэтому принцип "правильное рядом с похожим неправильным" сильнее чем просто "вот правильное". Применяй: вместо "найди ошибки в своих рассуждениях" сначала генерируй намеренно дефектную версию, потом сравнивай
📖 Простыми словами

CAP-CoT: Cycle AdversarialPromptfor Improving Chain of Thoughts inLLMReasoning

arXiv: 2604.23270

Суть CAP-CoT в том, что нейросети патологически не умеют признавать свои ошибки, пока их не ткнёшь носом в альтернативу. Обычные рассуждения модели — это Chain of Thought, где она просто катится по рельсам логики, надеясь, что не вылетит в кювет. Но если модель уже один раз ошиблась, она будет защищать этот бред до конца, потому что её внутренняя логика считает этот путь самым вероятным. Чтобы это исправить, исследователи придумали заставлять AI играть в адвоката дьявола против самого себя.

Это как если бы ты писал важный отчет и посадил рядом своего самого вредного коллегу, который мастерски умеет придираться к мелочам. Ты пишешь аргумент, а он тут же выдает правдоподобную чушь, которая звучит почти как правда, но ведет к провалу. Сравнивая свой текст с этой «подделкой», ты моментально видишь, где твоя логика дала слабину. CAP-CoT создает этот конфликт искусственно, заставляя модель буквально сражаться с собственной тенью.

Внутри метода работают три роли: Решатель, Противник и Арбитр. Решатель выдает стандартную цепочку мыслей, Противник намеренно генерирует дефектную версию — такую, которая выглядит логично, но содержит скрытый косяк. Затем включается Арбитр, который сравнивает оба варианта и выписывает пошаговые правки. Это не просто «проверь себя еще раз», а жесткий аудит, где модель заставляют выбирать между правильным путем и конкретной, детально прописанной лажей.

Принцип универсален: его можно натравить на бизнес-план, код или юридический договор. Если ты хочешь перевести магазин на маркетплейс, обычный ChatGPT может радостно подтвердить, что это отличная идея. Но в режиме CAP-CoT он сам создаст сценарий, где ты забываешь учесть логистику или налоги, сравнит его с твоим планом и выдаст: «Смотри, вот тут ты лажаешь так же, как мой выдуманный Противник». Это превращает AI из поддакивающего болвана в трезвого критика.

Короче, хватит просить нейросеть «просто подумать» — заставляй её ошибаться специально. Главный вывод исследования: 15% прироста точности берутся не из новых знаний, а из умения модели видеть контраст между нормой и девиацией. Если не хочешь, чтобы AI галлюцинировал в твоих задачах, используй цикл состязательных рассуждений. Либо ты сам создаешь себе оппонента, либо реальность сделает это за тебя, но уже за твои деньги.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с