Prompt Repetition: удвоение промпта для лучшей точности без reasoning
🧠 Контент предназначен специально для моего сообщества в телеграме @aiNovaSapiens
Prompt Repetition — техника, которая просто копирует твой промпт дважды подряд: вместо <QUERY> отправляешь <QUERY><QUERY>. Работает в обычном чате, на любых моделях (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 (добавление точек "..." до той же длины что у повторения) не дал эффекта. Значит дело не в длине входа, а именно в повторении смысловых токенов.
Оригинал из исследования
<QUERY>
<QUERY> <QUERY>
<QUERY> Let me repeat that: <QUERY>
<QUERY> Let me repeat that: <QUERY> Let me repeat that one more time: <QUERY>
Контекст: Исследователи тестировали все 4 варианта на одинаковых данных. Verbose и ×3 иногда давали чуть лучший результат чем базовое повторение, особенно на задачах с длинными списками. Но разница небольшая — базовое <QUERY><QUERY> работает отлично в 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) — повторение улучшает эмбеддинги
🧠 Контент предназначен специально для моего сообщества в телеграме @aiNovaSapiens