3,583 papers
arXiv:2510.09009 83 10 окт. 2025 г. FREE

Promptimizer: структурные промпты для персональной классификации контента

КЛЮЧЕВАЯ СУТЬ
Автооптимизация промптов ломается к 3-4 итерации. Алгоритмы типа ProTeGi берут случайные ошибки, просят LLM переписать промпт как хочет — получается стена текста с повторами и встроенными примерами. Пользователь не понимает логику и не может исправить. Promptimizer решает это через прозрачные персональные фильтры: каждое правило классификации видно и можно точечно улучшить. Фишка: промпт разбит на блоки (описание + положительные рубрики + отрицательные рубрики + 4 примера). LLM не переписывает всё, а делает целевую правку к конкретной рубрике — добавить или отредактировать одно правило под конкретную ошибку.
Адаптировать под запрос

TL;DR

Promptimizer — методология создания персональных фильтров контента через структурированные промпты и итеративное уточнение. Вместо одного описания задачи используется трёхчастная структура: общее описание + положительные рубрики (что ловить) + отрицательные рубрики (что пропускать) + 4 примера. LLM делает целевые правки к конкретным рубрикам вместо переписывания всего промпта.

Главная находка: автоматическая оптимизация промптов создаёт нечитаемую кашу. Алгоритмы типа ProTeGi берут случайные ошибки, просят LLM переписать промпт в свободной форме — получается длинный непрозрачный текст. Пользователь не понимает почему фильтр так работает и не может его исправить. При накоплении итераций промпт превращается в стену текста с повторами и переусложнениями.

Метод решает это через ограниченные правки: LLM может только добавить рубрику или отредактировать существующую. Не переписать весь промпт, а точечно улучшить конкретное правило. Пользователь объясняет почему конкретная ошибка произошла → LLM генерирует 2-4 варианта правки под эту проблему → пользователь выбирает лучший. Структура сохраняется, изменения понятны.


🔬

Схема метода

ИНИЦИАЛИЗАЦИЯ (один промпт):

1. Опиши задачу в общих чертах
2. LLM генерирует черновик: [описание] + [positive rubrics] + [negative rubrics]
3. Размечай 20 "интересных" примеров (где LLM неуверен)
4. LLM уточняет рубрики на основе меток
→ Структурированный промпт готов

ИТЕРАЦИЯ (несколько запросов):

ШАГ 1: Найди ошибку классификации
ШАГ 2: Объясни ПОЧЕМУ это ошибка (или выбери из вариантов LLM)
ШАГ 3: LLM генерирует 2-4 целевых правки (только к рубрикам, не весь промпт)
ШАГ 4: Выбери лучшую правку
→ Обновлённый промпт с понятными изменениями

ПРИМЕНЕНИЕ (5 запросов для каждой классификации):

Один комментарий/текст → прогони 5 раз с разным порядком в батче
→ Собери голоса → используй большинство
→ Консистентный результат + мера уверенности

🚀

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

Задача: Ты фильтруешь комментарии в своём Telegram-канале про стартапы. Хочешь выделять конструктивную критику — не просто "всё плохо", а аргументированные разборы с альтернативами.

Промпт (инициализация):

Ты классифицируешь комментарии в канале про стартапы.

ОБЩЕЕ ОПИСАНИЕ:
Комментарии с конструктивной критикой — где человек не просто ругает, 
а объясняет ЧТО не работает и КАК можно было бы сделать иначе.

ПОЛОЖИТЕЛЬНЫЕ РУБРИКИ (ловить):
- Указывает конкретные проблемы с обоснованием
- Предлагает альтернативное решение или подход
- Ссылается на опыт, данные, кейсы в обоснование

ОТРИЦАТЕЛЬНЫЕ РУБРИКИ (не ловить):
- Просто "плохая идея", "не взлетит" без объяснений
- Общие фразы типа "надо думать головой"
- Личные нападки вместо разбора сути

ПРИМЕРЫ:
[4 размеченных комментария с метками ЛОВИТЬ/НЕ ЛОВИТЬ]

Классифицируй комментарий: [текст]
Ответь: ЛОВИТЬ или НЕ ЛОВИТЬ

Итерация после ошибки:

