Аннотация

Большие языковые модели (LLMs) всё чаще адаптируются к downstream-задачам с помощью методов RL, таких как Group Relative Policy Optimization (GRPO), которые нередко требуют тысячи прогонов для освоения новых задач. Мы утверждаем, что интерпретируемая природа языка может предоставлять LLM куда более богатую обучающую среду по сравнению с policy gradient’ами, основанными на разреженных скалярных наградах.

Чтобы проверить эту гипотезу, мы представляем GEPA (Genetic-Pareto) — оптимизатор промптов, который системно использует natural language reflection для извлечения высокоуровневых правил из trial-and-error процесса. Для любой AI-системы, содержащей один или несколько промптов LLM, GEPA сэмплирует траектории на уровне системы (например, рассуждения, вызовы инструментов и их выводы) и анализирует их на естественном языке, чтобы диагностировать проблемы, предлагать и тестировать обновления промптов, а также объединять комплементарные инсайты с границы Парето собственных попыток.

Благодаря такому дизайну GEPA нередко превращает даже несколько прогонов в существенный прирост качества. На четырёх задачах GEPA в среднем превосходит GRPO на 10% и до 20% максимум, при этом используя до 35× меньше прогонов. GEPA также опережает ведущий оптимизатор промптов MIPROv2 более чем на 10% на двух LLM и демонстрирует обнадёживающие результаты как стратегия поиска на этапе инференса для задач оптимизации кода.

1. Введение

Рисунок 1. Сравнение динамики обучения нашего оптимизатора промптов GEPA с передовым (state-of-the-art) оптимизатором промптов MIPROv2 и алгоритмом GRPO (24 000 прогонов). По мере роста числа прогонов оптимизаторы промптов обучаются заметно быстрее, чем GRPO. GEPA существенно превосходит и GRPO, и MIPROv2 по итоговой метрике. Звёздочки на тестовом наборе показывают разрыв в качестве на отложенной выборке вопросов.

Большие языковые модели (LLM) позволили создавать агентов и системы, которые комбинируют нечеткие спецификации поведения на естественном языке с инструментами вроде retrieval и code execution. Такие системы поднимают вопрос о том, как именно следует «оптимизировать» LLM для достижения наилучшей downstream-производительности в рамках их окружения. Одним из популярных подходов к адаптации LLM к downstream-задачам является reinforcement learning with verifiable rewards (RLVR), включающий алгоритмы, такие как Group Relative Policy Optimization (GRPO) (Shao et al., 2024).Подобные RL-методы представляют метрики успешности в виде скалярного вознаграждения, наблюдаемого в конце каждого прогона (Lambert, 2025), и используют эти вознаграждения для оценки градиентов необходимых для улучшения политики.

Хотя такие RL-подходы эффективны, на практике им обычно требуются десятки тысяч прогонов, чтобы подстроиться под новые задачи. Например, недавние работы, использующие GRPO на различных задачах, часто берут до сотен тысяч прогонов для обучения (Chen et al., 2025b; Wu et al., 2025c; Zhang et al., 2025; Jin et al., 2025; Si et al., 2025; Wang et al., 2025a; Java et al., 2025; Chen et al., 2025a; Wu et al., 2025a; Sha et al., 2025; Lin et al., 2025; Peng et al., 2025; Song et al., 2025). Такая sample-inefficiency быстро превращается в серьёзное узкое место: многие downstream-приложения LLM вызывают дорогие инструменты, имеют ограничённый бюджет инференса на сэмплирование из самой LLM или просто не могут делать fine-tuning весов самых крупных или лучших по качеству моделей.

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

Чтобы операционализировать эту идею, мы представляем GEPA (Genetic-Pareto) — рефлексивный оптимизатор промптов для составных AI-систем, объединяющий текстовую рефлексию с многообъективным эволюционным поиском. GEPA итеративно модифицирует каждый промпт внутри AI-системы на основе обратной связи на естественном языке, полученной из новых прогонов. В каждой модификации кандидатный промпт наследуется от предшественника, аккумулируя высокоуровневые знания, извлечённые из наблюдений и фидбэка от LLM. Чтобы избежать локальных оптимумов, к которым приводят жадные обновления промптов, GEPA поддерживает фронт Парето: вместо эволюции только глобально лучшего промпта, он стохастически исследует топовые варианты для каждой задачи, тем самым диверсифицируя стратегии и способствуя более надёжной обобщающей способности.

Мы оцениваем GEPA на четырёх различных задачах — multi-hop reasoning (HotpotQA; Yang et al., 2018), instruction following (IFBench; Pyatkin et al., 2025b), privacy-aware delegation (PUPA; Li et al., 2025a) и retrieval-augmented verification (HoVer; Jiang et al., 2020) — с использованием как open-моделей (Qwen3 8B; Yang et al., 2025; Team 2025), так и проприетарных (GPT-4.1 mini; OpenAI, 2025). Наши результаты показывают, что GEPA демонстрирует устойчивую генерализацию и высокую эффективность сэмплирования: на Qwen3 8B GEPA превосходит GRPO (24 000 прогонов с LoRA) на величину до 19%, при этом требуя до 35 раз меньше прогонов. В целом, GEPA достигает среднего прироста +10% по сравнению с GRPO на всех задачах. Более того, GEPA опережает предыдущий state-of-the-art оптимизатор промптов MIPROv2 (Opsahl-Ong et al., 2024) на каждом бенчмарке и каждой модели, обеспечивая суммарный прирост в +14% — более чем вдвое превышая результат MIPROv2 (+7%).

Даже в качественном плане промпты, сгенерированные GEPA, могут быть крайне эффективными. На Рисунке 2 приведены выдержки из промпта, созданного GEPA для модуля генерации запросов в системе multi-hop question answering (используемой в HotpotQA). Мы также отмечаем, что во многих случаях даже одно рефлексивное обновление промпта даёт значительное улучшение (что подчёркнуто в траектории оптимизации на Рисунке 5). Эти результаты демонстрируют, что рефлексивная эволюция промптов с использованием языкового фидбэка обеспечивает значительную эффективность сэмплирования и устойчивую генерализацию, открывая практический путь к оптимизации сложных, реальных AI-workflow в условиях ограничений по данным или бюджету. Наконец, мы также показываем многообещающие предварительные результаты применения GEPA как стратегии поиска на этапе инференса для задач code optimization на бенчмарках NPUEval (Kalade & Schelle, 2025) и KernelBench (Ouyang et al., 2025).

