TL;DR
Если попросить модель не «сначала решить, потом проверить», а держать проверку активной всё время и чинить ошибку сразу, как только заметила — точность решения сложных задач растёт заметно сильнее, чем при классической проверке «после каждого абзаца». Это не просто «попроси модель быть внимательнее» — это конкретная формулировка: одновременно поддерживать несколько ролей (решение, проверка логики, проверка границ, проверка вычислений, контроль формата) на каждом шаге рассуждения, а не переключаться между ними по очереди.
Обычно когда просишь модель «решить и в конце всё перепроверить», она проверяет пачками: написала абзац — сверилась, написала следующий — сверилась. Ошибка, допущенная на 3-м шаге, тащится дальше и вылезает только когда до неё дойдёт очередь общей ревизии. Модель как будто держит в голове только «то, что решает прямо сейчас», а не весь набор критериев сразу.
Метод исправляет это одной инструкцией: просит модель непрерывно удерживать все цели (не только «решить», но и «проверить», «не выйти за границы», «пересчитать») и чинить ошибку в момент обнаружения, не дожидаясь конца абзаца. В исследовании это дало точность 76.67% против 53-57% у альтернатив — и без пропорционального роста длины типичного ответа.
Схема метода
ШАГ 0 (в одном промпте): формулируешь задачу + список обязательств
→ решение, проверка логики, проверка границ, проверка вычислений, формат вывода
ШАГ 1 (тот же запрос, без разделения на этапы):
инструкция "держи все обязательства активными непрерывно,
чини ошибку сразу при обнаружении, не жди конца шага"
→ модель генерирует ответ с вкраплёнными самоисправлениями
Всё выполняется в одном промпте, без отдельных запросов.
Пример применения
Задача: Считаешь юнит-экономику доставки еды перед питчем инвестору — маржу с одного заказа с учётом комиссии агрегатора, стоимости курьера и скидки клиенту. Классическая ловушка: модель красиво считает, но забывает вычесть комиссию или не замечает, что маржа ушла в минус.
Промпт:
Посчитай маржу с одного заказа доставки:
цена блюда 890₽, комиссия агрегатора 22%,
доставка курьеру 180₽, скидка клиенту 100₽.
Пока считаешь — одновременно, на каждом шаге, держи активными:
- Решение: посчитай итоговую маржу по шагам, без пропусков.
- Проверка логики: убедись, что порядок вычитания издержек верный
(сначала скидка, потом комиссия, потом доставка).
- Проверка границ: если маржа отрицательная или больше цены блюда —
это ошибка, останови и найди её.
- Проверка вычислений: пересчитывай каждое арифметическое действие.
- Формат: в финале — только итоговое число маржи в рублях.
Как только заметишь ошибку в любом из этих пунктов — сразу останови
текущий шаг, исправь и продолжи. Не откладывай проверку до конца.
Результат: модель выдаст расчёт, где видно, как она иногда останавливается посреди шага и переписывает его («стоп, я вычел комиссию из полной цены, а нужно из цены после скидки — пересчитываю»), а не идёт до конца и потом «проверяет всё сразу». В финале — чистое число маржи. По сравнению с промптом «посчитай, а потом проверь» — точность выше, а длина ответа растёт не сильно.
Почему это работает
Модель генерирует токены строго по очереди, но это не значит, что она думает строго по очереди. На каждом шаге генерации она может распределять внимание широко — одновременно «смотреть» на условие задачи, текущий вывод и критерии проверки, а не фокусироваться только на том, что пишет прямо сейчас.
Обычная инструкция «проверь в конце» заставляет модель разделять решение и проверку на два разных текстовых блока — как два человека, работающих по очереди. Инструкция «держи проверку активной непрерывно» заставляет модель распределять внимание шире весь путь, а не переключаться между режимами. Именно это совпадает с более высокой точностью в измерениях — при непрерывной проверке внимание модели было более рассеянным, но при этом лучше покрывало важные части задачи (условие, ограничения, текущий вывод).
Рычаги управления: - Список обязательств — под юридический текст добавь «проверка соответствия закону», под код — «проверка граничных случаев ввода» - Фраза «чини сразу» vs «проверяй после каждого абзаца» — это переключатель между двумя режимами из исследования - Для простых задач убери часть пунктов — иначе рискуешь получить непропорционально длинный ответ (см. ограничения)
Шаблон промпта
Реши задачу: {задача}.
Пока решаешь, одновременно на каждом шаге держи активными эти обязательства:
- Решение: {основной ход решения}
- Проверка логики: {что должно быть логически непротиворечивым}
- Проверка границ: {какие значения/выводы недопустимы}
- Проверка вычислений: пересчитывай каждое действие
- Формат: {в каком виде выдать финальный ответ}
Как только заметишь ошибку в любом из этих пунктов — сразу останови
текущий шаг, исправь и продолжи рассуждение. Не откладывай проверку
до конца — держи все обязательства активными непрерывно.
🚀 Быстрый старт — вставь в чат:
Вот шаблон непрерывной самопроверки при решении задачи.
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит, какие именно проверки важны для твоей задачи (границы значений, формат вывода, критерии логики) — потому что без конкретики список обязательств превращается в общие слова и метод не сработает. Модель возьмёт структуру из шаблона и наполнит её твоими критериями.
Ограничения
⚠️ Узкая проверка: метод протестирован только на математических олимпиадных задачах с одним точным числовым ответом (AIME) — для творческих или субъективных задач (текст, идея, дизайн) он не проверялся.
⚠️ Риск раздувания ответа: метод может увести модель в очень длинную «зависшую» генерацию — иногда ответ раздувается в 2-3 раза без выигрыша в точности. Это происходит нечасто, но именно на таких случаях держится средняя длина ответа.
⚠️ Причинность не доказана: авторы честно пишут — связь «шире внимание → выше точность» это совпадение, не доказанный механизм. Возможно, есть третий фактор, который влияет на оба показателя.
⚠️ Один прогон, одна модель: каждая задача решалась только один раз на одной модели (deepseek-v4-flash). Нет проверки, что эффект воспроизведётся на других моделях или при повторных запусках.
Как исследовали
Исследователи взяли 30 задач AIME 2025 (сложные математические олимпиадные задачи с целочисленным ответом от 0 до 999) и прогнали каждую три раза — с разной формулировкой промпта: без дополнительных инструкций, с проверкой блоками после каждого абзаца, и с непрерывной проверкой с немедленным исправлением ошибок. Всё через API одной модели, с фиксированными настройками генерации.
Точность считали по совпадению финального числа с эталоном, а заодно напрямую измерили матрицы внимания модели — насколько широко она распределяет фокус между условием задачи, ограничениями и текущим выводом на каждом шаге генерации. Оказалось, что режим с непрерывной проверкой дал точность 76.67% против 53-57% у альтернатив, при этом типичная длина ответа не выросла пропорционально — раздулись только несколько крайних случаев.
Что удивило: обычно рассеянное внимание считается признаком ошибки или «растерянности» модели — а тут оно совпало с более высокой точностью. Авторы специально подчёркивают: это предварительный, разведочный результат (один прогон на 30 задачах) — не доказательство причинности, но достаточный сигнал, чтобы стоило проверить формулировку на своих задачах.
