3,583 papers
arXiv:2610.12601 80 8 окт. 2026 г. FREE

Reflective Prompt Optimization (GEPA): автодоработка промпта агента через разбор ошибок по отдельным критериям

КЛЮЧЕВАЯ СУТЬ
Если дать модели-оптимизатору одну оценку вроде «0,6 из 1», она портит промпт: на обучающих примерах лучше, на новых темах хуже исходного. Метод GEPA позволяет улучшать системный промпт агента по данным, а не на глаз, и выигрыш переносится на темы, которых оптимизатор не видел. Одна модель (рефлектор) читает полную запись работы агента: рассуждения, вызовы инструментов, ответы. Потом пишет диагноз и переписывает один блок промпта. Фишка: не показывай рефлектору общий балл, покажи оценку по каждому критерию с причиной. Он видит «источник подтверждает цифру: нет» и выводит общее правило вместо подгонки под примеры.
Адаптировать под запрос
⚡

TL;DR

GEPA — это способ, при котором одна модель (рефлектор) читает полную запись работы агента: рассуждения, вызовы инструментов, ответы. Затем она пишет диагноз, почему агент ошибся, и переписывает системный промпт. За раз меняется один компонент. Лучшие версии промпта хранятся «на фронте»: кандидат остаётся в игре, если он сильнее других хотя бы по одному набору заданий. Так поиск не застревает на одной правке.

Главная находка: оценка должна быть разложена по критериям, а не сведена к одной цифре. Если рефлектор видит только «0,6 из 1», ему нечего диагностировать. Он либо ничего не улучшает, либо подгоняет промпт под обучающие примеры, и на новых темах результат становится хуже исходного. Если же он видит «ссылка работает — да, источник по теме — да, источник подтверждает цифру — нет», он находит общие правила вроде «сверяй цифру с текстом источника». Такие правила переносятся на темы, которых оптимизатор не видел.

Ещё два вывода. Почти половина лучшего промпта оказалась выученным ответником: туда скопировали конкретные факты из обучающих вопросов. Но он не дал ни одного балла, даже на тех самых вопросах. Это просто мусор в промпте. А чем длиннее становились версии, тем хуже они работали, и отбор их отбросил.

🔬

Схема метода

ШАГ 1: Прогнать агента на малой выборке (20–30 заданий) → записи работы (трассы)
ШАГ 2: Оценить каждый ответ ПО КРИТЕРИЯМ отдельно → текстовый разбор по каждому критерию
ШАГ 3: Рефлектор читает промпт + трассы + разбор → диагноз + новая версия ОДНОГО компонента
ШАГ 4: Проверить кандидата на отдельной валидационной выборке → оставить лучших
ШАГ 5: Повторить; финал — тест на ДРУГИХ темах, несколько прогонов

Шаги 1–4 в исследовании автоматизированы кодом. Их логику можно повторить вручную в нескольких чатах (см. шаблон).

🚀

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

Задача: Вы делаете ИИ-агента для отдела продаж B2B. Он готовит справки о компаниях-клиентах перед звонком: выручка, руководство, новости, судебные дела. Каждая цифра должна быть со ссылкой на источник. Агент то даёт ссылки «в тему, но цифры там другие», то выдаёт номера, которые не соответствуют списку источников. Вы хотите улучшить его системный промпт не на глаз, а по данным.

Промпт (для чата с сильной моделью, роль «рефлектор»):

Ты — рефлектор: улучшаешь системный промпт агента, который готовит справки о компаниях со ссылками.


{текущий системный промпт агента}



Задание 1: Справка по ООО «Ромашка-Логистика» (ИНН ...)
Запись работы агента: {поиск, найденные страницы, итоговая справка}
Разбор по критериям:
- ссылка_открывается: 4 из 5 — две ссылки ведут на несуществующие страницы
- источник_по_теме: 5 из 5
- источник_подтверждает_факт: 2 из 5 — выручка 1,2 млрд указана, на странице источника 840 млн
- нумерация: 5 из 5

Задание 2: ...


Правила:
1. Найди КРИТЕРИЙ с самым низким баллом и объясни по записям, какое поведение агента его роняет.
2. Предложи ОБЩЕЕ правило поведения. Не копируй в промпт конкретные факты, названия компаний и цифры из заданий.
3. Измени только один блок промпта: «стратегия поиска» ИЛИ «оформление отчёта».
4. Не увеличивай промпт больше чем на 100 слов. Если можно удалить лишнее — удали.
Выведи: диагноз → изменённый блок → что ожидаешь улучшить.

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

🧠

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

