3,583 papers
arXiv:2508.09378 80 12 авг. 2025 г. FREE

APIO: автоматическое создание и улучшение промптов через список инструкций

КЛЮЧЕВАЯ СУТЬ
Автооптимизация промптов упирается в проблему seed prompt — если начальная версия плохая, никакая оптимизация не спасёт. APIO генерирует промпт из 3-5 примеров ввода-вывода и структурирует как markdown-список инструкций вместо монолитного блока. Каждая строка = отдельная ручка настройки: можешь точечно улучшить (попросить LLM исправить конкретную инструкцию), перефразировать (та же идея другими словами) или переставить (поменять порядок выполнения). Точность на задачах редактирования выше других промптинговых методов, но главное — контроль на уровне отдельных требований.
Адаптировать под запрос

TL;DR

APIO — метод, который создаёт промпт из примеров входа-выхода и затем улучшает его через три операции: Improve (попросить LLM улучшить инструкцию), Rephrase (перефразировать без изменения смысла), Permute (изменить порядок). Ключевая идея — структурировать промпт как markdown-список инструкций, а не как монолитный блок текста. Это даёт контроль на уровне отдельных инструкций.

Обычные методы автоматической оптимизации промптов требуют seed prompt — начальную версию, которую создают вручную. Если промпт написан плохо, оптимизация не поможет. Кроме того, эти методы работают с промптом как с единым блоком текста — невозможно точечно улучшить конкретную часть. APIO решает обе проблемы: генерирует промпт из примеров и структурирует его как список, где каждая строка — отдельная инструкция.

Метод двухшаговый. Шаг 1 (Индукция): LLM смотрит на примеры правильных входов-выходов и выводит список из 3-5 инструкций — одна инструкция из одного примера. Шаг 2 (Оптимизация): метод прогоняет список через beam search с тремя операциями: улучшить инструкцию (показать ошибки и попросить исправить), перефразировать (сохранить смысл, изменить формулировку), переставить (поменять порядок инструкций). Лучшие кандидаты добавляются в пул. Процесс повторяется 15 раз.

🔬

Схема метода

ШАГ 1 (Индукция — один промпт к LLM):
Вход: 3 примера "входной текст → правильный выход"
→ Список из 3 инструкций (одна на примере)

ШАГ 2 (Оптимизация — 15 итераций):
Взять текущий список инструкций
→ Применить три операции:
 • Improve: попросить LLM улучшить каждую инструкцию для снижения ошибок
 • Rephrase: попросить LLM перефразировать каждую инструкцию
 • Permute: случайно поменять местами 2 инструкции
→ Проверить кандидатов на валидации
→ Добавить лучших в пул
→ Повторить

Весь процесс автоматизирован через код, но принципы можно применить вручную в чате.

🚀

Пример применения

Задача: Редактируешь коммерческое предложение для клиента. Текст написал технический специалист — много жаргона, длинные предложения, канцелярит. Нужно сделать понятным для руководителя компании, который не в теме.

Промпт (адаптация APIO вручную):

Я дам тебе текст коммерческого предложения. Твоя задача — переписать его так, 
чтобы он был понятен руководителю компании без технического бэкграунда.

Список инструкций:
- Убери технический жаргон или объясни термины простыми словами
- Разбей длинные предложения на короткие (максимум 15-20 слов)
- Замени канцелярит и пассивные конструкции на активный залог и прямую речь
- Сохрани ключевые цифры, сроки и выгоды для клиента
- Проверь что каждое предложение отвечает на вопрос "зачем это клиенту"

[ТЕКСТ]

После первого прогона попроси улучшить конкретные инструкции:

Твой вывод всё ещё содержит фразы типа "осуществление деятельности" 
и "в рамках реализации". Улучши инструкцию 3 — сделай её жёстче, 
чтобы модель убирала ВСЕ следы канцелярита.

Или перефразируй инструкцию:

Перефразируй инструкцию 2 без изменения смысла. 
Попробуй другую формулировку — может сработает лучше.

Или поменяй порядок:

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

Результат:

