3,583 papers
arXiv:2608.27266 79 27 авг. 2026 г. FREE

NPO: улучшение промпта через цикл "прогон → фидбек → переписывание", без генерации десятков вариантов

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

TL;DR

NPO — это способ улучшать промпт, который просто раз за разом прогоняет его, собирает реальные результаты (что получилось, что нет) и отдаёт всё это сильной модели с просьбой переписать промпт. Никакого дерева вариантов, никакого отбора "лучшего из десяти" — один промпт, который на каждом шаге правится с учётом свежих ошибок.

Все современные системы автооптимизации промптов усложняют себе жизнь: генерируют пул кандидатов, сравнивают их между собой, отбирают лучших через сложные алгоритмы — как будто чем изощрённее перебор, тем лучше результат. Но если "редактор" промпта (модель, которая его переписывает) достаточно умная, вся эта сложность оказывается лишней тратой: разница между "простым переписыванием" и "сложным перебором вариантов" почти исчезает, а иногда простой способ даже выигрывает.

Метод работает в три шага: прогнать текущий промпт на пачке примеров → собрать результаты и оценки за последние несколько попыток (окно) → отдать всё сильной модели с просьбой переписать промпт, учитывая эти провалы и удачи. Повторить несколько раз.

🔬

Схема метода

ШАГ 1: Прогнать текущий промпт на N примерах задачи → собрать ответы + оценку (сработало/не сработало)
ШАГ 2: Взять окно из последних W таких прогонов (промпт + результаты + оценки) → 
        показать сильной модели-редактору → она переписывает промпт целиком
ШАГ 3: Повторить с новым промптом Y раз, каждый раз сдвигая окно вперёд

Все шаги выполняются как отдельные обращения к модели (нужно несколько запросов, не один).


🚀

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

Задача: У вас Telegram-бот поддержки для интернет-магазина (условно как у продавца на Ozon), который отвечает клиентам по правилам возврата и доставки. Бот иногда путается: то забывает про исключения для акционных товаров, то неправильно называет сроки.

Промпт:

Ты — эксперт по промпт-инжинирингу. Твоя задача — улучшить системный промпт для чат-бота поддержки.

Текущий промпт бота:
---
{текущий_промпт_бота}
---

Вот 6 реальных диалогов за последнюю неделю, где бот ошибся или сработал хорошо:

Диалог 1:
Клиент: {вопрос_1}
Ответ бота: {ответ_1}
Что не так: {ошибка_1}

Диалог 2:
Клиент: {вопрос_2}
Ответ бота: {ответ_2}
Что не так: {ошибка_2}

... (остальные диалоги)

Перепиши промпт так, чтобы устранить повторяющиеся ошибки. Не убирай рабочие инструкции без причины. Выдай полную новую версию промпта.

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


🧠

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

Промпт, написанный "на глаз", не учитывает реальные пограничные случаи — автор просто не может предугадать все ситуации, где модель споткнётся. Сложные алгоритмы перебора вариантов пытаются решить это генерацией множества версий и отбором лучшей, но если модель-редактор сама по себе сильная, все её варианты получаются примерно одного уровня — перебор не добавляет пользы.

Сильная модель, глядя на конкретные провалы (реальные диалоги, а не абстрактное "плохо работает"), точно видит причину ошибки и правит инструкцию прицельно — как хороший редактор с комментариями на полях, а не как человек, гадающий вслепую.

Рычаги управления: - Размер окна (сколько последних попыток показываем модели) — больше окно = больше контекста для правки, но упирается в лимит контекста модели - Количество примеров за раз — больше примеров даёт стабильнее сигнал, но дороже по токенам - Сила модели-редактора — чем умнее модель, тем меньше нужно итераций для того же результата - Явная оценка каждого примера (не просто "ошибка", а "1-10, почему") — помогает редактору точнее понимать, что менять


📋

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

Ты — опытный промпт-инженер. Твоя задача — улучшить промпт на основе реальных результатов его работы.

