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