Всем привет! Интересно, что на Хабре статьи по этой теме я не смог найти.

Однако на западном и восточном сегментах довольно достаточно обсуждений. Надо бы исправить! В этом посте мы говорим об автопромптинге.
Историческая справка (на 30 секунд, максимум 1 минуту)
В 2018 году появляется новый тип архитектуры нейронной сети — трансформеры, о которых многие имеют представления и с ними работают. С их последующим развитием также эволюционируют методы дообучения (адаптеры, LoRA, prompt‑tuning) и методы взаимодействия с этими моделями через изменение входной последовательности запроса (он же промпт или инструкция). Причины эволюции взаимодействия произошло из растущего кол‑ва и сложности решаемых NLP задач, следовательно, увеличивается необходимость в разделении и детализации задачи. В 2020 году выходит GPT-3 от OpenAI — она же большая языковая модель (LLM), которая укрепила эту необходимость, способностью выполнять различные задачи по текстовой инструкции.
Впоследствии появляется отдельная исследовательская область — промпт‑инжиниринг, в которой специалисты этой области (промпт‑инженеры) подбирают и формируют такой запрос, чтобы модель дала максимально лучший и точный ответ. В ходе исследования работы с запросами в передовых компаниях, как (OpenAI, Google, Anthropic и т. д.) появляются отдельные штаты сотрудников по работе с промптами, публикуются первые статьи и систематические гайды по техникам промптинга (Few‑shot, Chain‑of‑Thought, Self‑Consistency), которые повышают качество ответа.
Ручной промпт-инжиниринг
На сегодняшний момент промпт‑инжиниринг широко применим для:
Прямой формализации задачи к LLM
(Полу‑)автоматического составления разметки в дообучении
Формализации оценки качества ответа с помощью той же LLM
Агентных систем
В раннем посте я рассказывал о разных техниках промптинга и о том, как составляются промпты — эти и подобные новые техники применяют промпт‑инженеры в своей работе, как отдельную составляющую. Помимо техник есть и другие составляющие промпта, которые формируются: формализация задачи, роль модели, стиль и формат текста, структура инструкции, формат и ограничения в ответе модели.
Каждую составляющую инструкции можно описать разными словами (например, в этом посте от МТС можно ознакомиться с описанием труда промпт‑инженера и оценить объемы для себя такой работы).
От этого появляется первая проблема — перебор разных комбинаций каждой составляющей части промпта с целью получения наилучшего ответа трудоемок.
Составить набор хороших комбинаций требует наличие экспертизы, знаний техник и опыта ds‑специалиста в промптинге, что значительно повышает порог вхождения по написанию эффективных промптов. К текущему моменту кол‑во техник промптинга достаточно велико (ссылка на обзор техник промптинга) и будет увеличиваться.
Ручной перебор или переборы с помощью сетки или брутфорса отнимают огромное кол‑во времени в рамках решения одной задачи, в частности, с ростом кол-ва кандидатов промптов.
LLM обрабатывают текст как последовательности токенов и статистические паттерны. Несмотря на то, что текущие LLM обучаются на человеческих текстовых данных, эффективность промпта также определяется следующими сигналами: формат ввода и вывода, расположение примеров, ключевые триггерные слова и токены, отсутствие излишних токенов и слов, тем самым преуменьшая значимость семантической ясности содержания и повествования для человека.
Появляется вторая проблема — чувствительность к формату ввода, при которой незначительные синтаксические вариации (например, изменения в пунктуации или формулировках команд) приводят к колебаниям производительности.
Более того, эффективный промпт может игнорировать человеческую интерпретацию инструкции, как показали исследования тут и тут.
Третья проблема — применяемость одних и тех же промптов не приводит к гарантированному результату, а также присутствует неспособность адаптироваться к меняющимся условиям задачи.
Для устранения данных проблем стало актуально направление автоматической оптимизации промпта — он же автопромптинг.
Автопромптинг
Автопромтинг — это автоматическая оптимизация промпта путем исследования комбинаторных пространств инструкций с использованием различных методов оптимизаций. Первые алгоритмы автопромптинга появились в 2020-х годах, где одним из методов был (как ни странно) AutoPrompt. На текущий момент автопромптинг применим для различных NLP задач, а также для мультимодальных моделей (как VLM).
Если вкратце, про что автопромтинг:
Выявить новые паттерны инструкций при созда��ии
Быстрее и дешевле повысить метрики, чем дообучать модель
Оптимизировать и удешевить работу промпт‑инженеров, сэкономив время поиска и вычислительные ресурсы
Зачастую не является альтернативой дообучения, а скорее как следующий уровень промптинга и дополнение к промпт‑инжинирингу
Само направление автопромптинга достаточно велико, а методы оптимизации могут быть разными. Оптимизацию промпта можно выделить по двум аспектам:
Области поиска промпта
Методы оптимизации
Пройдемся по каждому аспекту.
Области поиска промпта
Области поиска можно разделить по следующим типам данных: дискретные, непрерывные и гибридные.
Область поиска дискретных данных подразумевает поиск комбинаций интерпретируемых человеком элементов (предложений, слов или токенов). Она напрямую связана с текущими техниками промптинга и является распространенным типом поиска для ручного промпт‑инжиниринга. В ходе поиска по дискретным данным перебираются комбинации: инструкций задач, примеры вопрос‑ответов (Few‑shot), форматы ответов, триггер рассуждений (как в Chain‑of‑Thoughts) и другое.
Помимо отдельных элементов можно искать в разрезе непрерывных данных или обучаемых эмбеддингов токенов, которые встраивается вместе с основным промптом (К примеру, использование soft prompts (мягкие промпты) в prompt‑tuning или в этом исследовании). Под поиском в гибридных данных подразумевается поиск дискретных совместно с непрерывными данными, к примеру применимо для мультимодальных моделей.
Методы оптимизации с примерами алгоритмов
Автопромптинг я выделяю на следующие типы:
Gradient‑Based
LLM‑Based
Evolutionary‑Based
Reinforcement Learning‑Based
Gradient-Based
Оптимизация градиентов — это классические принципы оптимизации, которые применимы в оптимизации непрерывных данных. Методы данной оптимизации либо аппроксимируют градиенты для навигации в дискретных пространствах (как в автопромптинг алгоритмах AutoPrompt, HPME, ZOPO), либо оптимизируют непрерывные параметры в контексте мягких подсказок (Prompt‑tuning, Prefix‑tuning, P‑tuning).
LLM-Based
В связи со способностями больших языковых моделей решать сложные задачи по инструкции, их использование для оптимизации промпта продемонстрировало высокую эффективность и конкурентоспособность с промптами составленными экспертами. В основном, используются на дискретных областях поиска.
Из ключевых идей как и с чем использовать LLM:
Мета‑промпты — это дополнительные промпты для определения шагов оптимизации. В качестве мета‑промптов можно определить промпты‑рассуждения, промпты для суммаризации, промпты памяти для мемоизации предыдущих этапов и результатов оптимизации, а также промпты‑критики для самоанализа ошибок на некорректных ответах. Такие промпты могут быть составлены не только заранее вручную, но и генерироваться автоматически с помощью LLM. Примеры автопромптинг методов, которые используют мета‑промпты: OPRO, iPrompt, ProteGi, AutoHint.
Поиск и планирование кандидатов используется LLM для создании кандидатов и отбора промптов, генерируемых моделью. Используется в таких подходах как APE, AMPO и OPT2I (для text2image).
Evolutionary-Based
Эволюционные методы моделируют оптимизацию генетического или эволюционного процесса. Основные этапы такого процесса как отбор, кроссинговер (скрещивание) и мутация — рассматривают популяцию промптов с целью получения более эффективного с точки зрения задачи промпта в дискретных оперативных пространств.
Из основных идей используются:
Самореференциальная эволюция используется LLM для определения промптов для генерации различных кандидатов, мутаций и кроссинговера. Также могут использоваться дополнительные эвристики или эвристические модели. Пример автопромтинг алгоритмов: PromptBreeder, EvoPrompt.
Генетический алгоритм на основе эвристик в чистом виде использует в дополнительные эвристики или эвристические модели и промпты на каждом из этапов, на основе которого есть такие автопромптинг алгоритмы как Grips, LongPO и PhaseEvo
RL-Based
Методы RL‑обучения с подкреплением преобразуют дизайн промптов в задачу RL, где ключевой идеей состоит в том, чтобы сформулировать цель оптимизации как марковский процесс принятия решений, где частичные или повторяющиеся оперативные изменения представляют собой действия, а целевая метрика задачи служит непосредственно вознаграждением.
Данные методы активно используются в GenAI и в частности в автопромптинге, в котором представлены следующие алгоритмы: TEMPERA, Prompt‑OIRL, PRewrite, StablePrompt, PromptAgent и RLPrompt.
Дальнейшее исследование автопромптинга
Это не все алгоритмы автопромптинга, которые я привел, еще больше примеров можно найти в открытых источниках. Несмотря на такое большое разнообразие автопромптинга на текущий момент стоят актуальные направления исследования:
Интерпретируемость vs эффективность промпта: есть различные примеры алгоритмов автопромптинга, в которых интерпретация промпта как важна, так и нет — и на текущий момент нет точного ответа, насколько действительно эффективный промпт должен быть человекочитаемым. В дальнейшем это может определить новые направления развития оптимизации промпта.
Мультимодальность: Многие работы сосредоточены на текстовых задачах, оптимизация промпта с другими модальностями как изображения, аудио и видео гораздо менее изучена.
Real‑time автопромптинг: Перечисленные в посте методы и многие другие работают в оффлайн режиме и для оптимизации требуется определенное кол‑во времени. Однако, в дальнейшем может произойти рост потребности автоматической оптимизации со стабильной производительности при высоких нагрузках приложений и систем. Помимо этого, с real‑time автопромтингом появится возможность собирать обратную связь от пользователей.
Многоцелевая оптимизация: Получаемые автопромтингом промпты зачастую оптимизируются под конкретную задачу, однако, в качестве цели можно задать поиск паттернов к созданию многоцелевого промпта, которые можно было бы применять на многие задачи без изменения самой инструкции.
В будущем мы увидим новые алгоритмы автопромптинга, которые покроют направления выше. На мой взгляд, тема автопромптинга очень актуальна и будет как таковой, пока большие foundation модели не будут понимать нас «с полуслова» (пока не наступит AGI).
Делитесь вашим мнением, что думаете насче�� этой темы. Надеюсь, данный пост даст вам основную информацию, интерес и понимание касательно автоматической оптимизации промптов.