3,583 papers
arXiv:2512.14982 83 16 дек. 2025 г. FREE

Prompt Repetition: удвоение промпта для лучшей точности без reasoning

КЛЮЧЕВАЯ СУТЬ
Ctrl+C, Ctrl+V своего промпта — и модель работает точнее. Звучит абсурдно, но это работает. Метод Prompt Repetition позволяет повысить точность в задачах где порядок информации критичен: поиск элемента в длинном списке, извлечение данных из переписки, выбор из вариантов. LLM читает текст слева направо без возврата. Если варианты ответа идут ДО вопроса — модель обрабатывает их вслепую, без контекста. Повторение промпта даёт второй проход по всей информации: 47 побед из 70 тестов, 0 поражений.
Адаптировать под запрос

TL;DR

Prompt Repetition — техника, которая просто копирует твой промпт дважды подряд: вместо отправляешь . Работает в обычном чате, на любых моделях (Gemini, GPT, Claude, Deepseek).

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

Повторение промпта позволяет каждому токену "увидеть" все остальные токены дважды — первый раз линейно, второй раз с полным контекстом. Исследование показало 47 побед из 70 тестов, 0 поражений на разных моделях и задачах. При этом длина ответа не растёт, задержка не меняется — модель генерирует столько же токенов, просто точнее.


🔬

Схема метода

ВМЕСТО: <твой промпт>
ПИШИ:   <твой промпт>
        <твой промпт>

Всё. Один запрос, один ответ. Просто дублируешь текст промпта.


🚀

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

Задача: У тебя длинная переписка с клиентом в поддержке (30+ сообщений) по поводу заказа на Ozon. Нужно быстро определить — упоминал ли клиент возврат товара, и если да, то в каком сообщении.

Промпт:

Вот переписка с клиентом:

[Сообщение 1] Клиент: Здравствуйте, заказ не пришёл
[Сообщение 2] Поддержка: Добрый день! Уточните номер заказа
[Сообщение 3] Клиент: 12345-WB
[...28 сообщений с уточнениями...]
[Сообщение 31] Клиент: Может тогда просто верну деньги?
[Сообщение 32] Поддержка: Оформим возврат

Упоминал ли клиент возврат? Если да — в каком сообщении?

Вот переписка с клиентом:

[Сообщение 1] Клиент: Здравствуйте, заказ не пришёл
[Сообщение 2] Поддержка: Добрый день! Уточните номер заказа
[Сообщение 3] Клиент: 12345-WB
[...28 сообщений с уточнениями...]
[Сообщение 31] Клиент: Может тогда просто верну деньги?
[Сообщение 32] Поддержка: Оформим возврат

Упоминал ли клиент возврат? Если да — в каком сообщении?

Результат:

Модель точнее найдёт упоминание возврата в Сообщении 31. При обычном промпте она могла бы пропустить косвенное упоминание ("верну деньги") или указать неправильный номер сообщения — особенно если вопрос шёл ДО переписки в структуре промпта. С повторением каждый токен вопроса "видит" всю переписку дважды, снижая риск ошибки.


🧠

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

LLM читает текст слева направо без права вернуться назад. Если в промпте сначала идут варианты ответа, потом вопрос — модель обрабатывает варианты вслепую, без понимания задачи. Отсюда случайные ошибки.

Повторение даёт второй проход по всей информации. Первая копия промпта прочитана линейно. Вторая копия — с накопленным контекстом из первой. Теперь модель "видит" связи между всеми частями промпта: вопрос понимает опции, опции понимают вопрос.

Рычаги управления:

  • Количество повторений — можно повторить 3 раза (×3) для особо сложных задач с длинными списками (NameIndex показал рост точности с 21% до 97%). Для простых задач достаточно ×2.

  • Явная граница — добавь "Let me repeat that:" между копиями. Иногда даёт чуть лучший результат, но не всегда. Тестируй на своих данных.

  • Часть промпта — для очень длинных промптов повторяй только критичную часть (вопрос + инструкцию), не весь контекст. Экономит токены.


📋

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