Текущий промпт:
---
{текущий_промпт}
---

Вот результаты последних {число} попыток использования этого промпта:

Попытка 1:
Вход: {вход_1}
Ответ модели: {ответ_1}
Оценка: {что_сработало_или_не_сработало_1}

Попытка 2:
Вход: {вход_2}
Ответ модели: {ответ_2}
Оценка: {что_сработало_или_не_сработало_2}

(добавь остальные попытки по этому же шаблону)

Перепиши промпт так, чтобы:
1. Устранить повторяющиеся ошибки
2. Сохранить то, что уже работает хорошо
Выдай полную новую версию промпта.

Подставляй: {текущий_промпт} — версия, которую хочешь улучшить; {вход_N} и {ответ_N} — реальные примеры использования; {что_сработало_или_не_сработало_N} — твоя оценка (можно словами, можно баллом).

🚀 Быстрый старт — вставь в чат:

Вот шаблон итеративной оптимизации промпта. Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит, какой у тебя текущий промпт и есть ли примеры его реальной работы — потому что без конкретных провалов и удач метод не имеет материала для правки, а без этого он превращается в гадание "на глаз", то есть в то, от чего метод и должен избавить.


⚠️

Ограничения

⚠️ Нужны проверяемые примеры провалов: метод требует реальных прогонов промпта с оценкой результата. Если у тебя нет ни одного диалога/ответа, где промпт сработал не так — метод не с чем работать.

⚠️ Слабее для полностью субъективных задач: там где нет чёткого критерия "правильно/неправильно" (творческий текст, стиль, вкус) — эффект от такой правки менее предсказуем, чем на задачах с ясным правилом.

⚠️ Не заменяет глубокое дообучение для сложных многошаговых задач: в задачах, где модели нужно "выучить" долгую стратегию (например, сложная многоходовая игра или процесс с долгой памятью), дообучение самой модели иногда даёт больше, чем любая правка инструкции.


🔍

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

Исследователи сравнили простую линейную правку промпта (NPO) со сложным методом GEPA (который держит целое дерево вариантов промпта и отбирает лучшие через сложный алгоритм) и с дообучением весов модели через RL (GRPO). Тестировали на задачах на соблюдение инструкций, многошаговых вопросах-ответах и 22 стратегических играх. Чтобы сравнение было честным, все методы прогоняли на одинаковых сгенерированных случайных задачах — не разных, а идентичных — и жёстко следили, чтобы ошибки формата ответа не портили сравнение.

Главный сюрприз: простой метод с сильным "редактором" (GPT-5.5) обгонял сложный алгоритм перебора, используя меньше попыток — и разрыв рос вместе с силой редактора. При этом сложный метод почти не выигрывал от более сильного редактора — как будто вся его сложность съедала преимущество умной модели. В стратегических играх картина смешанная: там, где нужна долгая память и адаптация поведения, дообучение весов модели иногда обгоняло любую правку промпта. Отдельно проверили перенос: промпт, доведённый до ума на маленькой модели, почти без потерь работал и на других моделях, даже из другого семейства — то есть один раз улучшенный промпт можно переиспользовать.


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

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

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

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

Три шага, никакого выбора между вариантами: прогон — гоняем текущий промпт на пачке примеров, собираем что сработало и что нет. Окно — берём последние несколько таких прогонов с оценками. Правка — отдаём всё сильной модели, она переписывает промпт целиком с учётом свежих ошибок. Никакого сравнения кандидатов — один промпт чинится по факту, а не угадывается.

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

Промпт, написанный на глаз, не учитывает все пограничные случаи. Автор просто не видел, где модель споткнётся. Сложные алгоритмы перебора пытаются угадать удачную формулировку через десятки попыток. Но если редактор сильный, все его варианты получаются примерно одного уровня — перебор не добавляет пользы. Сильная модель, глядя на конкретный провал, точно видит причину и правит инструкцию прицельно — как редактор с комментариями на полях, а не гадание вслепую.

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