Модель выдаст переписанный текст. Если не устроит — итеративно улучшай инструкции. Каждая инструкция в списке — отдельная ручка настройки. Можешь точечно улучшить, перефразировать или переставить конкретную инструкцию, не трогая остальные.

🧠

Почему это работает

Монолитный промпт ("переписать текст понятно для руководителя") даёт модели слишком много свободы. Модель интерпретирует по-своему — может убрать важные детали, добавить лишнее, или не решить ключевую проблему (например, оставить канцелярит).

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

Рычаги управления:

  1. Добавь/убери инструкцию — если результат не устраивает, добавь новое требование или убери лишнее
  2. Перефразируй — та же идея, другими словами → модель может понять лучше
  3. Поменяй порядок — иногда выполнение инструкций в другой последовательности даёт лучший результат
  4. Уточни конкретную инструкцию — например, "убери жаргон" → "убери жаргон или замени на простой аналог в скобках"

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

📋

Шаблон промпта

Я дам тебе {тип_контента}. Твоя задача — {цель_редактирования}.

Список инструкций:
- {инструкция_1}
- {инструкция_2}
- {инструкция_3}
- {инструкция_4}
- {инструкция_5}

[КОНТЕНТ]

Как заполнить:

  • {тип_контента} — что редактируешь (письмо, статья, презентация, пост)
  • {цель_редактирования} — что должно получиться (понятно для ЛПР, без ошибок, в стиле бренда)
  • {инструкция_N} — конкретное требование (одно действие на строку)

Правила хороших инструкций:

  • Одна инструкция = одно действие
  • Конкретно, не абстрактно: ❌ "улучши текст" → ✅ "замени пассивный залог на активный"
  • Измеримо: ❌ "сделай короче" → ✅ "не больше 15 слов на предложение"

🚀 Быстрый старт — вставь в чат:

Вот шаблон APIO для создания промптов через список инструкций. 
Адаптируй под мою задачу: [твоя задача]. 
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит какой контент редактируешь, какая цель, и предложит 5-7 конкретных инструкций под твою задачу. Потом можешь улучшать их итеративно — попросить перефразировать, добавить новую, или поменять порядок.

⚠️

Ограничения

⚠️ Требует примеры: Индукция промпта из примеров работает, если есть 3-5 качественных пар "вход → правильный выход". Без примеров — придётся писать инструкции вручную.

⚠️ Итеративный процесс: Одного прогона может не хватить. Метод предполагает улучшение через несколько итераций — проверил результат, подкрутил инструкцию, проверил снова.

⚠️ Не для всех задач: Метод показал лучшие результаты на задачах редактирования текста (исправление ошибок, упрощение). Для задач классификации или генерации с нуля — может не дать преимущества перед обычным промптом.

⚠️ Уступает файн-тюнингу: На исправлении грамматики APIO дал F0.5 = 59.40, что лучше других промптинговых методов (57.41), но сильно хуже SFT-моделей (72.80). Если нужна максимальная точность — промптинг не заменит обученную модель.

🔍

Как исследовали

Команда взяла два стандартных бенчмарка: BEA-2019 для исправления грамматики (4384 примера в train+dev) и ASSET для упрощения текста (2000 примеров в train+dev). Протестировали на GPT-4o-mini и GPT-4o.

Сначала модель индуцировала промпт из 3 случайных примеров — каждый пример давал одну инструкцию. Запустили 10 попыток, выбрали лучший промпт на валидации.

Потом оптимизировали через 15 итераций: на каждом шаге применяли три операции (Improve, Rephrase, Permute), получали 32 кандидата, брали лучших по метрике (Levenshtein distance на валидации). Добавили penalty за слишком большие изменения — чтобы не улететь далеко от стартового промпта.

Сравнили с baseline: zero-shot (простая инструкция без примеров), few-shot (3 примера в промпте), APIO-индукция-only (без оптимизации). APIO выиграл у всех промптинговых методов на обеих задачах.

Удивительно: метод индукции без оптимизации на GEC показал хуже (38.72), чем даже zero-shot (49.90) на GPT-4o-mini. Но после 15 итераций оптимизации — взлетел до 57.07. Это показывает что оптимизация критична — стартовый промпт может быть слабым, но процесс улучшения вытягивает.