2. Постановка задачи

Составные AI-системы. Вслед за рядом работ мы определяем составную AI-систему как любую модульную систему, состоящую из одного или нескольких вызовов языковой модели (LLM), потенциально перемежающихся с вызовами внешних инструментов и оркестрируемых через произвольный control flow. Это определение охватывает широкий класс реальных LLM-ориентированных AI-систем, включая агентов, мультиагентные системы и универсальные scaffolding-техники, такие как ReAct (Yao et al., 2023), Archon (Saad-Falcon et al., 2025) и др.

Следуя Soylu et al. (2024); Khattab et al. (2024); Opsahl-Ong et al. (2024); Tan et al. (2025), мы формализуем такую систему как \Phi = \bigl(M,\mathcal{C},\mathcal{X},\mathcal{Y}\bigr), где M = \langle M_{1}, \ldots, M_{|M|}\rangle обозначает языковые модули, C задаёт control flow-логику, а \mathcal{X}, \ \mathcal{Y} являются глобальными схемами входа/выхода.

Каждый модуль M_i = \bigl(\pi_i, \bar{\theta}_i, \mathcal{X}_i, \mathcal{Y}_i\bigr)представляет собой LLM-субкомпонент:

\pi_i - его (системный) промпт, включающий инструкции и few-shot демонстрации,

\theta_i - веса базовой модели;

 — \mathcal{X}_i, \ \mathcal{Y}_i - схемы входных и выходных данных.

Во время исполнения C управляет порядком вызова и последовательностью модулей — например, передаёт выходы одного модуля другому, вызывает модули условно или обращается к API инструментов. Таким образом, C может вызывать разные модули в любом порядке и кратности.

Рисунок 2. Показан пример промпта, сгенерированного GEPA для извлечения документов на втором шаге в многошаговой вопросно-ответной системе, а также исходный seed-промпт, с которого всё начиналось. В Приложении I приведено сравнение промптов GEPA для всех задач с промптами, сгенерированными MIPROv2.

Оптимизация составных AI-систем. Пусть задана \Phi . Обозначим \Pi_{\Phi} = \langle \pi_{1}, \ldots, \pi_{|M|} \rangle как совокупность всех модульных промптов, а \Theta_{\Phi} = \langle \theta_{1}, \ldots, \theta_{|M|} \rangle — как множество весов модулей. Таким образом, обучаемые параметры системы — это \langle \Pi, \Theta \rangle_{\Phi} . Для экземпляра задачи (x,m) — где x приводится к входной схеме \mathcal{X}, а m содержит метаданные для оценивания (например, gold-ответы, рубрики оценки, unit-тесты кода) — система порождает выход y = \Phi\!\bigl(x;\, (\Pi,\Theta)_{\Phi}\bigr). Далее метрика μ: \mathcal{Y} \times \mathcal{M} \to [0,1] измеряет качество выхода y относительно метаданных m (например, через exact match, F1, pass rate и т. п.). Задача оптимизации формулируется так:

 \langle \Pi^{*}, \Theta^{*} \rangle_{\Phi} = \arg\max_{(\Pi,\Theta)_{\Phi}}\; \mathbb{E}_{(x,m)\sim\mathcal{T}} \bigl[\, \mu\bigl(\Phi(x;\,\langle \Pi,\Theta\rangle_{\Phi}),\, m\bigr) \bigr],

где \mathcal{T} — распределение задач.

Sample-Efficient оптимизация. Во множестве реальных сценариев прогоны — то есть вызовыΦ с последующей оценкой μ — часто дороги вычислительно, финансово или по времени. Поэтому оптимизатор ограничен максимум B прогонами на датасете D_{\text{train}}=\bigl\{(x,m)_i\bigr\}_{i=1}^{N} с полным доступом к μ. Цель — найти параметры \langle \Pi^{*}, \Theta^{*} \rangle_{\Phi} которые максимизируют качество на hold-out, не превышая бюджет прогонов B:

\langle \Pi^{*}, \Theta^{*} \rangle_{\Phi} = \arg\max_{\langle \Pi,\Theta \rangle_{\Phi}} \mathbb{E}_{(x,m)\sim\mathcal{T}} \Big[\, \mu\big(\Phi(x;\,\langle \Pi,\Theta\rangle_{\Phi}),\, m\big) \Big] \quad \text{s.t. }\; \#\text{rollouts} \le B .

Эта формулировка отражает ключевую задачу, которая мотивирует нашу работу: как выжать максимальный обучающий сигнал из каждого дорогого прогона, чтобы обеспечить эффективную адаптацию сложных модульных AI-систем в условиях дефицита данных или ограниченного бюджета?

3. GEPA: рефлексивная эволюция промптов

Рисунок 3. GEPA работает итеративно — на каждой итерации предлагается новый кандидат, полученный улучшением уже существующих с помощью одной из двух стратегий: Reflective Prompt Mutation (см. раздел 3.2) или System Aware Merge (см. Приложение F). Сначала такие кандидаты оцениваются на мини-батче, и если показывают улучшение, то проверяются на более крупном датасете. Вместо того чтобы всегда выбирать для мутации одного лучшего кандидата, что может привести к локальному оптимуму, GEPA использует Pareto-based candidate sampling (см. раздел 3.3), который отбирает и сэмплирует кандидатов из списка лучших по каждой задаче, обеспечивая достаточное разнообразие. В совокупности эти проектные решения позволяют GEPA быть крайне эффективным по числу использованных прогонов, сохраняя при этом сильные свойства обобщения.

Мы представляем GEPA (Genetic-Pareto) — эффективный с точки зрения выборки оптимизатор для составных AI-систем, основанный на трёх ключевых принципах: генетическая эволюция промптов (см. раздел 3.1), рефлексия с использованием обратной связи на естественном языке (см. раздел 3.2) и Pareto-ориентированный отбор кандидатов (см. раздел 3.3). На Рисунке 3 приведён общий обзор GEPA, а полный алгоритм GEPA формализован на Рисунке 4.

GEPA получает на вход следующие данные: составную AI-систему Φ, инициализированную простыми промптами для последующей оптимизации; обучающий датасет D_{train} (состоящий из экземпляров задач (x, m), как описано в разделе 2); стандартную метрику μ для задачи; функцию обратной связи μ_f (введённую в разделе 3.2) и общий бюджет прогонов B.

3.1 Генетический цикл оптимизации

