Как оптимизация промптов превратилась из шаманства в инженерную дисциплину
Ещё пару лет назад промпт-инжиниринг выглядел как подбор удачного заклинания: "а давай добавим think step by step, "а давай попросим быть аккуратнее" и о приправим xml-тегами".
Сегодня это типовая задача оптимизации в условиях чёрного ящика.
Уже 2026 год и современные LLM одновременно:
-
чувствительны к формулировкам;
-
дороги по токенам;
-
нестабильны между версиями;
-
плохо прощают ручную настройку на глазок.
Промпт -> это не текст, а параметр модели, и оптимизировать его нужно алгоритмически, а не интуитивно.
Ниже — краткий обзор основных подходов. Как они формализуются, где про них почитать и почему на них стоит обратить внимание.
1. Как вообще формализуется оптимизация промптов
Все подходы сводятся к поиску аргумента, максимизирующего функцию в дискретном пространстве:
Где f — это не только точность (accuracy), но и стоимость, формат (JSON compliance) и латентность.
Главные инженерные барьеры:
-
Отсутствие градиентов: Мы не можем сделать
loss.backward(), так как API — это чёрный ящик. -
Смерть лог-вероятностей (Logprobs): Большинство современных API (OpenAI, Anthropic) либо скрывают лог-пробы, либо делают их бесполезными для сложных рассуждений. Это убило методы типа AutoPrompt.
-
Комбинаторный взрыв: Пространство вариантов текста бесконечно.
Решения делятся на три класса: эволюционные, программные и генеративно-эвристические, .
2. Эволюционные методы
MetaPrompt и TextGrad
Подход, основанный на "текстовых градиентах. https://github.com/zou-group/textgrad
-
Раз мы не имеем доступа к весам, мы используем критику LLM как градиент.
Forward Pass (ответ) -> Loss (оценка судьи) -> Backward Pass (текстовая критика) -> Update (правка промпта). -
MetaPrompt: Реализует цикл
Generate -> Critique -> Refine. Отлично подходит для исправления проблем с JSON-схемами или стилем.
HRPO — Hierarchical Reflective Prompt Optimizer
Оптимизация серого ящика с анализом корневых причин. Вместо исправления каждой ошибки отдельно, HRPO кластеризует ошибки (например, «модель путает даты в 30% случаев») и вносит системные правки в промпт. Это снижает дрейф промпта.. https://arxiv.org/abs/2305.17126
Как работает:
-
Батчевый прогон;
-
Сбор неудач;
-
Кластеризация ошибок;
-
Точечные мутации.
Исправляется класс ошибок и файндинги, а не отдельный кейс.
GEPA: Эволюция с Парето-фронтиром
Генетические алгоритмы, адаптированные для текста.
-
Как работает:
-
Рефлексивная мутация: Вместо случайной замены слов, LLM анализирует почему предыдущий промпт ошибся (анализ трейсов) и предлагает осмысленное исправление;
-
Парето-оптимизация: GEPA ищет не один «лучший» промпт, а набор (фронтир). Например: один промпт дает 95% точности, но длинный и дорогой; второй — 93%, но дешевый и быстрый. Оба сохраняются в популяции.
-
-
Результат: Превосходит RL-методы, требуя в 35 раз меньше вызовов API.
-
Ссылки на почитать: Paper (GEPA) | Opik Docs
2. Программные
DSPy — программирование вместо текста
Это смена парадигмы. Ты больше не пишешь промпты. Ты описываешь:
-
сигнатуры;
-
модули;
-
ограничения;
-
связи между шагами.
DSPy сам компилирует это в оптимальные инструкции. https://arxiv.org/abs/2310.03714, https://github.com/stanfordnlp/dspy. Кстати неплохо разбрано тут "“Answer the question carefully”
Retrieve → Reason → Answerconstraint: output_schema
Используются MIPRO и MIPROv2 (https://dspy.ai/api/optimizers/MIPROv2/):
-
байесовская оптимизация;
-
совместная оптимизация всей цепочки;
-
учёт стоимости токенов.
По сути это компилятор для LLM-программ. Вместе с Opik выходит 9.5 из 10.
Нюанс
Кстати, без граунд тру датасета и метрик с ивалами DSPy превращается в извращенный способ писать промпты. Помните это. Иначе не лучше GigaChat.
APE — Automatic Prompt Engineer
Старая, но попрежнему используемая штука. LLM сама генерирует инструкции, сама же их прогоняет и сама выбирает лучшие. https://arxiv.org/abs/2211.01910
Максимизация лог-правдоподобия правильных ответов:
max_p E_{(x,y)} logP(y | x, p)
Как работает:
-
Генерируется N кандидатов инструкций;
-
Они прогоняются по датасету;
-
Считается метрика;
-
Лучшие идут в следующий раунд
Обычный search + evaluation loop, только вместо параметров текст. Где APE хорош:
-
классификация,
-
извлечение информации,
-
задачи с чёткой автоматической метрикой.
Где ломается:
-
высокая дисперсия,
-
быстрый оверфит,
-
плохой перенос между доменами.
3. Генеративно-эвристические
OPRO — Optimization by PROmpting
Здесь начинается инженерная магия. Мы не оптимизируем промпт напрямую. Мы даём модели историю прошлых попыток:
[prompt₁ → score₁,
prompt₂ → score₂,
prompt₃ → score₃]
и просим предложить следующий, который будет лучше. https://arxiv.org/abs/2309.03409
Фактически in-context learning используется как оптимизатор.
Почему это работает:
-
LLM хорошо улавливают тренды;
-
умеют экстраполировать улучшения;
-
не требуют доступа к логпробам.
Топвая инструкция в свое время
“Take a deep breath and work on this problem step by step”
была найдена именно через OPRO и стабильно обгоняла классический CoT.
Минусы будут:
-
нестабильность;
-
высокая стоимость;
-
нужен жёсткий контроль за репрезентативность.
Где применять
-
reasoning-задачи;
-
математика и логика;
-
когда нет доступа к модели.
4. Самообучающиеся промпты (простенькое)
STaR, ReST
Просто оставлю ссылки, привожу для кругозора, они не работают почти. STaR: https://arxiv.org/abs/2203.14465. ReST: https://arxiv.org/abs/2304.06263
5. Сравнительный обзор
|
Метод |
Датасет |
Метрика |
Стоимость |
Стабильность |
Продакшен |
Когда применять |
|---|---|---|---|---|---|---|
|
APE |
Да |
Да |
Средняя |
Низкая |
Ограниченная |
Простые задачи |
|
OPRO |
Да |
Да |
Высокая |
Низкая |
Низкая |
Reasoning |
|
DSPy |
Да |
Да |
Средняя |
Высокая |
Высокая |
RAG, агенты |
|
MetaPrompt |
Нет |
Нет |
Низкая |
Средняя |
Средняя |
Быстрый буст |
|
HRPO |
Да |
Желательно |
Средняя |
Очень высокая |
Высокая |
Продакшен |
|
GEPA |
Да |
Да |
Очень высокая |
Средняя |
Низкая |
Offline |
|
STaR / ReST |
Да |
Да |
Высокая |
Высокая |
Средняя |
Свои модели |
6. Рецепт как выстрелить себе в ногу
-
Оптимизация без валидации: Самая частая ошибка. Промпт-оптимизаторы (особенно OPRO и APE) находят "хаки" — формулировки, которые работают на тестовом датасете, но ломаются на реальных данных. Всегда имейте отложенную выборку и граунд тру датасет;
-
Дрейф моделей: Промпт, идеально вылизанный под
gpt-4-o, может деградировать наgpt-5.1. Оптимизированные промпты хрупкие. Делайте аля CI/CD для промптов. При смене версии модели запускайте перекомпиляцию/хот реалоад проекта и проверяйте; -
Гниение контекста : В длинных контекстах (например, Gemini 2.5 Pro) оптимизированные инструкции могут теряться. Использовать техники типа цепочек и оптимизировать звенья цепи отдельно помогает лишь частично на данный момент.
7. Почему открыть Google AI Studio и попросить улучшить промпт не работает
Да потому что это не оптимизация, а перефразирование.
В таком режиме LLM:
-
не видит метрики;
-
не знает, что считать успехом;
-
не видит распределения ошибок;
-
не платит за токены!!!!
Она оптимизирует правдоподобие текста, а не качество решения.
Без цикла Generate → Evaluate → Compare → Select улучшения не существует.
Именно поэтому такие промпты:
-
хуже обобщаются;
-
ломаются при смене модели;
-
дороже в продакшене;
-
нравятся авторам телеграм каналов про ИИ.
8. Главная мысль
Переход совершён. Если вы пишете промпты руками в 2026 году — вы занимаетесь кустарным производством в эпоху конвейеров. Используйте готовые фреймворки (DSPy, TextGrad), настраивайте пайплайны оценки и перестаньте гадать на кофейной гуще.
Если делаете ИИ-шку, ну поставьте вы себе prompt-base любой и observability. Есть куча связок вроде Agenta + LLM Studio + Langfuse\Opik.