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