Для заданной составной AI-системы Φ цель процесса оптимизации состоит в том, чтобы найти набор параметров ⟨Π, Θ⟩_Φ, которые максимизируют метрику на распределении задач. GEPA начинает с инициализации пула кандидатов \mathcal{P}, где каждый кандидат представляет собой конкретную инстанциацию обучаемых параметров составной системы ⟨Π, Θ⟩_Φ. На начальном этапе пул кандидатов содержит только параметры базовой системы как единственного кандидата. Далее GEPA запускает цикл оптимизации, итеративно предлагая новых кандидатов и добавляя их в пул, продолжая процесс до исчерпания бюджета оценок.

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

На каждой итерации GEPA выбирает перспективных кандидатов из пула (этап выбора кандидатов), порождает нового кандидата — либо мутацией промптов в модуле на основе рефлексивной обратной связи, либо кроссовером между двумя кандидатами — и затем оценивает этот новый вариант на мини-батче задач. Если вновь предложенный кандидат демонстрирует улучшение по сравнению со своим родителем (или родителями) на локальном мини-батче, GEPA добавляет его в пул кандидатов \mathcal{P} . Этот процесс включает обновление внутренних структур данных, фиксирующих родословную нового кандидата, а также полную его оценку на валидационном множестве D_{pareto}, которое используется для выбора кандидатов.

После исчерпания бюджета GEPA возвращает кандидата с наилучшей агрегированной производительностью на D_{pareto}.

Рисунок 4:

  • Слева: основной алгоритм GEPA для рефлексивной эволюции промптов. GEPA работает итеративно: на каждой итерации выбирает некоторых из текущих кандидатов для эволюции (строка 7), выполняет выбранного кандидата на мини-батче прогонов, при этом используя специальную функцию обратной связи μ_f для сбора модульно-специфической обратной связи, когда это возможно (строки 9–10, подробно описано в Разделе 3.2). Далее LLM используется для рефлексивного обновления промпта (строка 11), и проверяется, улучшилась ли производительность системы с новым промптом на мини-батче (строка 14). Если улучшение достигнуто, GEPA затем оценивает нового кандидата системы на полном наборе D_{pareto}, добавляя его в список отслеживаемых кандидатов и помечая его родителя.

  • Справа: подпроцедура SelectCandidate, используемая в основном алгоритме GEPA, отвечает за выбор наилучшего кандидата для эволюции на следующей итерации оптимизации. Главная стратегия выбора кандидатов в GEPA — это нахождение недоминируемых кандидатов на фронте Парето (по всем экземплярам задач) и стохастический выбор одного из них на основе частоты их появления во фронте Парето.

3.2 Рефлексивная мутация промптов

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

GEPA реализует это следующим образом: при выборе кандидата для мутации на текущей итерации оптимизационной петли, GEPA обновляет систему параметрами этого кандидата, выбирает целевой модуль для улучшения (используя цикл round-robin, чтобы все модули получили обновления), и выполняет несколько прогонов на мини-батче, отобранном из обучающего набора, фиксируя их исход (успех/неудача). Анализируя трассировки исполнения системы, GEPA определяет входы, выходы и рассуждения целевого модуля. После этого LLM рефлексивно анализирует эту информацию, связывая успехи или ошибки с элементами промпта модуля (или их отсутствием) и предлагает новые инструкции для целевого модуля. Новый кандидат формируется как копия текущего, но с обновлённым промптом для целевого модуля. Мета-промпт, используемый GEPA для выполнения таких рефлексивных обновлений промптов, приведён в Приложении B.

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

Мы предлагаем использовать эти трассировки оценки в дополнение к трассировкам исполнения самой системы для проведения рефлексивного распределения ответственности и точечных обновлений промптов. В GEPA это реализовано через простое обновление метрики μ, превращающее её в функцию обратной связи μ_f, которая выделяет релевантные текстовые трассировки, полученные во время вычисления метрики, и возвращает финальный балл вместе с feedback_text. Когда это возможно, такая функция обратной связи также может предоставлять обратную связь на уровне отдельных модулей (например, в многошаговых системах оценщик может давать комментарии после каждого шага работы системы).

3.3 Выбор кандидатов на основе pareto

GEPA — это высокомодульный алгоритм, способный поддерживать различные стратегии выбора кандидатов на каждой итерации оптимизации. Ключевым является то, что именно выбор стратегии определяет баланс между exploration и exploitation, который принимает оптимизатор.

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

Чтобы решить эту проблему, GEPA применяет Pareto-ориентированную стратегию «illumination» (Mouret & Clune, 2015), описанную в Алгоритме 2. Конкретно, GEPA определяет наивысший score, достигнутый для каждого отдельного тренировочного инстанса среди всех кандидатов в пуле, формируя тем самым Pareto-фронтир из полученных на данный момент результатов оптимизации. Далее GEPA собирает список кандидатов, которые показали лучший результат хотя бы на одной тренировочной задаче. Это отфильтровывает пул до кандидатов, содержащих «выигрышные» стратегии, сохраняя каждый ценный инсайт, открытый в ходе рефлексивных мутаций.

Затем GEPA исключает кандидатов, которые строго доминируемы: например, если Кандидат 2 имеет лучший результат только на Задаче 1, а Кандидат 3 добивается такого же лучшего результата на Задаче 1 и одновременно лучшего на Задаче 2, то Кандидат 2 удаляется. Наконец, GEPA стохастически семплирует кандидата из очищенного списка, назначая более высокую вероятность выбора тем, кто достиг лучших результатов на большем числе тренировочных инстансов.

На практике эта стратегия позволяет GEPA избегать локальных оптимумов, не чрезмерно расширяя пространство поиска. Сосредотачивая ресурсы на перспективных кандидатах, уже продемонстрировавших сильные «выигрышные» стратегии, GEPA эффективно балансирует exploration и exploitation, обеспечивая постоянное улучшение в рамках заданного бюджета оптимизации.

Рисунок 5. Рефлексивная мутация промптов в GEPA систематически учитывает нюансы, специфичные для задачи, что приводит к существенному росту качества. На рисунке показана траектория оптимизации, выполненная GEPA: приведено аннотированное поддерево с рисунка 23d (для задачи делегирования с учётом приватности PUPA), демонстрирующее итеративные улучшения промптов. Прогресс от базового промпта (кандидат 0) до наилучшего промпта (кандидат 11) отмечен красными стрелками, а ключевые изменения в промптах на каждом шаге подписаны рядом с соответствующими узлами. Полные инструкции для этих итераций приведены в Приложении G.1. Каждая доработка промпта в этой траектории добавляет целевые нюансы, обусловленные текущей оптимизацией, показывая, как процесс GEPA накапливает «уроки» и последовательно повышает качество на задаче.