{твой_промпт}
{твой_промпт}

Или с явной границей:

{твой_промпт}

Let me repeat that:

{твой_промпт}

Или тройное повторение:

{твой_промпт}

Let me repeat that:

{твой_промпт}

Let me repeat that one more time:

{твой_промпт}

Где {твой_промпт} любой промпт который используешь сейчас. Просто продублируй его. Инструкция по формату ответа, контекст, вопрос — всё повторяется целиком.


⚠️

Ограничения

⚠️ Не работает с reasoning: Когда просишь модель "think step by step" или используешь o1/o3, эффект минимален. Модели при рассуждении и так повторяют части промпта в своих мыслях. Повторение входа ничего не добавляет.

⚠️ Удваивает входные токены: Если промпт 1000 токенов, с повторением будет 2000. Стоимость запроса растёт (но не стоимость ответа — длина генерации не меняется). Для коротких промптов не критично, для длинных (10К+ токенов) может бить по бюджету.

⚠️ Лимиты контекста: Очень длинные промпты (близкие к лимиту модели) невозможно повторить — не влезут в контекстное окно. В таких случаях повторяй только критичную часть (вопрос + инструкции), не весь контекст.

⚠️ Задержка на Claude: Anthropic модели (Haiku, Sonnet) показали рост latency на очень длинных промптах (от удвоения 10К+ токенов) — prefill стадия затягивается. На коротких промптах эффекта нет.


🔍

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

Команда из Google Research взяла 7 моделей (Gemini 2.0 Flash и Lite, GPT-4o и 4o-mini, Claude 3 Haiku и 3.7 Sonnet, Deepseek V3) и прогнала через 7 бенчмарков — от школьных тестов (ARC, OpenBookQA) до математики (GSM8K, MATH) и своих кастомных задач.

Тестировали два режима: без reasoning (просто ответь) и с reasoning (think step by step). Для multiple choice запускали в двух вариантах: question-first (вопрос → опции) и options-first (опции → вопрос). Второй вариант жёстче — модель читает варианты не зная что искать.

Результаты удивили простотой и стабильностью: из 70 комбинаций модель+бенчмарк+режим получили 47 статистически значимых побед и 0 поражений. Особенно сильный эффект на кастомных задачах NameIndex (найди 25-е имя из 50) и MiddleMatch (найди элемент между двумя другими) — там точность росла с ~20% до ~97%.

Почему это работает: авторы объясняют через архитектуру attention. В каузальных LLM токен на позиции N "видит" только токены 1..N, не дальше. При повторении промпта токен из второй копии "видит" все токены первой копии + себя. По сути каждый токен промпта получает двустороннюю видимость — это близко к bidirectional attention, но без переобучения модели.

Инсайт для практики: исследователи заметили, что reasoning-модели (обученные через RL) сами научились повторять части промпта в своих рассуждениях. Prompt Repetition переносит эту работу на prefill стадию (параллелизуемую), убирая токены из generation стадии (последовательной). Эффективность растёт без изменения качества.

Неожиданность: метод Padding (добавление точек "..." до той же длины что у повторения) не дал эффекта. Значит дело не в длине входа, а именно в повторении смысловых токенов.


📄

Оригинал из исследования

Базовые варианты из статьи:

Baseline:


Prompt Repetition:



Prompt Repetition (Verbose):


Let me repeat that:

Prompt Repetition ×3:


Let me repeat that:

Let me repeat that one more time:

Контекст: Исследователи тестировали все 4 варианта на одинаковых данных. Verbose и ×3 иногда давали чуть лучший результат чем базовое повторение, особенно на задачах с длинными списками. Но разница небольшая — базовое работает отлично в 90% случаев.


💡

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

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

Если задача требует генерации + проверки (например, написать текст ровно 100 слов), повтори инструкцию после генерации:

Напиши пост для Telegram-канала про [тема]. Ровно 50 слов.

Напиши пост для Telegram-канала про [тема]. Ровно 50 слов.

---

Ответ:

{сюда модель сгенерирует текст}

---

Проверь: написано ровно 50 слов? Если нет — перепиши.