Фильтр пропустил: "Идея сырая, но если добавить монетизацию через подписку вместо рекламы, 
зайдёт. Вот пример как это делает Notion."

Почему это ошибка: Здесь есть конкретное предложение (подписка вместо рекламы) с примером. 
Это конструктивная критика, хоть и написано коротко. "Сырая" — это оценка, но дальше идёт решение.

LLM сгенерирует правки к рубрикам:
→ Вариант 1: Добавить в положительные: "Краткое конкретное предложение с примером из практики"
→ Вариант 2: Уточнить в положительных: "Предлагает альтернативу → включая краткие форматы с кейсами"

Выбираешь Вариант 1 → рубрика добавлена → промпт обновлён.

Результат: Каждая итерация добавляет или уточняет одну рубрику. Ты видишь что изменилось и почему. После 3-5 правок промпт точно отражает твоё понимание "конструктивной критики" — и ты можешь объяснить каждое правило.


🧠

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

Слабость LLM: Автоматическая оптимизация промптов даёт нечитаемые результаты. Алгоритмы берут случайные ошибки и просят LLM переписать промпт как хочет. Получается: длинные описания, дублирование, встраивание всех ошибок как примеров. После 3-4 раундов промпт превращается в стену текста — пользователь не понимает логику и не может исправить.

Сильная сторона LLM: Модель отлично делает целевые правки к структурированному тексту, если объяснить проблему. Вместо "придумай новый промпт" — "вот ошибка X, вот почему она произошла, добавь правило чтобы это учесть". LLM генерирует точечную правку, не ломая структуру.

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

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

  • Количество примеров: 4 оптимально (больше = менее читаемо, незначительный прирост точности). Можешь добавить 5-6 для сложной задачи.
  • Majority voting (5 запросов): Дорого, но даёт консистентность. Для экономии используй только на финальной версии фильтра. Для черновика — один запрос.
  • Тип правок: Если видишь что отрицательная рубрика слишком широкая — уточни её вместо добавления новой. Меньше рубрик = понятнее промпт.
  • Объяснение ошибок: Чем точнее опишешь ПОЧЕМУ ошибка — тем целевее будет правка. "Это не конструктивно" → расплывчатая правка. "Здесь есть решение + кейс, но нет объяснения проблемы — это граница" → чёткая правка.

📋

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

Ты классифицируешь {тип контента: комментарии/письма/посты}.

ОБЩЕЕ ОПИСАНИЕ:
{Задача в общих чертах — что ловить, зачем}

ПОЛОЖИТЕЛЬНЫЕ РУБРИКИ (ловить):
- {Конкретный признак 1}
- {Конкретный признак 2}
- {Конкретный признак 3}

ОТРИЦАТЕЛЬНЫЕ РУБРИКИ (не ловить):
- {Анти-признак 1 — что похоже, но не то}
- {Анти-признак 2}
- {Анти-признак 3}

ПРИМЕРЫ:
1. Текст: "{пример 1}" → ЛОВИТЬ, потому что {причина}
2. Текст: "{пример 2}" → НЕ ЛОВИТЬ, потому что {причина}
3. Текст: "{пример 3}" → ЛОВИТЬ, потому что {причина}
4. Текст: "{пример 4}" → НЕ ЛОВИТЬ, потому что {причина}

Классифицируй:
Текст: "{текст для классификации}"

Ответь: ЛОВИТЬ или НЕ ЛОВИТЬ
Объяснение: {краткое обоснование}

Заполни:

  • {тип контента} — что фильтруешь (комментарии в Telegram, письма клиентов, посты в соцсетях)
  • {задача} — что ловить (токсичные комментарии, лиды с высоким чеком, инсайты от аудитории)
  • {конкретный признак} — объективные критерии (упоминает цифры, содержит вопрос, ссылается на кейс)
  • {анти-признак} — похожее но не то (просто жалоба vs конструктивная критика)
  • {примеры} — 4 реальных примера с объяснением решения

После первого запуска:

  1. Найди ошибку классификации
  2. Объясни почему это ошибка: "Текст X классифицирован как НЕ ЛОВИТЬ, но здесь есть {признак}. Это {граничный случай / чёткое попадание}, потому что {причина}."
  3. Попроси правку: "Дополни ПОЛОЖИТЕЛЬНЫЕ РУБРИКИ чтобы ловить такие случаи" или "Уточни рубрику '{название}' чтобы исключить ложные срабатывания"
  4. LLM предложит 2-4 варианта — выбери лучший
  5. Обнови промпт с новой рубрикой