4. Настройка эксперимента

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

  • Обучающая выборка полностью доступна оптимизаторам: они могут читать и использовать тексты и метки обучающих примеров для настройки программы.

  • Валидационная выборка может использоваться только для мониторинга качества кандидатов (например, для реализации ранней остановки), однако прямой доступ к её содержимому (тексты, метки) ограничен.

  • Тестовая выборка полностью исключена из процесса оптимизации и применяется только после завершения обучения, чтобы объективно оценить производительность оптимизированной программы.

4.1 Бенчмарки, эталонные составные ai-системы и функции обратной связи

Для тщательной оценки GEPA и сравнения её с современными оптимизаторами составных AI-систем мы собрали разнообразный набор бенчмарков, в основном из работы Tan et al. (2025). Каждый бенчмарк сопровождается доступной составной AI-системой.

HotpotQA (Yang et al., 2018).

Крупномасштабный датасет QA, включающий 113K пар (вопрос-ответ) на основе Википедии. Вопросы требуют рассуждений с привлечением нескольких документов. Мы модифицировали последний шаг программы HoVerMultiHop (см. ниже), чтобы он выдавал ответ, а не новый запрос; остальная система осталась неизменной. Модуль текстовой обратной связи определяет набор релевантных документов, которые ещё нужно извлечь на каждом этапе программы, и предоставляет его как фидбек для соответствующих модулей. Разделение данных: 150 обучающих, 300 валидационных, 300 тестовых примеров.

IFBench (Pyatkin et al., 2025b).

Бенчмарк, созданный для проверки способности LLM строго следовать инструкциям человека, включая ограничения на вывод (например: «ответь только да или нет» или «упомяни слово не меньше трёх раз»). Тестовый набор IFBench содержит 58 новых, ранее не встречавшихся ограничений, что позволяет проверить способность системы к обобщению. Также доступны обучающие наборы IFTrain и IF-RLVR Train (Pyatkin et al., 2025a). Мы разделили IF-RLVR Train на обучающую и валидационную части, а IFBench использовали как тестовый набор (чтобы оптимизаторы не имели доступа к новым ограничениям). Мы разработали 2-этапную систему: сначала формируется ответ на запрос пользователя,затем ответ переформулируется с учётом заданных ограничений. Модуль текстовой обратной связи сообщает, какие ограничения были выполнены, а какие нарушены.Разделение данных: 150 обучающих, 300 валидационных, 294 тестовых примера.

HoVer (Jiang et al., 2020).

Открытый бенчмарк для многошагового извлечения фактов и проверки утверждений на основе Википедии. Требует сложных рассуждений с привлечением нескольких предложений и статей. Как и в Tan et al. (2025), системы оцениваются по способности составлять многошаговые запросы, извлекающие все релевантные документы. Мы используем программу HoVerMultiHop (Tan et al., 2025), которая выполняет до 3-х шагов извлечения с помощью 2 модулей генерации запросов и 2 модулей суммирования документов. Модуль обратной связи сообщает, какие документы извлечены правильно, а какие ещё отсутствуют. Разделение данных: 150 обучающих, 300 валидационных, 300 тестовых примеров.

PUPA (Li et al., 2025a).

Задача делегирования с учётом приватности (Privacy-Conscious Delegation): нужно обрабатывать пользовательские запросы, используя ансамбль доверенных и недоверенных моделей. Основная цель — сохранить качество ответа, минимизируя при этом утечку персональных данных (PII) в недоверенные модели. Для этой задачи Li et al. (2025a) предложили составную систему PAPILLON, состоящую из двух модулей: переписывание запроса и переписывание ответа, которые выполняются доверенной моделью. Между ними вызывается недоверенная модель, получающая переписанный запрос. Текстовый фидбек даёт разбор итогового балла: оценку качества ответа и показатель утечки PII. Разделение данных: 111 обучающих, 111 валидационных, 221 тестовый пример.

4.2 Модели и параметры инференса

Мы оцениваем GEPA и базовые оптимизаторы, используя две современные LLM, выбранные для представления как open-source, так и коммерческих семейств моделей. Каждая составная AI-система инстанцируется отдельно для каждой модели, при этом все модули (например, поиск документов, переписывание, генерация ответов) используют одну и ту же модель. Всем моделям разрешено использовать контекст до 16384 токенов для инференса.

Qwen3 8B (Yang и др., 2025). Для экспериментов с открытым исходным кодом (включая GRPO) мы используем Qwen3-8B. В соответствии с рекомендованными настройками (Team, 2025), при обучении и инференсе используется температура 0.6, top-p = 0.95 и top-k = 20.

GPT-4.1 Mini (OpenAI, 2025). Для сравнения с крупными коммерческими моделями мы используем GPT-4.1 mini (openai/gpt-4.1-mini-2025-04-14), доступный через API OpenAI, с температурой модели 1.0.

4.3 Оптимизаторы

Baseline: Базовая программа оценивается напрямую без какой-либо оптимизации.

MIPROv2 (Opsahl-Ong и др., 2024).

MIPROv2 — широко используемый оптимизатор промптов для составных AI-систем, интегрированный в DSPy (Khattab и др., 2024) и llama-prompt-ops (AI, 2025). Он оптимизирует как инструкции, так и демонстрации с помощью байесовской оптимизации. Для каждого модуля сначала создаются наборы кандидатов инструкций и демонстраций с равномерным распределением априорных вероятностей их полезности. Кандидаты предлагаются с использованием оценщика TPE (Tree-Structured Parzen Estimator), после чего байесовская модель обновляется на основе результатов, чтобы отдавать предпочтение лучшим кандидатам. Затем наиболее вероятные наборы инструкций и демонстраций выбираются и валидируются, формируя итоговую оптимизированную конфигурацию программы. Все запуски MIPROv2 выполняются с настройкой auto = heavy, которая соответствует 18 кандидатам инструкций и 18 наборам few-shot. Таким образом, общее количество прогонов зависит от числа попыток, необходимых для набора успешных примеров (нахождения 18 успешных решений), числа шагов байесовского поиска (определяется количеством модулей в системе) и размера валидационного набора. В целом количество прогонов для MIPROv2 варьировалось от 2270 (для PUPA) до 6926 (для HoVer).