Двойной промпт даёт точную генерацию, инструкция проверки — самокоррекцию.


🔧 Техника: повторять только критичную часть → экономия токенов

Если у тебя промпт 5000 токенов (длинный прайс-лист + вопрос), повторяй только вопрос:

[ДЛИННЫЙ ПРАЙС-ЛИСТ — 4500 токенов]

Найди позицию "Ноутбук ASUS ROG" и назови цену.

Найди позицию "Ноутбук ASUS ROG" и назови цену.

Вместо 10000 токенов (полное повторение) получаешь ~5100. Эффект сохраняется — модель дважды "видит" инструкцию, контекст остаётся в памяти.


💡 Адаптация для классификации с примерами (few-shot):

При few-shot (даёшь примеры правильных ответов) повторяй весь блок — примеры + задачу:

Примеры tone of voice бренда:

[Пример 1: текст → оценка]
[Пример 2: текст → оценка]
[Пример 3: текст → оценка]

Оцени новый текст: [текст]

---

Примеры tone of voice бренда:

[Пример 1: текст → оценка]
[Пример 2: текст → оценка]
[Пример 3: текст → оценка]

Оцени новый текст: [текст]

Модель лучше усваивает паттерн из примеров при повторении. Особенно полезно если примеры идут ДО задачи — при однократном чтении модель может "забыть" первые примеры к моменту генерации ответа.


🔗

Ресурсы

Prompt Repetition Improves Non-Reasoning LLMs — Yaniv Leviathan, Matan Kalman, Yossi Matias (Google Research), февраль 2025

Связанные работы: - Chain-of-Thought Prompting (Wei et al., 2023) — техника "думай по шагам" - Re-Reading Improves Reasoning (Xu et al., 2024) — исследование про пользу повторного чтения вопроса - Repetition Improves Language Model Embeddings (Springer et al., 2024) — повторение улучшает эмбеддинги


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

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

Ctrl+C, Ctrl+V своего промпта — и модель работает точнее. Звучит абсурдно, но это работает. Метод Prompt Repetition позволяет повысить точность в задачах где порядок информации критичен: поиск элемента в длинном списке, извлечение данных из переписки, выбор из вариантов. LLM читает текст слева направо без возврата. Если варианты ответа идут ДО вопроса — модель обрабатывает их вслепую, без контекста. Повторение промпта даёт второй проход по всей информации: 47 побед из 70 тестов, 0 поражений.

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

LLM как студент который читает билет на экзамене — каузальная модель, видит только то что уже прочитал. Первая копия промпта прочитана линейно. Вторая копия — с накопленным контекстом из первой. Теперь модель понимает связи между всеми частями: вопрос видит опции, опции видят вопрос. Порядок токенов больше не проблема.

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

Когда варианты ответа идут ДО вопроса в структуре промпта, модель обрабатывает опции вслепую — без понимания что от неё хотят. Отсюда случайные ошибки в задачах типа "найди 15-й элемент в списке". Повторение выравнивает доступ к контексту: каждый токен "видит" всю информацию дважды. В тесте NameIndex (поиск имени в списке из 50 элементов) точность выросла с 21% до 97% при тройном повторении. При этом длина ответа не меняется — модель генерирует столько же токенов, просто точнее.

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

Анализ документов → конкретно для поиска информации в длинных списках, переписках, логах — особенно когда критичен порядок элементов или структура промпта ставит вопрос ПОСЛЕ контекста. Работает на любых моделях без reasoning (Gemini, GPT-4, Claude, Deepseek). НЕ подходит для задач с явным рассуждением (o1/o3, "think step by step") — модели и так повторяют части промпта в своих мыслях.

Мини-рецепт

1. Бери свой промпт как есть: инструкция + контекст + вопрос
2. Ctrl+C, Ctrl+V: скопируй промпт целиком и вставь ниже
3. Опционально добавь границу: между копиями напиши Let me repeat that: — иногда даёт чуть лучший результат
4. Для длинных промптов: повторяй только критичную часть (вопрос + инструкции), не весь контекст — экономит токены