Для консистентности (опционально, дорого):

Прогони этот промпт 5 раз на одном тексте.
Посчитай голоса: сколько раз "ЛОВИТЬ" vs "НЕ ЛОВИТЬ".
Используй решение большинства.

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

Вот шаблон для создания персонального фильтра контента. Адаптируй под мою задачу: {твоя задача — что фильтруешь и зачем}.

Сначала спроси меня:
- Какой контент фильтрую (комментарии, письма, посты)?
- Что хочу ловить — в общих чертах?
- Есть ли примеры того что точно надо ловить и что точно не надо?

Потом сгенерируй черновик промпта по структуре:
[вставить шаблон выше]

После этого предложи мне 10-15 граничных примеров для разметки — случаи где непонятно ловить или нет. На основе моих меток уточни рубрики.

LLM спросит про тип контента, цель фильтра и граничные случаи — чтобы создать релевантные рубрики и примеры. Она возьмёт структуру из шаблона (описание + positive/negative rubrics + 4 examples) и подставит твои данные.


⚠️

Ограничения

⚠️ Стоимость: Majority voting требует 5 запросов на каждую классификацию. Для 100 комментариев = 500 запросов. Используй на финальной версии фильтра, не на черновике. Для быстрой проверки — один запрос достаточно.

⚠️ Нужна дисциплина: Метод требует методичности — найти ошибку, объяснить, попросить правку, выбрать вариант. Не "волшебная кнопка", а итеративный процесс. 3-5 правок обычно достаточно для стабильного фильтра.

⚠️ Субъективные задачи: Работает для задач с относительно чёткими критериями ("конструктивная критика", "упоминание цены", "вопрос про функционал"). Для сильно субъективного ("интересный пост", "креативная идея") — критерии размыты, рубрики помогают слабо.

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


🔍

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

Команда создала систему Puffin для YouTube-креаторов — фильтрация комментариев на видео. Сравнивали два подхода: Promptimizer (human-in-the-loop) против ProTeGi (автоматическая оптимизация).

Лабораторный эксперимент (16 человек): Участники создавали фильтры для двух тем — политические комментарии (модерация) и культурный опыт в еде (курация). Сначала размечали 20 примеров, потом делали 3 итерации каждым методом. Результаты измеряли на отдельных 100 комментариях, которые участники сами разметили как ground truth.

Находка: Точность (accuracy, F1) сравнима в обоих методах — 63-64% на тестовых данных. НО все 16 участников единогласно предпочли Promptimizer для итераций. Почему? Автоматический метод делал непрозрачные правки — участники видели только итоговый промпт, не понимали логику изменений. В Promptimizer участники выбирали какую ошибку исправлять (точность vs полнота), видели почему предложена правка, понимали что изменилось в рубриках.

Полевое исследование (10 YouTube-креаторов, 3 недели): Авторы каналов от 500 до 1 млн подписчиков использовали Puffin для реальных комментариев. Создавали фильтры типа "инсайты аудитории", "конструктивная критика", "токсичные атаки". Успех — 6 из 10 продолжили использовать после исследования.

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

лама"). Автоматическая оптимизация игнорирует эту эволюцию — тупо минимизирует ошибки на начальных метках. Promptimizer даёт контроль — пользователь выбирает какие ошибки важнее, как их исправить.


🔗

Ресурсы

Promptimizer: User-Led Prompt Optimization for Personal Content Classification — Leijie Wang, Kathryn Yurechko, Amy X. Zhang (University of Washington, University of Oxford). Опубликовано в CHI'25.


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

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

Автооптимизация промптов ломается к 3-4 итерации. Алгоритмы типа ProTeGi берут случайные ошибки, просят LLM переписать промпт как хочет — получается стена текста с повторами и встроенными примерами. Пользователь не понимает логику и не может исправить. Promptimizer решает это через прозрачные персональные фильтры: каждое правило классификации видно и можно точечно улучшить. Фишка: промпт разбит на блоки (описание + положительные рубрики + отрицательные рубрики + 4 примера). LLM не переписывает всё, а делает целевую правку к конкретной рубрике — добавить или отредактировать одно правило под конкретную ошибку.

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