GRPO (Shao и др., 2024).

Group Relative Policy Optimization (GRPO) — это алгоритм обучения с подкреплением, который оценивает преимущества в относительных группах. Мы используем реализацию GRPO для составных AI-систем, открытую Ziems, Soylu и Agrawal (2025).

Во всех запусках:

  • размер группы = 12,

  • 4 обучающих примера на шаг (общий батч = 48, по 1 на устройство),

  • используется LoRA (Hu и др., 2022) с размерностью rank = 16, α = 64, dropout = 0.05,

  • точность bf16, адаптируются проекционные модули [q, k, v, o, up, down, gate],

  • learning rate = 1×10⁻⁵, β = 0.01, нормализация reward scale, gradient clipping = 0.1,

  • аккумуляция градиентов в течение 20 шагов,

  • используется scheduler «constant with warmup»,

  • включён non-reentrant gradient checkpointing для экономии памяти.

Мы вручную исследуем несколько значений гиперпараметров [LR, beta, norm clipping]. Все запуски GRPO выполняются 500 шагов обучения (24 000 прогонов фиксированно), с валидацией каждые 20 шагов (для реализации ранней остановки). Эксперименты проводились на 1×H100/A100 (80 GB), при этом отдельные GPU использовались для инференса.

GEPA.

GEPA — наш оптимизатор, основанный на алгоритме из раздела 3. Мы оцениваем 2 варианта: GEPA и GEPA+Merge, а также 2 абляции, в которых стратегия выборки на основе Парето заменяется на простую SelectBestCandidate (SelectBestCandidate и SelectBestCandidate+Merge). Все запуски GEPA: размер minibatch = 3, операция merge вызывается максимум 5 раз за одно выполнение (если включена).

Для справедливого сравнения с MIPROv2 мы выравниваем вычислительный бюджет по каждому бенчмарку. Обучающий набор из каждого бенчмарка используется как D_{feedback}, а валидационный — как D_{pareto}.

Так как общее число прогонов в MIPROv2 зависит от размера валидационного набора и числа модулей, мы сначала фиксируем число прогонов, затраченных MIPROv2 на каждом бенчмарке, а затем ограничиваем оптимизацию GEPA тем же бюджетом. Хотя точное использование бюджета различается из-за разных процедур валидации и генерации кандидатов, расхождение всегда меньше 10.15%.

Это гарантирует, что различия в производительности вызваны именно алгоритмами оптимизации, а не неравным бюджетом поиска. Точные значения прогонов для каждого оптимизатора показаны в Приложении C.

5. Результаты и анализ

Таблица 1. Результаты бенчмарков для различных оптимизаторов на моделях Qwen3 8B и GPT-4.1 Mini по множеству задач.

Таблица 1 и Рисунок 9 суммируют наши основные результаты, из которых можно вывести следующие наблюдения:

Наблюдение 1: Рефлексивная эволюция промптов отличается высокой выборочной эффективностью и может превосходить обучение с подкреплением в пространстве параметров модели.

Во всех четырёх бенчмарках GEPA демонстрирует быструю адаптацию и устойчивую обобщающую способность в составных AI-системах — превосходя GRPO (24 000 прогонов с LoRA) до 19%, используя при этом до 35 раз меньше прогонов.

GEPA достигает оптимальной производительности на тестовых наборах HotpotQA, IFBench, HoVer и PUPA всего за 6438, 678 (в 35 раз меньше), 6858 и 2157 (в 11 раз меньше) прогонов соответственно — обгоняя GRPO на 19%, 2.73%, 13.66% и 5.19% по этим задачам. Особенно примечательно, что GEPA достигает лучших валидационных результатов GRPO всего за 402, 330, 1179 и 306 прогонов, демонстрируя до 78 раз более высокую эффективность по выборкам. Кроме того, комбинированный подход GEPA+Merge превосходит GRPO ещё сильнее — на 21% при сопоставимом бюджете прогонов с GEPA. Особенно стоит отметить +8.16%, достигнутые GEPA+Merge на IFBench с GPT-4.1 mini, несмотря на то, что тестовый набор содержит новые, полностью вне-доменные ограничения.

Важно отметить, что большинство прогонов GEPA расходуется на валидационный набор, где результаты используются исключительно для отбора кандидатов, а не для генерации обучающих сигналов. Если ограничиться только обучающими прогонами — то есть прогонами, реально задействованными для обучения — GEPA требуется лишь 737, 79, 558 и 269 прогонов, чтобы достичь оптимальной производительности на HotpotQA, IFBench, HoVer и PUPA соответственно. Чтобы сравняться с лучшими валидационными результатами GRPO, GEPA достигает этого всего за 102, 32, 6 и 179 обучающих прогонов, что подчёркивает высокую эффективность обучения на основе эволюции отражённых промптов.

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

На рисунках 1a, 11c, 1b и 13c показаны полные кривые зависимости «производительность-прогоны» для всех оптимизаторов на бенчмарках HotpotQA, IFBench, HoVer и PUPA.

Наблюдение 2: Рефлексивная эволюция промптов позволяет одной лишь оптимизации инструкций превосходить совместную оптимизацию инструкций и few-shot.

Мы сравниваем GEPA с MIPROv2 — SOTA-оптимизатором, совместно оптимизирующим инструкции и few-shot — на двух ведущих моделях (GPT-4.1 mini и Qwen3 8B) и четырёх разнородных задачах. Наши эксперименты показывают, что GEPA стабильно обгоняет MIPROv2 во всех настройках, достигая разрыва до 11,1% для GPT-4.1 mini и 10,3% для Qwen3 8B. Более того, GEPA и GEPA+Merge более чем вдвое увеличивают суммарный прирост над базовой программой по сравнению с MIPROv2 на всех бенчмарках и обеих моделях (+16,02% и +14,29% против +7,04% у MIPROv2).

Хотя предыдущие работы, такие как Opsahl-Ong et al. (2024) и Wan et al. (2024), убедительно показали эффективность оптимизации few-shot примеров — зачастую превосходящую методы, основанные на инструкциях, — наши результаты свидетельствуют о захватывающем сдвиге в этой тенденции. Мы объясняем это, прежде всего, недавними достижениями в способности LLM следовать инструкциям и к саморефлексии, а также особенностями дизайна GEPA, которые позволяют эффективно использовать эти улучшенные возможности.

