TL;DR
OOPrompt — подход, при котором промпт разбивается на именованные свойства (цель, аудитория, тон, формат, ограничения) вместо одного текстового блока. Каждое свойство можно редактировать независимо, не трогая остальные.
Типичная боль: написал большой промпт, получил не то, начинаешь переписывать всё заново — и случайно ломаешь то, что работало. Или нужен тот же текст, но для другой аудитории — снова пишешь почти то же самое с нуля. Проблема в том, что промпт как монолит: вытащить одну деталь и поправить, не задев остальное, практически невозможно.
OOPrompt решает это через декомпозицию: промпт — не абзац, а набор слотов. Заполнил слоты → получил результат. Нужно поменять аудиторию — меняешь один слот. Нужен другой тон — меняешь другой. Остальное не трогаешь.
Схема метода
ШАГ 1: Разбей задачу на свойства → именованные блоки (цель / аудитория / тон / формат / ограничения)
ШАГ 2: Заполни каждый блок отдельно → модульный промпт
ШАГ 3: Отправь в LLM → получи результат
ШАГ 4 (итерация): Измени один блок → отправь снова → сравни
Все шаги выполняются в одном диалоге. Шаг 4 повторяется сколько угодно раз.
Пример применения
Задача: Павел Дуров написал новый пост о свободе слова. Нужно сделать разбор для трёх аудиторий: читателей Telegram-канала о технологиях, HR-специалистов и студентов журфака — с разными акцентами, но на базе одного анализа.
Промпт:
Я работаю с текстом модульно. Вот мои свойства:
**Материал:** Пост Павла Дурова о свободе слова и давлении государств на платформы.
[вставь текст или краткое содержание]
**Задача:** Сделай разбор позиции автора — аргументы, слабые места, контекст.
**Аудитория:** Читатели Telegram-канала о технологиях и интернет-культуре.
**Тон:** Аналитический, без восхищения и без осуждения. Факты + интерпретация.
**Формат:** 4-5 абзацев. Без списков. Подходит для публикации в канале.
**Ограничения:** Не пересказывай пост целиком. Не давай оценок личности автора.
**Приоритет:** Сначала — суть позиции, потом — почему это важно именно сейчас.
Собери финальный текст из этих свойств.
После получения результата — минимальное изменение для следующей версии:
Измени только свойство **Аудитория** на: HR-специалисты крупных компаний.
Измени **Приоритет** на: акцент на корпоративные риски при использовании мессенджеров.
Остальное — без изменений.
Результат: Первый запрос выдаст готовый текст для канала. Второй запрос — переработку под HR с теми же фактами, но другим углом. Не нужно ничего переписывать заново — только менять нужный слот.
Почему это работает
Когда пишешь промпт одним текстом, несколько намерений перемешиваются: цель, тон, аудитория, ограничения — всё в одной каше. Модель вынуждена сама угадывать приоритеты. Иногда угадывает, иногда нет.
Именованные свойства убирают эту двусмысленность. Модель получает чёткую структуру: вот задача, вот ограничения, вот формат. Каждый блок однозначен. Конфликтов между частями промпта меньше — результат точнее.
Главный выигрыш — в итерации. Вместо "давай попробуем по-другому" и переписывания с нуля ты точечно меняешь один параметр. Видишь, как именно это изменение повлияло на результат. Это и быстрее, и учит понимать, какие свойства на что влияют.
Рычаги управления: - Добавь "Приоритет" → модель поймёт что важнее, если свойства конфликтуют - Укажи явный вес ("это критично", "это желательно") → тонкая настройка акцентов - Добавь "Контрпримеры" ("избегай X, не делай Y") → сужает зону ошибки - Убери "Формат" → модель сама выберет структуру, иногда неожиданно удачно
Шаблон промпта
Я работаю с промптом модульно. Вот мои свойства:
**Материал:** {исходные данные или контекст — текст, ситуация, вводные}
**Задача:** {что именно нужно сделать}
**Аудитория:** {для кого результат — кто будет читать/использовать}
**Тон и стиль:** {как должно звучать — формально/неформально, экспертно/дружелюбно}
**Формат вывода:** {как структурировать — список, абзацы, таблица, длина}
**Ограничения:** {чего нельзя делать или упоминать}
**Приоритет:** {что важнее всего в результате}
Собери финальный ответ из этих свойств.
Что подставлять:
- {материал} — текст для анализа, описание ситуации, данные
- {задача} — конкретный глагол: напиши, проанализируй, переформулируй, сравни
- {аудитория} — чем конкретнее, тем лучше: "инвесторы серии A", "подростки 14-16 лет", "HR без tech-бэкграунда"
- {тон} — можно указать референс: "как Медуза", "как корпоративный отчёт", "как дружеский совет"
- {формат} — число абзацев, наличие списков, максимальная длина
- {ограничения} — конкретные запреты, не "будь точным", а "не используй слово 'синергия'"
- {приоритет} — что важнее при конфликте свойств
🚀 Быстрый старт — вставь в чат:
Вот шаблон модульного промпта OOPrompt. Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить все поля.
[вставить шаблон выше]
LLM спросит про аудиторию, тон и ограничения — потому что без этого свойства останутся пустыми, и модель будет угадывать. Она возьмёт структуру из шаблона и подберёт значения под твою задачу.
Ограничения
⚠️ Аналитические задачи с открытым ответом: При задачах типа "что ты думаешь о X" или "как лучше поступить" — структура свойств помогает меньше. Там важна цепочка рассуждений, а не точность параметров.
⚠️ Простые задачи: Для быстрых вопросов — переизбыток. Если нужно узнать курс доллара или перевести предложение, заполнение слотов займёт больше времени, чем сам ответ.
⚠️ Конфликт свойств: Если задать противоречивые свойства (короткий формат + глубокий анализ), модель выберет компромисс сама — не всегда в нужную сторону. Нужно явно указывать приоритет.
⚠️ Не для одноразовых запросов: Эффект накапливается при итерации. На первом проходе преимущество перед обычным промптом небольшое.
Адаптации и экстраполяции
🔧 Техника: добавить "Версии" → параллельное сравнение
Добавь в шаблон одно свойство:
**Версии:** Сделай 2 варианта: один с акцентом на {параметр А}, другой — на {параметр Б}.
Модель выдаст оба варианта в одном ответе. Можно быстро выбрать направление и дальше итерировать только один.
🔧 Техника: "Зафиксируй что работает" → промпт-шаблон на будущее
После удачного результата попроси:
Сохрани текущие свойства как шаблон. Замени конкретные значения на плейсхолдеры {в скобках},
чтобы я мог использовать этот промпт для похожих задач.
Получишь готовый шаблон под свой формат работы. Экономит время на следующих итерациях того же типа.
🔧 Экстраполяция: OOPrompt + ролевая критика
После получения результата добавь агента-критика:
Теперь выступи как строгий редактор. Проверь, насколько финальный текст соответствует
каждому из заявленных свойств. Отдельно по каждому свойству — соответствует или нет, почему.
Модель сама протестирует свой вывод против твоих требований. Отличный способ поймать несоответствия до финальной правки.
Как исследовали
Команда из UCLA сначала проанализировала существующие системы структурированного промптинга — от PromptChainer до LangGPT — и вывела начальный дизайн-спейс из шести этапов. Затем собрала MVP: интерфейс, где можно создавать промпты через именованные свойства, редактировать их по отдельности и отправлять в ChatGPT или Gemini.
С этим прототипом работали 20 участников из 11 университетов — разные специальности от джаза и маркетинга до машинного обучения. Три типа задач: код/аналитика (где есть правильный ответ), написание истории (открытое задание) и планирование поездки (исследовательское). После — глубинные интервью.
Самое неожиданное: почти все (14 из 20) восприняли концепцию позитивно, но единственный участник с реальным опытом промпт-инжиниринга — отказался. Сказал: я уже делаю это в голове, интерфейс мне не нужен. Это честный сигнал: OOPrompt — не открытие для экспертов, а формализация интуитивной практики.
На этапе валидации 8 участников вернулись для трёх сценариев: отчёт для разных аудиторий, групповое мероприятие, дебаты. Итог: итерация ускорилась, структура помогла в исследовательских задачах — но для аргументационных ("убеди меня") преимущество исчезало.
Ресурсы
OOPrompt: Reifying Intents into Structured Artifacts for Modular and Iterative Prompting
Авторы: Tengyou Xu, Detao Ma, Xiang 'Anthony' Chen — University of California, Los Angeles
Связанные работы: LangGPT, PromptChainer, Luminate, DirectGPT, PromptAid
