Всем привет. В декабре по всем AI-каналам пролетел лайфхак, который звучал как развод: продублируй свой запрос к нейросети, буквально Ctrl+C, Ctrl+V в одном сообщении, и точность вырастет. В пересказах фигурировали «+76%» и ссылка на Google Research, что придавало всей этой истории солидности. Трюк выглядел как-то настораживающе и при том вроде не сложным для проверки. Короче, я потратил $1.48, прогнал 3360 запросов и теперь знаю ответ. Он оказался интереснее, чем «работает || не работает».

Что на самом деле написано в статье

Источник это препринт Prompt Repetition Improves Non-Reasoning LLMs трёх исследователей из Google Research. Уже в названии есть слово, которое из вирусных пересказов выпало: non-reasoning. Авторы сравнивали одиночный промпт с тем же промптом, вставленным дважды, на моделях, которым не давали рассуждать пошагово. Результат: 47 статистически значимых побед из 70 сравнений и ни одного значимого проигрыша.

А знаменитые «+76%» это один-единственный стресс-тест. Gemini 2.0 Flash-Lite просили назвать 25-е имя в списке из 50. Без повтора модель отвечала правильно в 21,33% случаев, с повтором в 97,33%. Это прирост на 76 процентных пунктов в одной специальной задаче, а не «+76% ко всем ответам». Разница примерно как между «страница стала загружаться на 76мс быстрее» и «время загрузки сократилось на 76%». Абсолютное и относительное значение, внезапно, не одно и то же.

Гипотеза, почему это вообще может работать, красивая. LLM читает текст слева направо. Когда длинный список идёт раньше вопроса, модель обрабатывает его, ещё не зная, что́ её потом спросят. Во второй копии вопрос уже прочитан и модель фактически перечитывает список, понимая задачу. Дешёвая замена перечитыванию, которое мы с вами делаем глазами.

Но есть интересная деталь. Статья вышла в декабре 2025-го. А Gemini 2.0 Flash-Lite Google выключил 1 июня 2026-го. То есть модель, на которой получен вирусный результат, уже мертва, точную репликацию сделать физически невозможно, а трюк тем временем продолжает вируситься. Вопрос «а работает ли это на живых моделях?» повис в воздухе. Его я и пошёл проверять.

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

Как я проверял

Сразу дисклеймер: код эксперимента писал агент (Claude) под моим протоколом, думаю это норм. Важно другое, ответы моделей оценивал не другой LLM, а детерминированный парсер по эталонным ответам, вся статистика пересчитывается из сырых логов одним скриптом, и всё это лежит в открытом репозитории. Воспроизведение стоит примерно полтора доллара, так что можно перепроверить.

Датасет состоит из 220 заданий, замороженных до первого платного запроса (SHA-256 зафиксирован, потом не менялся):

  • Стресс сьют, 160 задач. Адаптация двух задач из статьи: NameIndex («назови 25-е имя в списке из 50») и MiddleMatch («какое имя стоит между этими двумя»). Половина на английском, половина на русском, так как переносимость на другой язык и токенизацию в оригинале не проверяли, а мне было любопытно.

  • Practical сьют, 60 задач. Обычные бытовые запросы с однозначным ответом: сумма чека, интервалы дат, подсчёт букв, выбор отеля по фильтрам, перевод испанских фраз (изучаю испанский по-немногу).

Правила простые и одинаковые для всех прогонов: прямой API без чат-интерфейса, каждый запрос это чистый лист без истории, без system prompt, temperature = 0. В повторе промпт дублируется целиком, между копиями только пустая строка, никаких «повторяю». Порядок задач перемешан, «сначала обычный или сначала удвоенный» разыгрывается для каждой задачи отдельно. Статистика парная: точный тест Макнемара плюс bootstrap-интервал на 10к ресемплов.

И ещё одна деталь, которая потом выстрелит: перед каждым основным прогоном я гонял пилот на стабильность, 20 одинаковых запросов отправляются дважды, чтобы проверить, детерминирована ли модель на самом деле.

Прогон первый. Reasoning выключен

Начал с gemini-2.5-flash-lite это ближайшая живая родственница модели из статьи и, кстати, последняя актуальная Gemini, у которой рассуждение выключается полностью. У всего поколения 3.x кнопки «выкл» уже нет. «Выключен» здесь не вера в документацию: API возвращает счётчик thinking-токенов, и во всех ответах он был нулевым.

сьют

обычный

удвоенный

Δ, п.п.

p (Макнемар)

95% CI, п.п.

стресс (n=160)

58 (36,3%)

120 (75,0%)

+38,8

2,2·10⁻¹²

+28,7 … +48,1

бытовые (n=60)