Для дополнительного контекста мы повторно провели исследование разрыва в обобщающей способности [generalization gap] (разница между результатами на валидационном и тестовом наборах для оптимизированных промптов), предложенное Wan et al. (2024). Результаты, представленные на рисунке 14, подтверждают эти наблюдения: рефлексивно эволюционировавшие инструкции теперь демонстрируют меньший разрыв в обобщении, что подчёркивает как прогресс в возможностях моделей, так и преимущества дизайна GEPA. Мы рассматриваем это как отражение непрерывного развития LLM и способности GEPA эффективно использовать эти достижения.

Наконец, в Приложении I мы приводим полные тексты оптимизированных промптов, полученных GEPA для всех систем, бенчмарков и моделей, рядом с соответствующими промптами MIPROv2. Примечательно, что в отличие от прежних результатов, где улучшения при оптимизации инструкций достигались в основном за счёт «квази-примеров» (Wan et al., 2024), промпты GEPA часто содержат подробные декларативные инструкции по выполнению задачи, как показано на рисунке 2.

Наблюдение 3: Стратегия выбора следующего кандидата существенно влияет на траекторию оптимизации и конечные результаты, причём выбор на основе Парето даёт заметное преимущество.

GEPA стремится итеративно улучшать промпты, используя фидбэк от новых прогонов. Чтобы проверить влияние нашей стратегии выбора кандидатов на основе Парето, мы рассмотрели простой базовый вариант реализации стратегии SelectCandidate: всегда выбирать текущего кандидата с наилучшей производительностью. Как показано в результатах абляции в таблице 2, такой подход часто приводит к неоптимальному исследованию пространства поиска промптов и, в конечном счёте, к снижению качества — GEPA со стратегией на основе Парето превосходит стратегию SelectBestCandidate до 8.17%, сохраняя совокупное преимущество +6.4% по всем бенчмаркам.

На рисунке 6 показано резкое различие траекторий оптимизации между этой наивной стратегией и нашим предложенным методом выборки на основе Парето. Постоянный выбор текущего лучшего кандидата действительно обеспечивает немедленное улучшение в следующей итерации, но затем приводит к «застреванию» оптимизатора, который расходует весь свой бюджет прогонов, пытаясь доработать конкретного кандидата. Напротив, наш метод выборки на основе Парето расширяет поиск, учитывая всех Парето-оптимальных кандидатов (представляющих все «выигрышные» стратегии, найденные на данный момент), обеспечивая сбалансированный компромисс между исследованием и эксплуатацией — и в итоге сходясь к более качественному решению при том же бюджетe прогонов.

Таблица 2: Результаты бенчмарков для различных оптимизаторов на моделях Qwen3 8B и GPT-4.1 Mini по множеству задач.

Рисунок 6. (a) SelectBestCandidate Strategy
Рисунок 6. (a) SelectBestCandidate Strategy
Рисунок 6. (b) Pareto-based candidate sampling
Рисунок 6. (b) Pareto-based candidate sampling

Рисунок 6: Сравнение влияния различных стратегий выбора кандидатов.

  • (a) SelectBestCandidate Strategy: как видно, стратегия выбора лучшего кандидата на каждой итерации быстро привела к попаданию в локальный оптимум уже после одного шага, что вызвало неэффективный поиск и низкую итоговую производительность.

  • (b) Pareto-based candidate sampling: при стратегии отбора кандидатов на основе Парето GEPA смогла построить сбалансированное дерево поиска и найти более результативную «программу» при том же бюджете.

Наблюдение 4: Промпты, оптимизированные только на уровне инструкций (без примеров), вычислительно дешевле и лучше обобщают, чем промпты с few-shot.

Помимо высокой способности к обобщению, инструкции, эволюционировавшие с использованием механизма рефлексии, обладают важным практическим преимуществом: они часто значительно короче и, следовательно, вычислительно эффективнее, чем промпты с few-shot. Это преимущество особенно проявляется в сложных задачах, где даже один few-shot-промпт может быть чрезмерно длинным. Проблема усугубляется, когда few-shot-примеры оптимизируются SOTA-методами вроде MIPROv2, которые совместно подбирают несколько примеров для одновременной вставки в промпт — что ещё больше раздувает его длину.

В отличие от этого, инструкции, созданные GEPA, сохраняют компактность при обеспечении значительных улучшений производительности (как показано в Наблюдениях 1 и 2). Для иллюстрации мы сравнили длину промптов GEPA и MIPROv2 (см. рисунок 16). Примечательно, что промпты, сгенерированные GEPA и GEPA+Merge, до 9.2 раз короче, чем у MIPROv2, что представляет собой значительный прирост эффективности наряду с улучшением качества. Более того, мы наблюдаем тенденцию: в совокупности оптимизаторы, показывающие более высокие результаты, как правило, порождают более короткие промпты (см. рисунок 15). Сокращение длины промпта имеет большое значение — оно снижает стоимость выполнения задач (так как все API-провайдеры тарифицируют входные токены), уменьшает задержки и повышает общую эффективность систем на базе LLM (Kwon et al., 2023; Zheng et al., 2024; Agrawal et al., 2023; Yu et al., 2025).

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

Мы выделили особую стратегию кроссовера, учитывающую устройство системы, и реализовали её как Merge (описано в приложении F). GEPA+Merge может превосходить GEPA до 5%, обеспечивая в среднем ещё +2% прироста по сравнению с уже сильными результатами GEPA. Подробные результаты приведены в таблице 1. Мы объясняем эти улучшения способностью GEPA+Merge выявлять разные линии оптимизации, которые выработали взаимодополняющие стратегии (путём эволюции различных модулей), и объединять их, выбирая лучшие версии разных модулей из каждой линии для построения одного оптимального кандидата.

В то время как в наших экспериментах GEPA+Merge особенно хорошо работал с GPT-4.1 Mini, для Qwen3 8B он иногда приводил к ухудшению качества. Тем не менее, для Qwen3 8B Merge даёт выигрыш в одной из четырёх задач. Мы объясняем такие расхождения способом распределения бюджета прогонов между рефлексивной мутацией и кроссовером, а также с таймингом применения кроссовера. В наших экспериментах мы фиксировали одинаковые гиперпараметры для GPT-4.1 Mini и Qwen3 8B, что оказалось неоптимальным для Qwen3 8B. Интуитивно, наибольшую пользу кроссовер даёт, когда уже сформировались независимые линии, показывающие хорошие результаты. Следовательно, гиперпараметры должны выбираться так, чтобы Merge применялся тогда, когда дерево оптимизации уже эволюционировало в достаточно разные линии. Изучение таких адаптивных техник мы оставляем на будущее.

