TL;DR
ContraPrompt — метод улучшения промптов, который сравнивает ход рассуждений двух попыток решить одну и ту же задачу: неудачной и успешной. Не просто "этот ответ плохой, тот хороший" — а "вот конкретный шаг, который появился в успешной попытке и отсутствовал в провальной".
Обычно, когда AI ошибается, люди либо перефразируют запрос, либо добавляют контекст — не понимая, чего именно не хватило в рассуждениях. Стандартный разбор ошибок выглядит так: "модель была не точной, добавь больше деталей." Это негативный сигнал без позитивной цели — знаешь что пошло не так, не знаешь что именно делать иначе.
ContraPrompt решает это через диадический анализ: берёт две полные цепочки рассуждений с одного и того же ввода — где модель провалилась и где справилась — и извлекает конкретный шаг-разницу. Этот шаг упаковывается в переносимое правило по шаблону: "Когда [паттерн входных данных] — делай [стратегию], потому что [причина]." Правила накапливаются и организуются в дерево: разные типы задач получают разные правила, не общую кашу инструкций.
Схема метода
Автоматическая система (для справки — как оно работает в исследовании):
ШАГ 1: Задача → попытка 1 (с полными рассуждениями) → провал
ШАГ 2: Попытка 2 с коротким фидбэком → успех (20-37% случаев)
ШАГ 3: Сравнить ход рассуждений пары (не ответы!) → найти шаг-разницу
ШАГ 4: Правило: "Когда [паттерн] — [шаг], потому что [причина]"
ШАГ 5: Дерево правил по типам входных данных → точная маршрутизация
Ручная версия в чате (что реально может применить читатель):
ШАГ 1: Задача → попросить AI думать вслух → первый ответ
ШАГ 2: Фидбэк → попросить попробовать иначе → второй ответ
ШАГ 3: Дать AI оба хода рассуждений → попросить найти шаг-разницу
ШАГ 4: Попросить сформулировать правило → сохранить в личную базу
Шаги 1-2 — отдельные сообщения в чате. Шаги 3-4 — ещё одно сообщение.
Пример применения
Задача: Ты готовишь питч-дек для инвестора Фонда Бортника на 3 млн рублей. Попросил Claude написать раздел "Проблема и рынок" — он сделал что-то общее про "большой рынок EdTech". Попросил ещё раз — второй раз вышло убедительно с конкретными данными. Хочешь понять почему, чтобы не угадывать в следующий раз.
Промпт:
У меня две попытки написать раздел "Проблема и рынок" для питч-дека.
ПОПЫТКА 1 (слабая):
[вставь текст первой попытки + твой фидбэк что не понравилось]
ПОПЫТКА 2 (лучше):
[вставь текст второй попытки]
Сделай следующее:
1. Сравни ХОД РАССУЖДЕНИЙ, не просто тексты.
Напиши, какой конкретный шаг появился во второй попытке и отсутствовал в первой.
Не "второй текст лучше потому что детальнее" —
а "второй текст сначала закрепил конкретную боль через цифру, потом привязал к рынку"
2. Объясни, почему именно этот шаг изменил результат.
3. Сформулируй правило по шаблону:
"Когда [паттерн: описание задачи или тип ввода] —
делай [конкретный шаг рассуждений],
потому что [причина]"
Правило должно быть переносимым — применимым к любому похожему питч-разделу, не только этому.
Результат: AI разберёт оба текста по шагам рассуждения и покажет конкретное расхождение: например, первая попытка сразу перешла к масштабу рынка без "якоря" боли, вторая сначала зафиксировала проблему через конкретный сценарий. Финальное правило будет точечным — его можно вставить в промпт для следующего питч-раздела или любого убедительного текста с похожей структурой.
Почему это работает
Когда AI ошибается, легко сказать "неправильно — попробуй ещё раз." Сложно сказать, какой именно шаг рассуждений был пропущен. Инструкция "будь точнее" или "проверь факты" — это указание на слабость без указания на лекарство.
При этом модель умеет сравнивать тексты и находить структурные различия — это одна из её сильных сторон. Особенно когда контекст фиксирован: один ввод, одна задача, два разных хода рассуждений.
Метод использует эту силу напрямую: ты даёшь AI два хода рассуждений с одной и той же задачи и просишь найти разницу на уровне шагов. AI не анализирует абстрактную неточность — AI ищет конкретный шаг, который присутствует в успешном варианте и отсутствует в провальном. Из этого выходит правило, а не диагноз.
Рычаги управления: - Смени формат правила: вместо "Когда — делай — потому что" попроси "Что конкретно добавить в системный промпт, чтобы шаг появлялся автоматически" → сразу получишь готовую инструкцию для промпта - Накопи 5-7 правил → попроси AI сгруппировать по типу задач → получишь личное дерево правил: "Для аналитических документов: ...", "Для убедительных текстов: ..." - Попроси AI не только найти шаг-разницу, но и объяснить почему модель пропускала его в первый раз — это даёт понимание структурной слабости
Шаблон промпта
У меня две попытки выполнить задачу: {описание задачи}
ПОПЫТКА 1 ({оценка: слабая / неудачная / с ошибкой}):
{текст первой попытки — желательно с ходом рассуждений}
МОЙ ФИДБЭК ПОСЛЕ ПОПЫТКИ 1:
{что именно не устроило}
ПОПЫТКА 2 ({оценка: лучше / успешная / исправленная}):
{текст второй попытки — желательно с ходом рассуждений}
Выполни диадический анализ рассуждений:
1. ШАГОВАЯ РАЗНИЦА
Найди конкретный шаг, который появился в попытке 2 и отсутствовал в попытке 1.
Формат: "В попытке 1 рассуждение шло: [шаги]. В попытке 2 появился шаг: [шаг]"
Не общие слова — конкретный шаг в ходе мыслей.
2. ПОЧЕМУ ЭТОТ ШАГ ВАЖЕН
Объясни причинно: что именно этот шаг изменил в структуре рассуждения.
3. ПЕРЕНОСИМОЕ ПРАВИЛО
Сформулируй по шаблону:
"Когда {паттерн: тип задачи или характеристика ввода} —
добавляй шаг {конкретное действие},
потому что {причина}"
Правило должно работать для похожих задач, не только этой.
Плейсхолдеры:
- {описание задачи} — что хотел получить: "написать убедительный раздел для инвестора", "проанализировать договор", "составить план"
- {оценка} — коротко о качестве попытки
- {текст попытки} — чем больше видно рассуждений (не только итог), тем точнее правило
- {что не устроило} — конкретно: "нет цифр", "слишком общо", "пропущен ключевой риск"
🚀 Быстрый старт — вставь в чат:
Вот шаблон для диадического анализа рассуждений.
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит про конкретную задачу, попросит обе попытки (или предложит сначала сгенерировать их) — потому что без пары провал/успех правило извлечь не из чего. Она возьмёт структуру анализа из шаблона и адаптирует под твой контекст.
Ограничения
⚠️ Нужна реальная пара "провал → успех": Метод не работает если модель стабильно проваливается или стабильно успешна. Нужен случай где "в первый раз не получилось, во второй получилось". Если модель не знает предметной области — никакой анализ рассуждений не поможет.
⚠️ Конфаунд фидбэка: Вторая попытка получает дополнительный контекст (твой фидбэк). Нельзя на 100% разделить "модель нашла лучшую стратегию" и "подсказка в фидбэке навела на ответ". Авторы это признают. Правила всё равно получаются полезными — но держи в голове: часть успеха объясняется просто дополнительным контекстом, а не иной стратегией рассуждений.
⚠️ Правила могут фиксить формат, не рассуждения: Часть "правил" оказывается не про стратегию мышления, а про форматирование вывода ("убери префикс 'Ответ:'"). Это легитимно, но не то же самое что структурное улучшение рассуждений.
⚠️ Польза выше при сложных задачах: На простых задачах, где модель и так справляется в 90% случаев, извлекать нечего. Метод наиболее ценен там где у модели "знание есть, применяет нестабильно" — многошаговый анализ, сложная классификация, рассуждения по нескольким источникам.
Как исследовали
Авторы собрали автоматизированную систему: модель (Claude Haiku 4.5) решала задачи в цикле до 3 попыток, более способная модель (Claude Sonnet 4.5) анализировала пары провал/успех и извлекала правила. Всё сравнивалось с предыдущим SOTA — методом GEPA, который тоже анализирует ошибки, но смотрит на одну трассу, а не на пару.
Интересная деталь дизайна: задачи решались при температуре 1.0 — намеренно высокой. При низкой температуре повторные попытки воспроизводят почти тот же провал, и сравнивать нечего. При высокой — каждая попытка реально пробует другой путь рассуждений. Это важный принцип для ручного применения: просить AI "попробовать иначе" стоит именно как запрос на другую стратегию, а не просто повтор.
Результаты оказались устойчивыми: чем выше процент успешных повторов на бенчмарке, тем больше улучшение от метода. HotPotQA (многошаговые вопросы с поиском по источникам) давал 37% успешных повторов — и получил самый большой прирост. BBH (структурированные задачи, где GEPA уже почти насытил метод) — 20% повторов и минимальный прирост. Это логично: больше успешных повторов = больше информативных пар для анализа = точнее правила.
Дополнительно проверили на финансовой задаче с 139 категориями (классификация числовых значений в SEC-отчётах). Там метод автоматически нашёл ветви дерева, совпавшие со стандартами US GAAP — то есть правила из данных воспроизвели структуру дисциплины. Авторы не закладывали эти категории явно.
Адаптации и экстраполяции
1. Накопление личной базы правил
🔧 Собирай правила со временем → строй дерево по типам задач
После нескольких сессий с извлечёнными правилами попроси AI их сгруппировать:
Вот правила, которые я собрал за последнее время:
[список правил в формате "Когда — делай — потому что"]
Сгруппируй их по типу входных данных или задачи.
Для каждой группы — заголовок-условие.
Формат: дерево с секциями [тип задачи] → [правила]
Получишь персональный маршрутизатор: при похожей задаче открываешь нужную ветку и добавляешь правила в системный промпт.
2. Генерация пары прямо в чате (без предварительного провала)
Если не хочешь ждать реального провала — попроси AI сымитировать оба хода:
Реши задачу дважды, используя разные стратегии рассуждений.
Показывай ход мыслей в обоих случаях.
Задача: {задача}
ПОПЫТКА A — стандартный подход:
[думай вслух, потом ответ]
ПОПЫТКА B — другой подход (попробуй другую точку входа в задачу):
[думай вслух, потом ответ]
Теперь сравни обе попытки:
какой шаг рассуждений различается?
Что бы ты добавил в промпт, чтобы нужный шаг появлялся сразу?
Это мягкая версия метода — без гарантии что разница будет значимой, но часто выдаёт полезные инсайты о структуре рассуждений по конкретной задаче.
Ресурсы
ContraPrompt: Contrastive Prompt Optimization via Dyadic Reasoning Trace Analysis Published at LLM Reasoning Workshop ICLR 2026
Авторы: Rishav Rishav, Pushpak Pujari, Pushpendre Rastogi — Vizops AI
GitHub с артефактами: github.com/rishvv/contraprompt_artefacts
Упомянутые методы: Reflexion (Shinn et al., 2023), Self-Refine (Madaan et al., 2023), GEPA (Agrawal et al., 2026), TextGrad (Yuksekgonul et al., 2024), DPO (Rafailov et al., 2023)