31 (51,7%)

34 (56,7%)

+5,0

0,58

−6,7 … +16,7

Эффект воспроизвёлся, и на стресс-задачах он огромный.

категория

обычный

удвоенный

Δ, п.п.

исправлено / сломано

NameIndex EN

27,5%

100%

+72,5

29 / 0

NameIndex RU

45,0%

100%

+55,0

22 / 0

MiddleMatch EN

40,0%

47,5%

+7,5

8 / 5

MiddleMatch RU

32,5%

52,5%

+20,0

14 / 6

Один и тот же список имён, но два разных вопроса и разный результат
Один и тот же список имён, но два разных вопроса и разный результат

Итак, NameIndex это ровно та задача, где в статье было +76 п.п., у меня дала +72,5 на английском и вышла на 100% в обоих языках. Ни одного сломанного ответа. Практически идеальная репликация, причём на модели, которой на момент выхода статьи не существовало. А MiddleMatch, на тех же самых списках имён, еле шевелится и статистически неясен. То есть трюк лечит не «внимание вообще», а один конкретный сбой: модель теряет счёт позиций в длинном перечислении.

На бытовых задачах прирост не отделился от шума. И это, кстати, не потому что там нечего улучшать: baseline всего 51,7%, а сумму чека из семи позиций модель не посчитала ни разу. Считать в уме без рассуждения она просто походу не умеет.

Ещё забавное, все нарушения формата ответа легли на одну сторону. Обычный промпт ни разу не нарушил инструкцию «ответь только числом», а удвоенный четыре раза пускался расписывать решение по шагам. Я отдельным прогоном проверил, что это не артефакт обрезки вывода. Повтор делает модель болтливее, хотя инструкция «без пояснений» приходит ей дважды.

Еще копии + маркер

Дальше, на том же датасете и той же модели прогнал ещё два варианта:

условие

payload

точность

Δ, п.п.

исправлено / сломано

обычный

<Q>

36,3%

две копии

<Q><Q>

75,0%

+38,8

73 / 11

три копии

<Q><Q><Q>

80,0%

+43,8

78 / 8

с маркером

<Q> + «Повторяю:» + <Q>

75,6%

+39,4

73 / 10

Работает сам повтор, а не аккуратность склейки
Работает сам повтор, а не аккуратность склейки

Третья копия добавляет ещё ~5 п.п., но отдача убывает резко, первая добавленная копия дала +38,8, вторая +5. А слово «Повторяю:» между копиями не меняет вообще ничего, те самые +39,4 против +38,8, разница внутри шума. Работает сам повтор, а не аккуратность склейки. Это, кстати, и есть тот пункт, где я разошёлся с февральским пересказом, там маркер подан как улучшение, у меня он не даёт ничего.

Бонусом это бесплатно проверило воспроизводимость: условие «две копии» в независимом прогоне дало ровно те же 58 → 120, с теми же 73 исправлениями и 11 поломками. Побитово.

Модели, где reasoning нельзя выключить

Теперь главный вопрос, а что с трюком на современных моделях? Взял gemini-3.5-flash-lite. У неё рассуждение не отключается в принципе: параметр thinkingBudget API отвергает с ошибкой 400, а у thinkingLevel минимальное значение minimal, никакого «off».

Пилот стабильности показал, что модель недетерминирована. 8 из 20 одинаковых запросов при temperature = 0 дали разные ответы. У 2.5 таких было 0 из 20. Протокол на этот случай сам поднимает прогон до трёх ответов на условие с голосованием по большинству, и в итоге прогон вырос с 440 запросов до 1320 и упёрся в предохранитель от бесконечного цикла, который я сам же и поставил. Первая попытка умерла на пятисотом запросе, пришлось поднимать лимит и перезапускать.

Результат того стоил:

режим

обычный

удвоенный

Δ, п.п.

p

2.5, reasoning выключен

36,3%

75,0%

+38,8

2,2·10⁻¹²

3.5, thinking minimal

48,8%

85,0%

+36,3

4,7·10⁻¹⁵

3.5, thinking high

100%

100%

0,0

1,0

На minimal эффект жив и почти не ослаб, даже MiddleMatch, который на 2.5 не двигался, тут дал статистически ясные +22,5 и +37,5 п.п. Попутно выяснилось, что повтор ещё и стабилизирует недетерминированную модель. Доля задач, где все три ответа совпали дословно, выросла с 73,6% до 90,9%, а «плавающих» между верным и неверным стало втрое меньше.

Я заметил, что счётчик thinking-токенов во всех 1320 ответах показывал ноль. То есть «минимальное рассуждение» на этих задачах фактически не рассуждает, значит, по-настоящему reasoning я ещё не проверил.