6. GEPA для поиска на этапе инференса

Хотя основной фокус этой работы — sample-эффективная адаптация AI-систем к новым задачам, предварительные результаты показывают, что GEPA также может выступать как перспективная техника поиска на этапе инференса. Это достигается путём передачи набора задач для решения (например, списка Pytorch-модулей, которые требуется конвертировать в CUDA) в качестве обучающего набора для GEPA, при этом и D_{train}, и D_{pareto} содержат полный набор задач. Таким образом, GEPA может «переобучиться» на заданный набор задач, итеративно предлагая всё более качественные решения для каждой из них. Важно отметить, что это позволяет GEPA переносить извлечённые из прогонов "уроки" и инсайты от одной задачи к другим.

Для исследования этого применения мы провели предварительные эксперименты с использованием GEPA как метода поиска на этапе инференса для задач генерации кода на двух аппаратных платформах:

  • генерация ядер для недавно представленной архитектуры XDNA2 от AMD (Advanced Micro Devices, 2025) с использованием ранней версии бенчмарка NPUEval (Kalade & Schelle, 2025),

  • генерация CUDA-кода для GPU NVIDIA-V100 с помощью KernelBench (Ouyang et al., 2025).

Отличительной особенностью этих экспериментов стало использование функции обратной связи μ_f для динамического внедрения специфичных для домена знаний в процесс оптимизации. В частности, опыт разработки ядер — зачастую зафиксированный в технических мануалах и документации — может выборочно использоваться путём извлечения релевантных разделов мануалов на основе ошибок прогона (например, сообщений компилятора). Применяя информацию об ошибках для целевых запросов поиска, GEPA способствует интеграции архитектурных best practices в процесс эволюции промптов, что демонстрирует детализированный промпт для NPUEval, приведённый на рисунке 25. Также стоит отметить, что стохастичность генерации (выборка с температурой) устраняется за счёт работы через кэш; это гарантирует, что наблюдаемые улучшения напрямую связаны с масштабированием инференса через обновления промптов и разнообразное исследование GEPA, а не с вероятностным характером сэмплирования модели.

NPU-ядра. Мы создали агента последовательного уточнения, который итеративно генерирует ядра (до 10 раз), опираясь на фидбэк вроде ошибок компилятора и результатов профилирования (Sequential10), и оценили стратегию Best-of-N генераций. Используя только GPT-4o, Sequential10 достигает лишь 4.25% средней загрузки векторных блоков. Добавление RAG, извлечённого из технических мануалов, повышает этот показатель до 16.33%, а интеграция MIPROv2 — до 19.03%. Примечательно, что применение GEPA к Sequential10 (без RAG) резко увеличивает производительность ядер: несколько сгенерированных решений достигают до 70% загрузки векторных блоков, а среднее значение составляет 30.52%. Более того, один промпт, сгенерированный GEPA, позволяет Sequential10 (снова без RAG) получить результат 26,85%.

CUDA-ядра. Для 35 задач из «репрезентативного поднабора» KernelBench (Ouyang et al., 2025), охватывающих три уровня сложности, мы запустили GEPA с GPT-4o. Как показано на рисунке 8, GEPA увеличивает fast_1-показатель GPT-4o (близкий к 0%) до более чем 20% по мере увеличения бюджета прогона. В этой задаче использовался агент, способный генерировать до 5 последовательных уточнений на основе фидбэка от среды (Sequential5).

Эти эксперименты с GPT-4o также демонстрируют способность GEPA эффективно использовать возможности передовых LLM. Однако полученные результаты являются предварительными и требуют дальнейшего систематического изучения. Мы полагаем, что использование GEPA для поиска на этапе инференса, особенно в сочетании с текстовой обратной связью, специфичной для конкретной предметной области, может быть обобщено и на другие задачи генерации кода и адаптации к доменам — направление, которое мы оставляем для будущей работы.

Рисунок 7: GEPA с GPT-4o способен генерировать ядра для NPU от AMD, которые достигают уровня использования векторных блоков до 70% при среднем значении 30,52%. Для сравнения, GPT-4o, даже после до 10 последовательных уточнений с использованием обратной связи от среды, достигает совокупного результата лишь 4.25%. При добавлении retrieval-augmented generation (RAG) и MIPRO агент последовательного уточнения улучшает показатели до 16.33% и 19.03% соответственно. Примечательно, что финальный промпт, сгенерированный GEPA, позволяет этому же агенту достичь уровня 26.85%, при этом не требуя никакого runtime-RAG.

Рисунок 8: GEPA с GPT-4o способен итеративно уточнять и улучшать код CUDA-ядер. Графики показывают зависимость fast_p от числа прогонов для p = [0.5, 1], где ускорение вычисляется относительно Pytorch-eager. fast_p — это метрика, описанная в (Ouyang et al., 2025), которая измеряет долю задач, для которых метод сгенерировал ядро, выполняющееся быстрее, чем p-кратное время работы базового варианта. Как видно, GEPA с GPT-4o удалось сгенерировать CUDA-ядра, работающие быстрее, чем Pytorch-eager, более чем для 20% из 35 репрезентативных задач.

7. Смежные исследования

Оптимизация промптов. Показано, что оптимизация промптов эффективна для больших языковых моделей. Ручной тюнинг, например chain-of-thought prompting (Wei et al., 2023), может значительно повышать качество модели, но требует экспертного выбора — какие инструкции и примеры полезны. Чтобы масштабировать тюнинг промптов на большее число доменов, в недавних работах (Zhou et al., 2022; Yang et al., 2024; Agarwal et al., 2024; Fernando et al., 2024) предлагают использовать сами LLM для оптимизации промпта. GEPA тоже задействует LLM для оптимизации промпта. Однако GEPA отличается тем, что использует текстовый фидбэк из среды, ищет лучшие кандидаты промптов с учётом парето-фронтира и применяет эволюционные стратегии для оптимизации промптов каждого подмодуля внутри составной AI-системы.

Эволюционные LLM. Помимо «наивной» оптимизации промптов, эволюционные алгоритмы также популярны для повышения качества LLM. Например, EvoPrompt (Guo et al., 2024) соединяет LLM с эволюционным поиском, постепенно формируя популяцию улучшенных промптов. Несмотря на мощь эволюционного подхода, популяция промптов в EvoPrompt слабо использует обучающий фидбэк. Кроме того, в отличие от случайных мутаций, GEPA применяет доменно-специфический фидбэк для проведения мутаций, что ускоряет сходимость — что подтверждается высокой sample-эффективностью GEPA.

