3,583 papers
arXiv:2604.17937 76 20 апр. 2026 г. FREE

ContraPrompt: извлечение правил из пары «провал → успех» одной задачи

КЛЮЧЕВАЯ СУТЬ
Когда говоришь модели 'попробуй точнее' — ты знаешь что пошло не так. Не знаешь, какой конкретный шаг рассуждений был пропущен. ContraPrompt позволяет превратить любую пару 'плохой ответ → хороший ответ' в переносимое правило для следующей похожей задачи. Метод сравнивает не сами ответы, а ход рассуждений двух попыток с одного ввода — и ищет конкретный шаг-разницу. Из него собирается правило по шаблону 'Когда [паттерн задачи] — делай [шаг], потому что [причина]'. Не 'будь точнее', а 'когда пишешь раздел для инвестора — сначала зафикси боль через цифру, потом привязывай к рынку'.
Адаптировать под запрос

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)


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

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

Когда говоришь модели 'попробуй точнее' — ты знаешь что пошло не так. Не знаешь, какой конкретный шаг рассуждений был пропущен. ContraPrompt позволяет превратить любую пару 'плохой ответ → хороший ответ' в переносимое правило для следующей похожей задачи. Метод сравнивает не сами ответы, а ход рассуждений двух попыток с одного ввода — и ищет конкретный шаг-разницу. Из него собирается правило по шаблону 'Когда [паттерн задачи] — делай [шаг], потому что [причина]'. Не 'будь точнее', а 'когда пишешь раздел для инвестора — сначала зафикси боль через цифру, потом привязывай к рынку'.

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

Стандартный разбор ошибок выглядит так: 'ответ неточный — добавь деталей'. Это как сказать врачу 'мне плохо' и получить совет 'чувствуй себя лучше'. Знаешь что плохо — не знаешь что именно делать иначе. ContraPrompt переворачивает схему: не ищи что сломалось в провальной попытке — найди что нового появилось в успешной. Берёшь два полных хода рассуждений с одной и той же задачи. Просишь AI найти шаг, который присутствует в хорошем варианте и отсутствует в плохом. Модель умеет искать структурные различия — особенно когда контекст фиксирован. Используй эту силу направленно.

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

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

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

Сложные многошаговые задачи — для ситуаций 'знание у модели есть, результат нестабильный': аналитика по нескольким источникам, убедительные тексты со структурой (питч-разделы, правовые документы, технические обоснования), сложная классификация. Особенно ценно когда получаешь разные результаты на одинаковые задачи и не понимаешь почему. НЕ подходит для: задач где модель справляется в 90% случаев (извлекать нечего), или когда модель стабильно не справляется — нужна реальная пара провал → успех, не просто два случайных ответа.

Мини-рецепт

1. Получи пару: Дай задачу, попроси думать вслух (добавь 'рассуждай пошагово'). Если ответ слабый — дай короткий фидбэк ('нет конкретных данных', 'пропущен ключевой риск') и попроси попробовать иначе. Сохрани оба хода рассуждений.

2. Запусти анализ: Вставь оба текста в новое сообщение с запросом на диадический анализ. Главное требование: найти конкретный шаг, который появился в попытке 2 и отсутствовал в попытке 1 — не 'второй текст детальнее', а 'второй текст сначала закрепил боль через цифру, потом перешёл к рынку'.

3. Зафиксируй правило: Попроси сформулировать по шаблону: 'Когда [тип задачи или паттерн ввода] — добавляй шаг [конкретное действие], потому что [причина]'. Правило должно быть переносимым — работать для похожих задач, не только этой.

4. Накапливай дерево: Собери 5–7 правил → попроси AI сгруппировать по типу задач. Получишь личную карту: 'Для убедительных текстов: ...', 'Для аналитики по источникам: ...' Вставляй нужное правило в промпт перед похожей задачей.

Примеры