Слабость LLM-оптимизатора: если он видит только одну итоговую цифру, он не знает, что именно сломано. У него два пути: гадать или подогнать промпт под конкретные примеры (дописать туда ответы). Во втором случае прирост на обучающих заданиях есть, а на новых тем его нет. Такой же результат у скалярной оценки был в исследовании: перенос ушёл в минус.

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

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

Рычаги управления: - Число критериев → больше критериев даёт точнее диагноз, но требует больше проверок. Критерии должны быть независимыми. - «Не копируй факты из заданий» → убирает выученные ответники из промпта и экономит слова. - Лимит прироста длины → защищает от раздувания; в исследовании длинные версии стабильно проигрывали. - Один компонент за шаг → легче понять, какая правка помогла. - Разные темы в проверке → показывает, переносится ли выигрыш или это подгонка.

📋

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

Ты — рефлектор. Улучшаешь системный промпт агента по записям его работы.

Диагност промптов: ищешь общие причины ошибок, не подгоняешь под отдельные примеры.

{что делает агент}


{блок A: название}: {текст}
{блок B: название}: {текст}



{критерий_1}: {что проверяем}
{критерий_2}: {что проверяем}
{критерий_3}: {что проверяем}



Задание {номер}: {формулировка}
Запись работы: {что делал агент и что выдал}
Разбор по критериям:
- {критерий_1}: {балл} — {причина}
- {критерий_2}: {балл} — {причина}
- {критерий_3}: {балл} — {причина}



1. Найди критерий с самым низким баллом.
2. По записям определи, какое поведение агента его роняет.
3. Сформулируй ОБЩЕЕ правило. Не вставляй конкретные факты, имена и цифры из заданий.
4. Выбери ОДИН блок промпта и перепиши только его.
5. Проверь длину: прирост не больше {лимит_слов} слов; лишнее удали.


Диагноз → изменённый блок целиком → какой критерий должен вырасти.

Что подставлять: - {критерий_N} — 3–5 независимых критериев качества вашей задачи, по которым можно поставить балл. - Traces — 3–6 заданий с реальным выводом агента и разбором по критериям. Разбор можно делать вручную или отдельным чатом-судьёй. - {лимит_слов} — 50–150.

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

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

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

LLM спросит, что делает агент, какие критерии качества важны и какие ошибки вы уже видели. Критерии нужны, потому что весь метод держится на разложенной обратной связи. По ним модель составит и шаблон оценки, и мета-промпт для доработки.

⚠️

Ограничения

⚠️ Одна цифра вместо критериев: если свести оценку к одному баллу, метод вредит. Перенос на новые темы уходит в минус, при этом на обучающих заданиях прирост может выглядеть хорошо.

⚠️ Выученный ответник: рефлектор склонен копировать в промпт конкретные факты из примеров. Это не даёт прироста и раздувает промпт. Нужен запрет в мета-промпте и проверка промпта глазами.

⚠️ Раздувание: версии, где промпт продолжали наращивать, стали хуже. Без лимита длины метод портит промпт.

⚠️ Шумная проверка: на малой выборке в 24 задания качество колеблется. Разрыв между «на валидации» и «на новых темах» сильно прыгает от прогона к прогону. Одному прогону верить нельзя, нужны несколько и тест на других темах.

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

⚠️ Прирост неравномерный: выигрыш получился чистым, но не повсеместным: часть заданий стала хуже. Прогоны сильно различались по величине эффекта.

⚠️ Инженерная часть: сам цикл GEPA в исследовании запущен кодом на сотнях прогонов. В чатах вручную можно повторить принцип, но не масштаб.

🔍

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

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

Главный ход — разделение данных по темам. 24 задания на обучение и 24 на валидацию, по 12 тем в каждом, и 500 заданий на 254 других темах для финального теста. Ни одна тема не встречается дважды. Поэтому любое запоминание ответов не может помочь на тесте. Результат на тесте вырос с 0,702 до 0,781 (доверительный интервал [0,051; 0,107]) и повторился на трёх прогонах со средним приростом 0,107.

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

Затем меняли тип обратной связи при одинаковом всём остальном: грубая шкала, тройная оценка с усреднением, единая цифра вместо разбора по критериям. Только последний вариант сломал перенос: вместо +0,075 получилось −0,021. Более частые или точные оценки ничего не добавили. Взломы оценки (рост на валидации без роста на тесте) совпали со слабейшими судьями. Авторы также отмечают, что ручная версия найденного рецепта в основном воспроизводит выигрыш.

💡

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

💡 Адаптация контекста: ручная проверка своего системного промпта без GEPA. Если нет возможности запускать цикл, можно взять 5–10 реальных ответов вашего кастомного GPT и оценить их по 3–4 критериям с причинами. Затем отдать это чату по шаблону выше. Одна итерация вручную уже даёт общее правило для промпта.