Другая недавняя работа — AlphaEvolve (Novikov et al., 2025) и её open-source-реализация OpenEvolve (Sharma, 2025) — демонстрирует эффективность эволюционного поиска, применённого прямо к коду: система итеративно переписывает части кода, используя «эволюционный» фидбэк, зашитый в промпт. Такой подход особенно силён там, где решения можно явно закодировать и напрямую модифицировать на уровне кода. В то время как AlphaEvolve нацелена на одну сложную задачу, GEPA переносит эволюционную парадигму на класс задач — через промпты. Комбинируя парето-оптимизацию и эволюцию промптов, GEPA переиспользует знания и тактики с похожих задач, конструируя более сильный промпт.

Рефлексия и фидбэк. Использование фидбэка/реворда — ещё одна заметная линия работ по улучшению LLM на верифицируемых задачах. Типичная стратегия — направлять обучение модели через методы RL. Например, Xu et al. (2025a) и Zuo et al. (2025) предлагают, соответственно, использовать фидбек на естественном языке и знания из механизма majority voting для RL-тренировки. Однако RL, который изменяет веса модели, часто малоэффективен по сэмплам, особенно когда вычисление реворда/фидбэка дорого.

Альтернатива — «учиться» на фидбэке среды в пространстве естественного языка. Monea et al. (2025) используют саму языковую модель для in-context learning через самоинициализацию (self-bootstrapping) с внешними верификаторами. Wang et al. (2024) предлагает суммировать «память» из успешных траекторий агента, фактически имитируя обучение. Аналогично, Dynamic Cheatsheet (Suzgun et al., 2025) предлагает обучение на этапе инференса путём синтеза стратегий для последующего использования. В отличие от этого, GEPA использует примеры, чтобы рефлексивно предлагать новые инструкции, а не как few-shot-примеры в промпте — тем самым формируя правила и знания, специфичные для задачи.

Оптимизация составных AI-систем и агентов. Оптимизация составных AI-систем с несколькими LLM-модулями — традиционно сложная задача. DSPy (Khattab et al., 2022; 2024) вводит оптимизацию для поиска и инициализации стартовых few-shot-примеров в контексте. TextGrad (Yuksekgonul et al., 2025) оптимизирует составные системы, «пробрасывая» текстовый фидбэк от других LLM. MIPROv2 (Opsahl-Ong et al., 2024) пытается совместно выровнять инструкции и few-shot-примеры для составных систем через байесовскую оптимизацию. Несмотря на разные алгоритмы, перечисленные оптимизаторы в основном опираются на финальные глобальные реворды как сигнал успеха. Недавняя работа Optimas (Wu et al., 2025b) предлагает использовать глобально согласованные локальные реворды для каждого LLM-модуля, чтобы ещё больше улучшать составные системы.

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

8. Ограничения и направления для будущей работы

Несмотря на высокую sample-эффективность и способность к обобщению за счёт рефлексивной эволюции промптов, у GEPA остаются ограничения.

Граница между обучением на основе промптов и обучением на уровне весов модели всё ещё не до конца понятна — хотя GEPA показывает отличные результаты в условиях, где прогоны дороги, вероятно, обновления весов будут превосходить подход с промптами в режимах с избыточными данными или при возможности выполнять масштабные прогоны. В наших базовых экспериментах с GRPO мы использовали LoRA, так как она имеет меньшие вычислительные затраты и уже успешно применялась к RL в ряде работ (Wang et al., 2025b; Xu et al., 2025b; Li et al., 2025b; Yue et al., 2025; Sun et al., 2025; Hayou et al., 2025; Zhao et al., 2025; Teknium et al., 2024; Zhao et al., 2024; Sidahmed et al., 2024). Однако в будущей работе следует изучить влияние full-parameter fine-tuning для GRPO. Одновременно отметим, что в предшествующих исследованиях full-parameter GRPO стабильно требовал очень большого числа прогонов — обычно от 100 000 до 512 000 (Chen et al., 2025b; Wu et al., 2025c; Zhang et al., 2025; Jin et al., 2025; Si et al., 2025; Wang et al., 2025a; Java et al., 2025; Chen et al., 2025a; Wu et al., 2025a; Sha et al., 2025; Lin et al., 2025; Peng et al., 2025; Song et al., 2025). Мы исследовали несколько значений гиперпараметров [LR, beta, norm clipping], однако в будущем требуется более системное изучение эффекта тонкой настройки гиперпараметров для RL-алгоритмов.

В текущей версии GEPA сосредоточен исключительно на оптимизации инструкций, без использования примеров или few-shot. Интеграция таких примеров может дополнительно улучшить результаты. Мы также отметили, что в текущей форме большая часть прогонов GEPA расходуется на валидацию кандидатов, которую можно выполнять даже на меньших наборах данных для Парето-оценки. В дальнейшем стоит исследовать влияние гиперпараметра размера набора для Парето-валидации (Aлгоритм 1), а также разработать динамические или субсемплированные стратегии валидации для дальнейшего повышения sample-эффективности.

Перспективным и пока малоизученным направлением мы считаем то, что можно назвать feedback engineering, то есть поиск того, какие именно следы исполнения или оценки системы могут предоставить наиболее ценный обучающий сигнал для рефлексивной оптимизации.

Наконец, GEPA в текущем виде работает с фиксированными параметрами модели; мы выдвигаем гипотезу, что интеграция рефлексивной эволюции промптов с адаптацией в весовом пространстве — например, использование языковых уроков GEPA для проведения RL-прогонов — может дать аддитивный эффект и помочь объединить подходы, основанные на промптах и на весах, для оптимизации составных AI-систем.

9. Заключение

Мы представили GEPA — новый оптимизатор промптов для произвольных LLM-агентов и воркфлоу. GEPA использует рефлексивную эволюцию промптов и Парето-ориентированный отбор, демонстрируя превосходную sample-эффективность по сравнению с обучением с подкреплением (GRPO) при сохранении устойчивого обобщения, а также опережая ведущие оптимизаторы промптов (MIPROv2). Явно задействуя фидбэк на естественном языке и поддерживая разнообразный пул парето-оптимальных кандидатов, GEPA быстро адаптирует AI-системы к новым задачам.

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

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


Приложения к статье доступны в оригинале: https://arxiv.org/pdf/2507.19457.

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