Примеры

[ПЛОХО] : Вот список из 50 имён клиентов. Вопрос: кто на 37-й позиции? — модель обработала список вслепую, не зная что искать позицию
[ХОРОШО] : Вот список из 50 имён клиентов. Вопрос: кто на 37-й позиции? Let me repeat that: Вот список из 50 имён клиентов. Вопрос: кто на 37-й позиции? — второй проход с пониманием задачи, точность выше
Источник: Prompt Repetition Improves Non-Reasoning LLMs
ArXiv ID: 2512.14982 | Сгенерировано: 2026-01-10 00:05

Проблемы LLM

ПроблемаСутьКак обойти
Варианты ДО вопроса обрабатываются вслепуюМодель читает слева направо. Не может вернуться. Если варианты ответа идут ПЕРЕД вопросом — модель читает их не понимая зачем. Контекст задачи приходит поздно. Ошибки растут в задачах: выбор из списка, поиск в длинном тексте, извлечение по условиюСпособ 1: продублируй промпт целиком — отправь <промпт><промпт>. Способ 2: перестрой порядок — сначала вопрос и инструкция, потом варианты и данные. Модель поймёт ЗАЧЕМ читает информацию

Методы

МетодСуть
Повторение промпта — второй проход по контекстуСкопируй промпт дважды. Вместо <промпт> отправь <промпт><промпт>. Модель читает всё дважды. Первый проход — линейно. Второй — с накопленным контекстом. Почему работает: LLM каузальная — токен видит только предыдущие, не будущие. Повторение даёт второй шанс связать части. Вопрос понимает опции. Опции понимают вопрос. Синтаксис: {промпт}\n{промпт} или с границей {промпт}\n\nLet me repeat that:\n\n{промпт}. Для сложных задач (длинные списки) пробуй ×3. Когда ДА: поиск в списках, выбор из вариантов, длинный контекст с условием. Когда НЕТ: reasoning-модели (o1, o3) — они сами повторяют в мыслях; очень длинные промпты (не влезут в лимит); жёсткий бюджет токенов (вход удваивается). Бонус: длина ответа не растёт
📖 Простыми словами

Prompt Repetition: удвоение промпта для лучшей точности без reasoning

arXiv: 2512.14982

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

Это как если бы тебе дали прочитать 50-страничный контракт, а только после того, как ты закрыл последнюю страницу, спросили: «Кстати, а какой там был шрифт в третьем пункте?». Ты вроде все видел, но мозг не зафиксировал детали, потому что не знал цель чтения. Метод Prompt Repetition решает эту проблему максимально тупо и гениально: он просто заставляет модель прочитать инструкцию дважды, чтобы во второй раз она уже точно знала, что искать.

Технически это выглядит как обычный копипаст: вместо того чтобы отправить один запрос, ты отправляешь дубликат промпта один за другим. Работает это на любых моделях — от GPT-4 до Deepseek. Например, если тебе нужно выудить из переписки на 30 сообщений конкретный факт про возврат товара, ты просто вставляешь свою задачу в начало и в конец контекста. Первый промпт работает как «предупреждение», а второй — как финальный пинок, который заставляет модель сфокусироваться на нужном результате.

Хотя метод тестировали на простых задачах, где не нужно строить сложные логические цепочки, принцип универсален. Это спасение для всех, кто работает с длинным контекстом, анализирует юридические документы или чистит логи. Если модель начинает тупить и выдавать случайные ошибки на ровном месте, не надо переписывать промпт — просто продублируй его. Это самый дешевый и быстрый способ поднять точность, не тратя время на сложные инженерные ухищрения.

Короче, если нейронка лажает, просто повтори ей дважды, как ребенку. Prompt Repetition доказывает, что иногда тупой повтор работает лучше, чем попытки «научить» модель думать. Хватит надеяться, что AI поймет тебя с первого раза в огромном массиве данных — дублируй запрос, и точность вырастет сама собой. Это не магия, а просто способ заставить алгоритм наконец-то сфокусироваться на главном.

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

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

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