🔧 Техника: чек-лист утечек → чистый промпт. После любой автодоработки промпта добавьте шаг:

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

Это закрывает риск «выученного ответника» из статьи.

🔧 Техника: проверка на других темах. Перед тем как принять новый промпт, прогоните его не на тех заданиях, которые вы показывали рефлектору, а на отложенных из другой области. Если прирост только на «знакомых» заданиях — это подгонка.

🔗

Ресурсы

  • Reflective Prompt Optimization of a Deep-Research Agent: A Topic-Disjoint, Multi-Seed Protocol for Measuring Transferable Gains and Prompt-Level Overfitting — Elias Lumer, Sahil Sen, Vamse Kumar Subbiah, Kevin Paul. Авторы публикуют кандидатов-промптов, разницы между версиями, таблицы и анализ.
  • GEPA (Agrawal et al., 2025) — оптимизатор, использованный в работе; открытая реализация GEPA-AI.
  • DSPy и MIPROv2 — смежные подходы к автооптимизации промптов.
  • Decagon (2026) — рекомендации по сильному рефлектору, выборке 20–100 примеров и раздуванию промптов.
  • Onweller et al. (2026) — работа о «присутствующих, но не подтверждающих» цитатах в исследовательских агентах.

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

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

Если дать модели-оптимизатору одну оценку вроде «0,6 из 1», она портит промпт: на обучающих примерах лучше, на новых темах хуже исходного. Метод GEPA позволяет улучшать системный промпт агента по данным, а не на глаз, и выигрыш переносится на темы, которых оптимизатор не видел. Одна модель (рефлектор) читает полную запись работы агента: рассуждения, вызовы инструментов, ответы. Потом пишет диагноз и переписывает один блок промпта. Фишка: не показывай рефлектору общий балл, покажи оценку по каждому критерию с причиной. Он видит «источник подтверждает цифру: нет» и выводит общее правило вместо подгонки под примеры.

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

Процесс по кругу: прогнал агента на 20-30 заданиях, получил записи работы. Оценил каждый ответ отдельно по критериям, с текстовой причиной. Рефлектор прочитал промпт, записи и разбор, выдал диагноз и новую версию ОДНОГО блока. Проверил кандидата на отдельной выборке и оставил лучших. Лучшие версии хранятся «на фронте»: кандидат остаётся в игре, если он сильнее других хотя бы на одном наборе заданий. Поэтому поиск не застревает на одной правке. Это как врач с анализами по каждому показателю, а не с надписью «самочувствие 6 из 10». Рефлектор лечит конкретный провалившийся критерий, а не гадает, что не так. Финальная проверка идёт на ДРУГИХ темах и в нескольких прогонах.

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

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

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

Агенты и длинные системные промпты → конкретно для задач, где качество раскладывается на 3-5 независимых проверок (ссылка открывается, источник по теме, источник подтверждает факт), особенно когда правишь промпт наугад и не знаешь, помогла ли правка. НЕ подходит, если качество можно выразить только одной общей оценкой. Тогда метод вредит. Не подходит и для ситуации, когда проверить результат можно лишь на одном-двух примерах: на 24 заданиях результат сильно шумит.

Мини-рецепт

1. Выбери критерии: 3-5 независимых проверок качества. Например: ссылка открывается, источник по теме, источник подтверждает факт.
2. Прогони агента: 3-6 заданий, сохрани полный вывод и ход работы.
3. Оцени по каждому критерию отдельно: балл плюс причина. Можно вручную или отдельным чатом-судьёй.
4. Позови рефлектора: сильная модель получает промпт, записи и разбор. Пусть найдёт критерий с самым низким баллом.
5. Запрети копировать факты: в задании рефлектору напиши прямо: никаких названий, цифр и ответов из примеров, только общие правила.
6. Одна правка за раз: меняй один блок промпта и ограничь прирост, например 100 словами. Если можно удалить лишнее, пусть удаляет.
7. Проверь на других заданиях: сравни новую версию с прежней, не на тех примерах, по которым правил. Хороший тест: компании из других отраслей.
8. Повтори несколько раз: одному прогону не верь, результат сильно скачет.
9. Прочитай промпт глазами: если там завелись конкретные факты из заданий, вычисти их.

Примеры