Инсайт для практики: Даже если первая версия промпта не зашла — не бросай. Попробуй перефразировать инструкции или поменять порядок. Иногда небольшая корректировка формулировки даёт скачок в качестве.

📄

Оригинал из исследования

Контекст: Исследователи использовали три meta-prompts для оптимизации. Ниже — промпт для операции Improve, который просит LLM улучшить инструкцию для снижения ошибок.

You are a super-talented prompt engineer. You are working on improvement of the Text
Simplification System.

The System has these Instructions:
- {instruction1}
- {instruction2}
- {instruction3}

Below are the examples of System's work:
Input 1: {input_text_1}
System's Output 1: {output_text_1}
Gold Output 1: {gold_output_text_1}
Error 1 between System's Output 1 and Gold Output 1 for given Input 1: {num1}
different words.

Input 2: {input_text_2}
System's Output 2: {output_text_2}
Gold Output 2: {gold_output_text_2}
Error 2 between System's Output 2 and Gold Output 2 for given Input 2: {num2}
different words.

Mean error for examples 1-2: {ave_num} words.

Suggest new instruction to augment existing instructions forcing the System's
Outputs to be exactly the same as Gold Outputs for the given System's Inputs. You
need to minimize Errors between System's Outputs and Gold Outputs. Put new
instruction between <new_instruction> and  tags. Do not use no
more than two sentences. Do not mention Gold Output. Do not use "newline" symbols in
your answer. Prioritize fixing cases which have larger error (which have more
different words).

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

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

💡

Адаптации и экстраполяции

💡 Адаптация для написания контента под бренд:

Вместо исправления ошибок — используй список инструкций для адаптации стиля под голос бренда.

Я дам тебе черновик поста для Instagram. Твоя задача — переписать в стиле 
бренда [название].

Список инструкций:
- Используй короткие предложения (до 10 слов) и абзацы по 2-3 строки
- Добавь разговорные обороты и риторические вопросы для вовлечения
- Каждый абзац начинай с эмоционального крючка или провокационного утверждения
- Убери официоз и замени на живую речь (не "мы предлагаем", а "попробуй")
- Закончи призывом к действию в форме вопроса или вызова

[ЧЕРНОВИК]

Если результат не зашёл — улучши конкретную инструкцию: "Инструкция 3 не работает — посты всё равно звучат скучно. Переформулируй её жёстче."

🔧 Техника: Замени общие требования на метрики → точнее контроль

Оригинальный APIO использует Levenshtein distance (количество различающихся слов) как метрику для оптимизации. В твоём случае — придумай свою метрику.

Вместо:

- Сделай текст проще

Напиши:

- Разбей предложения длиннее 20 слов. Целевое: 12-15 слов на предложение.

Вместо:

- Убери жаргон

Напиши:

- Замени каждый термин на аналог из списка: [термин → простое слово]. 
 Если аналога нет — объясни термин в скобках одним предложением.

Числовые ограничения и конкретные правила дают модели меньше свободы — она выполняет требования точнее.

🔧 Техника: Тестируй порядок инструкций

APIO использует операцию Permute — случайная перестановка инструкций. Порядок влияет на результат, потому что модель выполняет инструкции последовательно.

Попробуй два варианта:

Вариант 1: Сначала структура, потом стиль

1. Разбей на короткие предложения
2. Убери жаргон
3. Замени канцелярит

Вариант 2: Сначала стиль, потом структура

1. Замени канцелярит
2. Убери жаргон
3. Разбей на короткие предложения

Иногда результат сильно отличается. Если модель сначала упрощает стиль, а потом разбивает предложения — может потерять детали. Если наоборот — сохранит больше информации.

🔗

Ресурсы

APIO: Automatic Prompt Induction and Optimization for Grammatical Error Correction and Text Simplification

Artem Chernodub (Zendesk), Aman Saini, Yejin Huh, Vivek Kulkarni, Vipul Raheja (Grammarly)

Accepted at RANLP 2025 (Recent Advances in Natural Language Processing)

Код и данные: https://github.com/achernodub/apio