[ПЛОХО] : Этот ответ плохой. Попробуй ещё раз и будь точнее
[ХОРОШО] : У меня две попытки написать раздел 'Проблема и рынок' для питч-дека. ПОПЫТКА 1 (слабая): [текст первой попытки] МОЙ ФИДБЭК: слишком общо, нет цифр, сразу перешёл к рынку без конкретной боли ПОПЫТКА 2 (лучше): [текст второй попытки] Сделай диадический анализ рассуждений: 1. Найди конкретный шаг, который появился в попытке 2 и отсутствовал в попытке 1. Формат: 'В попытке 1 рассуждение шло: [шаги]. В попытке 2 появился шаг: [шаг]' 2. Объясни почему именно этот шаг изменил результат. 3. Сформулируй переносимое правило: 'Когда [тип задачи] — добавляй шаг [действие], потому что [причина]'
Источник: ContraPrompt: Contrastive Prompt Optimization via Dyadic Reasoning Trace Analysis
ArXiv ID: 2604.17937 | Сгенерировано: 2026-04-21 05:26

Проблемы LLM

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

Методы

МетодСуть
Сравнение пары провалуспех — извлечение правилаВозьми две попытки на одну задачу: слабую и сильную. Дай обе модели. Попроси найти конкретный шаг рассуждения, который есть во второй и нет в первой. Потом попроси сформулировать правило: "Когда [тип задачи или входные данные] — делай [конкретный шаг], потому что [причина]". Почему работает: Модель хорошо ищет структурные различия когда контекст фиксирован: одна задача, один ввод, два хода рассуждений. Это проще чем анализировать абстрактную ошибку в вакууме. Когда применять: Модель нестабильна — иногда справляется, иногда нет. Не работает: Модель стабильно проваливается (не из чего извлекать) или стабильно успешна (незачем). Простые задачи без многошаговых рассуждений — выхлоп минимальный
📖 Простыми словами

ContraPrompt: ContrastivePromptOptimization via Dyadic Reasoning Trace Analysis

arXiv: 2604.17937

Суть ContraPrompt в том, что нейронки лажают не потому, что они «глупые», а потому, что в их цепочке мыслей проскакивает логическая дыра. Традиционный подход — просто тыкать модель носом в ошибку и просить «сделай нормально». Это не работает, потому что AI не понимает, где именно он свернул не туда. Метод меняет правила игры: он заставляет систему анализировать диадные траектории рассуждений, то есть буквально сравнивать пошаговый путь к провалу и путь к успеху, чтобы выцепить тот самый «золотой шаг», который все изменил.

Это как если бы ты учился печь торт по видеоурокам: в первый раз он сгорел, во второй получился идеальным. Вместо того чтобы просто пересматривать рецепт, ты кладешь две записи своих действий рядом и видишь, что во второй раз ты сначала разогрел духовку, а в первый — засунул тесто в холодную. ContraPrompt находит этот момент «включения духовки» в твоем промпте и фиксирует его как обязательное условие. Без этого сравнения ты бы просто думал, что тебе повезло с мукой.

В основе метода лежит контрастивная оптимизация, которая работает на хирургическом уровне. Система берет неудачный промпт, берет удачный и ищет дифференциальный признак — конкретную инструкцию или факт, который сработал триггером качества. Если в питч-деке для фонда первый вариант был водой про «перспективный рынок», а второй зашел инвесторам, метод подсветит: сработал не «стиль», а упоминание конкретных метрик и расчет объема рынка по методу TAM/SAM/SOM. Это превращает гадание на кофейной гуще в четкий алгоритм.

Хотя метод тестировали на сложных логических задачах, принцип универсален для любого взаимодействия с LLM. Это работает и в кодинге, и в маркетинге, и в написании сложных юридических документов. Вместо того чтобы бесконечно переписывать инструкции с нуля, нужно анализировать дельту между версиями. Мы переходим от эпохи «шаманства с промптами» к эпохе доказательного промпт-инжиниринга, где каждое слово в инструкции обосновано тем, что без него модель стабильно выдает херню.

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

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

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

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