[ПЛОХО]: `Вот промпт агента и его средняя оценка 0,6. Улучши промпт, чтобы оценка выросла.` [ХОРОШО]: `Ты — рефлектор. Улучшаешь системный промпт агента, который готовит справки о компаниях со ссылками. Вот промпт: {текущий промпт}. Вот записи работы и разбор по критериям. Задание 1: ссылка_открывается 4 из 5 (две ссылки ведут на несуществующие страницы); источник_по_теме 5 из 5; источник_подтверждает_факт 2 из 5 (выручка 1,2 млрд, на странице источника 840 млн). Найди критерий с самым низким баллом и объясни по записям, какое поведение агента его роняет. Предложи ОБЩЕЕ правило, не копируй в промпт названия компаний и цифры. Измени только один блок: стратегию поиска ИЛИ оформление отчёта. Прирост не больше 100 слов. Выведи: диагноз, изменённый блок, что ожидаешь улучшить.` [ПЛОХО]: `Добавь в промпт, что выручка ООО «Ромашка-Логистика» равна 840 млн.` [ХОРОШО]: `Перед включением цифры в справку сверь её с текстом страницы источника. Если цифры расходятся, укажи цифру из источника или убери утверждение.`
Источник: Reflective Prompt Optimization of a Deep-Research Agent: A Topic-Disjoint, Multi-Seed Protocol for Measuring Transferable Gains and Prompt-Level Overfitting
ArXiv ID: 2610.12601 | Сгенерировано: 2026-10-12 05:20

Проблемы LLM

ПроблемаСутьКак обойти
Модель-редактор не может улучшить промпт по одной общей оценкеПросишь модель улучшить промпт и даёшь только итоговый балл, например «0,6 из 1». Она не знает, что именно сломано. Она либо гадает, либо подгоняет промпт под примеры. На этих примерах качество растёт, на новых темах падает ниже исходного. Выглядит как успех, но это ловушкаРазбей оценку на 3–5 независимых критериев. К каждому низкому баллу добавь причину одной фразой. Например: «источник подтверждает факт: 2 из 5 — в тексте другая цифра». Просить исправить надо самый слабый критерий
При доработке модель вписывает в промпт конкретные факты из примеровДаёшь модели примеры ошибок. Она копирует в промпт имена, цифры, готовые ответы из этих примеров. Промпт распухает. Качество не растёт, даже на тех самых примерах. Это мусор, который занимает местоЗапрети прямо: «Не копируй в промпт факты, имена и цифры из примеров. Пиши только общие правила поведения». Потом просмотри новый промпт глазами и вычеркни всё, что привязано к примерам

Методы

МетодСуть
Доработка промпта по разбору ошибок — по одному блоку за шагЗапусти агента или промпт на 20–30 заданиях. Сохрани записи работы: рассуждения, вызовы инструментов, ответы. Оцени каждый ответ по критериям отдельно, с причиной. Дай сильной модели текущий промпт, записи и разбор. Правила для неё: 1. Найди критерий с самым низким баллом. 2. Объясни по записям, какое поведение его роняет. 3. Предложи ОБЩЕЕ правило без фактов из заданий. 4. Перепиши ОДИН блок промпта. 5. Прирост длины не больше 100 слов, лишнее удали. Новую версию прогони на отдельных заданиях, которых не было в разборе. Оставь её, только если стало лучше. Повторяй. В конце проверь на других темах и сделай несколько прогонов. Почему работает: модель хорошо читает длинную запись и пишет внятный диагноз. Ей нужна чёткая мишень, и ею служит слабый критерий. Один блок за шаг показывает, какая правка помогла. Лимит длины не даёт промпту раздуваться: чем длиннее версии, тем они хуже. Отдельная выборка отсекает подгонку. Когда применять: у задачи есть несколько независимых критериев качества и можно собрать 20+ примеров. Когда не работает: критерии не разделить, или есть только общее впечатление «хорошо/плохо». Не работает и при одном прогоне на малой выборке: на 24 заданиях результат сильно шумит. Нужны несколько прогонов
📖 Простыми словами

ReflectivePromptOptimization of a Deep-ResearchAgent: A Topic-Disjoint, Multi-Seed Protocol for Measuring Transferable Gains andPrompt-Level Overfitting

arXiv: 2610.12601

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

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

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

Тестировали механику на сложных ресерч-агентах для B2B, которые путали выручку компаний со ссылками на судебные иски. Но принцип универсален. Тот же алгоритм оживит любого многошагового AI-агента — от автономных кодеров до сборщиков финотчётности. Везде, где обычная оптимизация уводит перенос навыков в глубокий минус, анализ логов вытаскивает систему на рабочий уровень.

Главный вывод: хватит скармливать оптимизаторам голые цифры метрик. Оценка без контекста гарантирует переобучение, и модель просто зазубрит твои примеры. Либо ты скармливаешь оптимизатору детальный лог факапов и правишь промпт пошагово, либо твой хвалёный агент продолжит уверенно галлюцинировать чушь прямо в отчётах.

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

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

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