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

Однако на западном и восточном сегментах довольно достаточно обсуждений. Надо бы исправить! В этом посте мы говорим об автопромптинге.

Историческая справка (на 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).

Если вкратце, про что автопромтинг:

  • Выявить новые паттерны инструкций при созда��ии

  • Быстрее и дешевле повысить метрики, чем дообучать модель

  • Оптимизировать и удешевить работу промпт‑инженеров, сэкономив время поиска и вычислительные ресурсы

  • Зачастую не является альтернативой дообучения, а скорее как следующий уровень промптинга и дополнение к промпт‑инжинирингу

Само направление автопромптинга достаточно велико, а методы оптимизации могут быть разными. Оптимизацию промпта можно выделить по двум аспектам:

  1. Области поиска промпта

  2. Методы оптимизации

Пройдемся по каждому аспекту.

Области поиска промпта

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

Область поиска дискретных данных подразумевает поиск комбинаций интерпретируемых человеком элементов (предложений, слов или токенов). Она напрямую связана с текущими техниками промптинга и является распространенным типом поиска для ручного промпт‑инжиниринга. В ходе поиска по дискретным данным перебираются комбинации: инструкций задач, примеры вопрос‑ответов (Few‑shot), форматы ответов, триггер рассуждений (как в Chain‑of‑Thoughts) и другое.

Помимо отдельных элементов можно искать в разрезе непрерывных данных или обучаемых эмбеддингов токенов, которые встраивается вместе с основным промптом (К примеру, использование soft prompts (мягкие промпты) в prompt‑tuning или в этом исследовании). Под поиском в гибридных данных подразумевается поиск дискретных совместно с непрерывными данными, к примеру применимо для мультимодальных моделей.

Методы оптимизации с примерами алгоритмов

Автопромптинг я выделяю на следующие типы:

  1. Gradient‑Based

  2. LLM‑Based

  3. Evolutionary‑Based

  4. 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).

Делитесь вашим мнением, что думаете насче�� этой темы. Надеюсь, данный пост даст вам основную информацию, интерес и понимание касательно автоматической оптимизации промптов.