thinkingLevel = high, модель реально тратит в среднем 1 050 thinking-токенов на запрос. Прикинул по пробным запросам, что стресс-сьют обойдётся в $0,57. По факту вышло $0,97, промахнулся в полтора раза, thinking-бюджет на живых задачах гуляет. В общем, один этот прогон стоил дороже, чем все четыре предыдущих вместе взятые.

Повтор промпта помогает только пока модель не рассуждает, на обоих сьютах
Повтор промпта помогает только пока модель не рассуждает, на обоих сьютах

Зато результат получился самый чистый во всём эксперименте: 160 из 160. В обоих условиях. Ноль исправлений, ноль поломок, идеальный потолок. Слабость внимания, которую латает повтор, рассуждением снимается целиком. Ровно то, что вынесено в заголовок статьи non-reasoning, только теперь это видно на живой модели 2026 года.

Для полноты прогнал с рассуждением и бытовой сьют. Там та же история: 60 из 60 на обычном промпте, и повтору остаётся только ломать 0 исправлений против 1 поломки.

Вот тут самое наглядное. Помните сумму чека из семи позиций, которую модель без рассуждения не осилила ни разу?

режим

обычный

удвоенный

2.5, reasoning выключен

0/12

0/12

3.5, thinking minimal

0/12

0/12

3.5, thinking high

12/12

12/12

Ноль из двенадцати и сразу двенадцать из двенадцати. Удвоение промпта тут не помогало вообще, потому что проблема была не во внимании, а в том, что складывать в уме модель просто не умеет. Никаким повтором это не чинится, а рассуждением чинится сразу и полностью.

Кстати, та единственная поломка тоже показательна. Задача: сколько раз буква «р» встречается в слове «переосвидетельствование». Обычный промпт потратил 1035 токенов на размышления и ответил верно. Удвоенный потратил 440 и ответил «2». То есть повтор заставил модель думать меньше. Один случай, тут сложно сделать вывод.

Почём вся эта магия

  • Входные токены растут ровно в число копий: ×2 за две, ×3 за три. Кэширование промпта не сработало ни разу.

  • Задержка от удвоения не выросла вообще: на 2.5 медиана держится в коридоре 466–471мс во всех четырёх условиях, на 3.5 438мс что с повтором, что без. Вторая копия по времени бесплатна.

  • А вот рассуждение нет: на 3.5 медиана выросла с 438мс до 2423 (в 5,5 раза) и совсем другие деньги.

Весь эксперимент: 3360 залогированных запросов, $1,48.

Что я из этого вынес

Ctrl+C, Ctrl+V это не хак для апгрейда интеллекта, а костыль для одной конкретной слабости: модель без рассуждения теряет нужный элемент в длинном перечислении, и повтор дёшево возвращает его в фокус. На протестированных моделях костыль работал почти без побочек, ровно до момента, когда модель начинает думать сама. Тогда чинить оказывается нечего.

Короче как всегда, лайфхаки для LLM долго не живут, а вирусятся годами, причем люди думают, что это применимо к любой модели.

Практический итог простой. Гонять дешёвую non-reasoning модель на задачах вида «найди в длинном списке» можно, это работает. Если модель с reasoning, то скорее всего, вы просто заплатите вдвое на вход.

Что это всё не доказывает

Честности ради:

  • Выводы про два конкретных model ID и конкретные даты (прогоны 31 июля и 1 августа 2026), а не про «все современные модели».

  • Датасет самодельный. Постановка задач из статьи воспроизведена, но это не оригинальные бенчмарки.

  • Прогоны с high шли в один ответ на условие, думаю это оправдано нулевым расхождением в пилоте, но формально слабее трёхкратного.

  • Потолок 100% в обоих сьютах с рассуждением означает, что на этих задачах разницу между условиями измерить нельзя в принципе, тут нужен датасет потруднее.

  • Ну и нужно понимать, что «Не отделился от шума» на бытовых задачах это не то же самое, что «эффекта нет»

Исследование: https://arxiv.org/abs/2512.14982
Код, протокол и сырые логи: https://github.com/vovalukashov/prompt-repetition-experiment

Комментарии (2)


  1. kuznetsovslavik
    03.08.2026 09:00

    Не совсем понимаю, почему вокруг этого подняли такой ажиотаж. В итоге получается, что мы не нашли способ улучшить ИИ, а просто заставили его внимательнее прочитать собственный запрос. Для меня это больше похоже на временный обходной трюк, чем на какую-то новую возможность.


    1. luka911a Автор
      03.08.2026 09:00

      вот и я тоже задумался, почему это так вирусится до сих пор, решил посмотреть, что на самом деле