Итеративный процесс с ограниченными правками. Нашёл ошибку классификации → объяснил ПОЧЕМУ это ошибка (не просто "неправильно", а "здесь есть признак X, но фильтр пропустил потому что Y") → LLM сгенерирует 2-4 варианта правки → выбираешь лучший → обновляется конкретная рубрика. Структура ограничивает действия LLM четырьмя типами: добавить положительную рубрику, добавить отрицательную, отредактировать существующую положительную, отредактировать существующую отрицательную. Не "придумай новый промпт", а "вот ошибка, допиши правило чтобы её учесть". Изменения прозрачны — видишь что добавилось и зачем.

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

LLM отлично делает целевые правки к структурированному тексту если объяснить проблему, но плохо генерирует с нуля не теряя читаемость. Автооптимизация даёт свободу — модель добавляет длинные описания, дублирует правила, встраивает все ошибки как примеры. Каждая правка целевая — под конкретную ошибку с объяснением "почему". Вместо "улучши промпт" (размытый запрос) → "вот текст X классифицирован неправильно, здесь есть признак Y но нет правила, добавь рубрику" (чёткий запрос). Структура из блоков работает как каркас — LLM не может развалить логику, только достроить. После 10+ итераций промпт остаётся читаемым потому что каждое изменение — одна строчка в конкретном месте.

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

Персональная классификация контента → конкретно для фильтрации комментариев, писем клиентов, постов в соцсетях с размытыми критериями ("конструктивная критика vs просто ругань", "лид с потенциалом vs спам", "инсайт от аудитории vs общие фразы"), особенно когда нужна прозрачность правил — понимать почему фильтр так работает и иметь возможность исправить. НЕ подходит для простых фильтров по ключевым словам ("упоминает Python", "содержит цену") — структура избыточна. Не подходит для сильно субъективных задач где критерии размыты даже для человека ("интересный пост", "креативная идея").

Мини-рецепт

1. Инициализация (один раз): Опиши задачу в общих чертах → LLM сгенерирует черновик структуры: [общее описание] + [положительные рубрики: что ловить] + [отрицательные рубрики: что пропускать] + [4 примера] → размечай 20 граничных случаев (где LLM неуверена) → LLM уточнит рубрики на основе твоих меток.

2. Итерация (по мере нахождения ошибок): Найди ошибку классификации → объясни ПОЧЕМУ это ошибка: "Текст X классифицирован как НЕ ЛОВИТЬ, но здесь есть [признак]. Это [граничный случай/чёткое попадание] потому что [причина]" → LLM предложит 2-4 целевых правки к конкретным рубрикам → выбери лучшую → обнови промпт с новой или уточнённой рубрикой.

3. Применение (для консистентности, опционально): Прогони промпт 5 раз на одном тексте с разным порядком в батче → собери голоса: сколько "ЛОВИТЬ" vs "НЕ ЛОВИТЬ" → используй решение большинства → получишь консистентный результат + меру уверенности. Дорого (5 запросов на каждую классификацию), используй на финальной версии фильтра.

Примеры

[ПЛОХО] : Классифицируй комментарии на конструктивную критику и не конструктивную
[ХОРОШО] : Ты классифицируешь комментарии в канале про стартапы. ОБЩЕЕ ОПИСАНИЕ: Конструктивная критика — где человек не просто ругает, а объясняет ЧТО не работает и КАК можно сделать иначе. ПОЛОЖИТЕЛЬНЫЕ РУБРИКИ (ловить): - Указывает конкретные проблемы с обоснованием - Предлагает альтернативное решение или подход - Ссылается на опыт, данные, кейсы в обоснование ОТРИЦАТЕЛЬНЫЕ РУБРИКИ (не ловить): - Просто "плохая идея", "не взлетит" без объяснений - Общие фразы типа "надо думать головой" - Личные нападки вместо разбора сути ПРИМЕРЫ: [4 размеченных комментария] Классифицируй: [текст] После ошибки (фильтр пропустил конструктивный комментарий): "Идея сырая, но если добавить подписку вместо рекламы, зайдёт. Вот пример Notion." → Почему ошибка: здесь есть конкретное предложение с примером, это конструктивно хоть и коротко → LLM добавит в положительные: "Краткое конкретное предложение с примером из практики"
Источник: Promptimizer: User-Led Prompt Optimization for Personal Content Classification
ArXiv ID: 2510.09009 | Сгенерировано: 2026-01-11 23:40