📋 Дайджест исследования

Ключевая суть

Автооптимизация промптов упирается в проблему seed prompt — если начальная версия плохая, никакая оптимизация не спасёт. APIO генерирует промпт из 3-5 примеров ввода-вывода и структурирует как markdown-список инструкций вместо монолитного блока. Каждая строка = отдельная ручка настройки: можешь точечно улучшить (попросить LLM исправить конкретную инструкцию), перефразировать (та же идея другими словами) или переставить (поменять порядок выполнения). Точность на задачах редактирования выше других промптинговых методов, но главное — контроль на уровне отдельных требований.

Принцип работы

Не пиши монолитный промпт типа переписать текст понятно для руководителя — модель додумывает и пропускает детали. Разбей на список конкретных инструкций: убери жаргон, разбей предложения до 15 слов, замени канцелярит на активный залог, сохрани цифры и выгоды. Каждая строка = отдельное требование, модель выполняет по порядку. Результат не устроил? Перефразируй слабую инструкцию, добавь новую или поменяй последовательность — не переписывай весь промпт с нуля.

Почему работает

Монолитный промпт даёт модели слишком много свободы — она интерпретирует по-своему, может убрать важные детали или не решить ключевую проблему (например, оставить канцелярит). Список = явная декомпозиция задачи. Каждая инструкция зафиксирована отдельной строкой — модель меньше пропускает требования. Плюс рычаги управления: улучши конкретную инструкцию (покажи ошибки → попроси исправить), перефразируй (та же мысль другими словами — модель может понять иначе), поменяй порядок (иногда последовательность выполнения меняет результат). Исследователи прогоняли через автоматический поиск лучших комбинаций, но ты можешь делать это вручную в чате.

Когда применять

Редактирование текста → коммерческие предложения, статьи, письма клиентам, посты → особенно когда нужен контроль на уровне отдельных требований (не просто 'улучши текст', а 'убери жаргон' + 'разбей на короткие предложения' + 'замени канцелярит' + 'сохрани цифры'). Работает если есть 3-5 качественных примеров 'вход → правильный выход'. НЕ подходит для: задач классификации, генерации с нуля без примеров, когда нужна максимальная точность — дообучение (fine-tuning) даёт F0.5 = 72.80 против 59.40 у APIO. Промптинг не заменит обученную модель в задачах исправления грамматики.

Мини-рецепт

1. Собери 3-5 примеров: пары 'текст до → текст после' — качественные, показывающие что должно получиться
2. Создай список инструкций: одна инструкция = одно действие (убери жаргон, разбей предложения до 15 слов, замени канцелярит и пассив на активный залог)
3. Прогони через модель: вставь шаблон с заголовком задачи + список инструкций + контент, получи результат
4. Улучши итеративно: если не устроило — перефразируй слабую инструкцию ('убери жаргон' → 'убери жаргон или замени на простой аналог в скобках'), добавь новую, поменяй порядок или уточни конкретную ('разбей на короткие' → 'не больше 15 слов на предложение')

Примеры

[ПЛОХО] : Переписать коммерческое предложение понятно для руководителя компании без технического бэкграунда
[ХОРОШО] : Я дам тебе текст коммерческого предложения. Твоя задача — переписать так, чтобы он был понятен руководителю без технического бэкграунда. Список инструкций: - Убери технический жаргон или объясни термины простыми словами; - Разбей длинные предложения на короткие (максимум 15-20 слов); - Замени канцелярит и пассивные конструкции на активный залог и прямую речь; - Сохрани ключевые цифры, сроки и выгоды для клиента; - Проверь что каждое предложение отвечает на вопрос 'зачем это клиенту'. [ТЕКСТ] После первого прогона улучшаешь точечно: Твой вывод всё ещё содержит фразы типа 'осуществление деятельности' и 'в рамках реализации'. Улучши инструкцию 3 — сделай её жёстче, чтобы модель убирала ВСЕ следы канцелярита.
Источник: APIO: Automatic Prompt Induction and Optimization for Grammatical Error Correction and Text Simplification
ArXiv ID: 2508.09378 | Сгенерировано: 2026-01-12 02:03

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с