Промпт-инжиниринг для продуктовых ботов и агентов → конкретно для задач с четким критерием правильно/неправильно, особенно когда под рукой реальные логи с провалами. Не подходит для чисто творческих задач — стиль, вкус, где нет однозначного критерия успеха.

Мини-рецепт

1. Собери провалы: возьми 5-10 реальных прогонов промпта с оценкой — сработало или нет.
2. Покажи редактору: отдай сильной модели текущий промпт плюс окно этих прогонов.
3. Перепиши целиком: попроси переписать промпт полностью, не трогая рабочие части без причины.
4. Повтори цикл: через несколько дней собери новую пачку примеров и прогони снова, сдвигая окно вперёд.

Примеры

[ПЛОХО] : Сгенерируй 10 вариантов промпта для бота поддержки и выбери лучший из них
[ХОРОШО] : Вот текущий промпт бота и 6 диалогов за неделю, где он ошибся (текст диалога + что не так). Перепиши промпт, устранив эти ошибки, сохранив рабочие инструкции
Источник: NaivePromptOptimization: Rethinking the Need for Complex Prompt Search
ArXiv ID: 2608.27266 | Сгенерировано: 2026-08-28 05:24

Методы

МетодСуть
Правка промпта по реальным провалам — без перебора вариантовПрогони промпт на пачке примеров, собери что сработало и что нет. Отдай сильной модели последние несколько таких прогонов (промпт + результаты + оценки) и попроси переписать промпт целиком. Повтори цикл несколько раз, сдвигая окно примеров вперёд. текущий_промпт + N попыток (вход, ответ, оценка) новая версия промпта. Почему работает: сильная модель видит конкретную причину ошибки на реальном примере и правит прицельно, а не гадает. Работает: есть проверяемый критерий правильности (чат-боты, классификация, извлечение данных). Не работает: нет ни одного примера провала промпта, задача полностью субъективна (стиль, творчество), или нужна долгая многошаговая стратегия — там дообучение самой модели эффективнее правки инструкции

Тезисы

ТезисКомментарий
Сила модели-редактора важнее сложности алгоритма перебора вариантовКогда модель, которая переписывает промпт, сама достаточно умная — все её варианты получаются примерно одного уровня качества. Генерация десяти кандидатов и выбор "лучшего" не добавляет пользы, если один хороший результат почти совпадает с любым другим. Применяй: не трать ресурсы на генерацию пула вариантов промпта — один прогон с сильной моделью-редактором даёт близкий результат за меньшую цену
📖 Простыми словами

NaivePromptOptimization: Rethinking the Need for ComplexPromptSearch

arXiv: 2608.27266

Промпт-инжиниринг погряз в усложнении: исследователи строят дикие деревья поиска вариантов, генерируют по сотне версий и жгут бюджеты. Метод Naive Prompt Optimization (NPO) доказывает, что всё это — наукообразная мишура. Модели не нужен сложный перебор, если она и так достаточно умная. Достаточно показать ей конкретные косяки на реальных данных и попросить исправиться.

Это как учиться водить машину с нормальным инструктором вместо того, чтобы клонировать себя на двадцать параллельных вселенных и смотреть, кто из двадцати не разобьётся. Инструктор просто говорит: «ты срезал угол вот здесь, в следующий раз поверни руль плавнее». Один водитель, одна итерация за раз, чёткая работа над ошибками.

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

Авторы тестировали подход на ботах техподдержки, но принцип универсален. Это работает для любых RAG-систем, классификаторов и многосоставных инструкций, где человек физически не способен предугадать все косяки заранее. Вместо бесконечного ручного перебора ты натравливаешь сильную модель на её же ошибки.

Короче: хватит городить громоздкие пайплайны и платить за мифическую оптимизацию. Один промпт плюс честный фидбек по ошибкам дают топовый результат в разы быстрее и дешевле. Скорми модели её собственные провалы — и она сама напишет идеальную инструкцию под задачу.

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

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

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