Методы

МетодСуть
Структурированный промпт с рубриками для классификацииРаздели промпт на блоки: общее описание + список позитивных признаков (что ловить) + список негативных признаков (что пропускать) + 4 примера с объяснениями. Когда нужна правка — не переписывай весь промпт. Добавь или отредактируй одну рубрику под конкретную ошибку. Почему работает: Структура сохраняется, изменения прозрачны. Ты видишь что изменилось и почему. После 3-5 правок промпт точно отражает твои критерии. Шаблон: ОБЩЕЕ ОПИСАНИЕ: {задача} ПОЗИТИВНЫЕ РУБРИКИ: - {признак 1} - {признак 2} НЕГАТИВНЫЕ РУБРИКИ: - {анти-признак 1} - {анти-признак 2} ПРИМЕРЫ: 1. "{текст}" ЛОВИТЬ, потому что {причина} Когда применять: сложная классификация с размытыми границами (конструктивная критика vs просто жалоба, лид vs спам). Когда не работает: простые фильтры по ключевым словам, сильно субъективные оценки без чётких критериев
📖 Простыми словами

Promptimizer: структурные промпты для персональной классификации контента

arXiv: 2510.09009

Суть Promptimizer в том, что классические промпты — это рыхлая куча текста, которую невозможно нормально чинить. Когда ты просишь нейронку «отфильтруй мне годноту», она либо мажет, либо после твоих правок превращает инструкцию в нечитаемую стену бреда. Исследователи поняли: чтобы AI работал как четкий фильтр, промпт должен быть не сочинением, а жестким каркасом из трех частей: общая цель, список того, что мы ищем, и список того, что мы баним. Это превращает хаос в понятную таблицу правил, где каждая правка бьет точно в цель, а не ломает всё остальное.

Это как нанимать вышибалу в элитный клуб. Если ты просто скажешь ему: «пускай только приличных», он начнет тупить и не пустит твоего лучшего друга в кедах. Вместо этого ты даешь ему четкий чек-лист: позитив (костюм, вежливая речь), негатив (спортивки, перегар) и пару фоток для примера. Если он ошибся, ты не переписываешь всю инструкцию, а просто добавляешь пункт: «кеды за 1000 баксов — это ок». В итоге вышибала умнеет, а правила остаются понятными, а не превращаются в пятитомник философии.

Метод работает через структурированное уточнение: ты даешь общую задачу, а LLM сама нарезает её на рубрики. Главная фишка здесь — работа с «серыми зонами». Ты размечаешь всего пару десятков примеров, в которых нейронка сомневается, и она точечно правит конкретную рубрику, а не перелопачивает весь текст. Если ты фильтруешь комменты в канале и хочешь видеть только критику, система создаст правило конструктив (есть аргументы и цифры) и правило хейт (просто переход на личности), а потом будет шлифовать их по отдельности, пока точность не станет идеальной.

Тестировали это на личных фильтрах контента, но принцип универсален для любой классификации, где важна точность и контроль. Это применимо для сортировки почты, модерации сообществ или отбора резюме — везде, где стандартный промпт начинает «плыть» после второй правки. Вместо того чтобы надеяться на магию AI, ты создаешь модульную систему, которую легко проверить глазами и подкрутить отверткой в нужном месте. SEO-подход к промптам умирает, на смену приходит инженерная структура.

Главный вывод: хватит писать промпты как письма бабушке, пора переходить на рубрикатор и итерации. Если твой промпт длиннее экрана и ты боишься в нем что-то менять, чтобы всё не развалилось — ты делаешь это неправильно. Используй схему «цель + рубрики + примеры», прогоняй через спорные случаи и правь только то, что сломалось. Это единственный способ получить предсказуемый результат и не сойти с ума от галлюцинаций и бесконечных правок.

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

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

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