3,583 papers
arXiv:2504.02052 77 1 апр. 2025 г. FREE

Анатомия промпт-шаблонов: 7 компонентов и паттерны из реальных LLM-приложений

КЛЮЧЕВАЯ СУТЬ
Обнаружено: Анализ 2163 промптов из реальных LLM-приложений (Uber, Microsoft и др.) показал — порядок компонентов влияет на результат. Исследование выделило 7 ключевых блоков промпта: роль, контекст, инструкция, рабочий процесс, примеры, формат вывода, ограничения. Фишка: императивный стиль («Проанализируй текст») используют 90%+ приложений вместо вопросов («Можешь проанализировать?»), а роль и контекст в начале «настраивают» модель перед основной инструкцией — точность и повторяемость результатов растут.
Адаптировать под запрос

TL;DR

Исследователи разобрали 2163 промпт-шаблона из реальных LLM-приложений (включая инструменты от Uber и Microsoft) и выделили 7 ключевых компонентов, из которых строятся эффективные промпты: роль (Profile/Role), инструкция (Directive), рабочий процесс (Workflow), контекст (Context), примеры (Examples), формат вывода (Output Format/Style) и ограничения (Constraints). Оказалось, что 86.7% промптов содержат чёткую инструкцию, 56.2% — контекст, 39.7% — требования к формату, 35.7% — ограничения.

Главная находка: порядок компонентов имеет значение. Роль и инструкция чаще всего стоят в начале промпта (с вероятностью 0.87 и 0.65 соответственно). Контекст обычно идёт после роли, затем инструкция, потом рабочий процесс и примеры, а в конце — формат вывода и ограничения. Также выяснилось, что инструкции работают лучше вопросов — более 90% промптов в реальных приложениях используют императивный стиль ("Проанализируй текст") вместо вопросительного ("Можешь проанализировать?").

Для JSON-вывода (самого популярного формата после обычного текста) исследование выделило 3 уровня детализации: (1) просто указать "выведи JSON", (2) указать названия атрибутов, (3) добавить описание каждого атрибута. Третий паттерн — самый частый (44% случаев), потому что снижает ошибки при обработке ответов в приложениях. Среди ограничений (Constraints) лидируют "исключения" (46%) — что модели НЕ должна делать, затем "включения" (35.6%) — на чём фокусироваться, и "лимиты по словам" (10.5%).

🔬

Схема метода

Это не техника, а фреймворк для построения промптов. Исследование выделяет структуру:

КОМПОНЕНТЫ (7 типов):
1. Profile/Role — кто или что модель (28.4% промптов)
2. Directive — основная инструкция (86.7%)
3. Context — фоновая информация (56.2%)
4. Workflow — пошаговый процесс (27.5%)
5. Examples — примеры ожидаемого результата (19.9%)
6. Output Format/Style — тип/формат вывода (39.7%)
7. Constraints — ограничения и правила (35.7%)

ОПТИМАЛЬНЫЙ ПОРЯДОК:
Profile/Role → Context → Directive → Workflow → Examples → 
→ Output Format/Style ⟷ Constraints

(последние две пары гибко меняются местами)
🚀

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

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

Промпт (следуя найденной структуре):

Ты — опытный venture-аналитик, который оценивает стартапы 
для российских фондов.

Проанализируй бизнес-идею стартапа: {описание_идеи}.

Контекст: 
- Российский рынок, B2C сегмент
- Стадия: pre-seed, команда 2-3 человека
- Бюджет на MVP: до 3 млн рублей

Выполни анализ по шагам:
1. Оцени размер рынка и конкуренцию
2. Определи ключевые риски (минимум 3)
3. Предложи метрики для валидации гипотез
4. Дай рекомендацию: зелёный свет / доработать / отклонить

Не используй абстрактные формулировки. Называй конкретных 
конкурентов, цифры рынка, реальные метрики.

Формат ответа — JSON:
{
  "market_size_rub": "оценка объёма рынка в рублях",
  "competition_level": "низкая/средняя/высокая",
  "key_risks": ["риск 1", "риск 2", "риск 3"],
  "validation_metrics": ["метрика 1", "метрика 2"],
  "recommendation": "зелёный свет/доработать/отклонить",
  "reasoning": "краткое обоснование рекомендации"
}

Результат:

Модель выдаст структурированный JSON с заполненными атрибутами: оценкой рынка в рублях, уровнем конкуренции, списком конкретных рисков, метриками для проверки и финальной рекомендацией с обоснованием. Формат позволяет автоматически обработать ответ — например, отфильтровать идеи с "зелёным светом" или построить таблицу по рискам.

🧠

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

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

Роль (Profile/Role) активирует у модели определённый стиль мышления — venture-аналитик думает иначе, чем маркетолог. Контекст (Context) даёт модели ограничения реальности — российский рынок, бюджет 3 млн, pre-seed. Без этого модель выдаст общие рассуждения "на глобус". Инструкция (Directive) в императивном стиле ("Проанализируй") работает лучше вопросов ("Можешь проанализировать?") — так делают 90%+ реальных приложений, потому что это однозначнее.

Рабочий процесс (Workflow) разбивает задачу на шаги — модель идёт последовательно, не пропускает важное. Ограничения (Constraints) отсекают галлюцинации — "не используй абстрактные формулировки" заставляет модель быть конкретной. Формат вывода с описанием атрибутов (Pattern 3 из исследования) — самый надёжный: модель понимает не только ЧТО выдать ("key_risks"), но и КАК ("список из минимум 3 рисков").

Порядок компонентов влияет на качество. Когда роль и контекст идут в начале, модель "настраивается" на задачу, затем получает инструкцию и выполняет её в заданных рамках. Если формат и ограничения в конце — они работают как финальный чек-лист перед генерацией ответа.

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

  • Детализация JSON — уровень 1 (просто "JSON") для простых задач, уровень 3 (с описанием атрибутов) для сложных → точнее структура, меньше ошибок
  • Тип ограничений — "исключения" (что НЕ делать) сильнее "включений" (на чём фокус) → используй оба для баланса
  • Стиль инструкции — императив ("Проанализируй") vs вопрос ("Можешь?") → императив чётче, используется в 90%+ случаев
  • Workflow — добавь шаги для сложных задач, убери для простых → контроль глубины обработки
📋

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

Базовый фреймворк (7 компонентов):

Ты — {роль_специалиста}.

Контекст:
{описание_ситуации}
{ключевые_ограничения_реальности}

{основная_инструкция}.

Выполни задачу по шагам:
1. {шаг_1}
2. {шаг_2}
3. {шаг_3}

Ограничения:
- {что_НЕ_делать}
- {на_чём_фокус}
- {лимиты_по_объёму}

Формат ответа — JSON:
{
  "{атрибут_1}": "{описание_что_здесь}",
  "{атрибут_2}": "{описание_что_здесь}",
  "{атрибут_3}": ["{формат_если_список}"]
}

Что подставлять: - {роль_специалиста} — кто модель: аналитик, редактор, эксперт в домене - {описание_ситуации} — контекст задачи: для кого, зачем, какие данные - {основная_инструкция} — императив: "Проанализируй", "Создай", "Оцени" - {шаг_1, шаг_2...} — декомпозиция задачи (опционально для простых задач) - {что_НЕ_делать} — исключения: "не используй абстракции", "без галлюцинаций" - {атрибут_X} — поля JSON с описанием типа и содержания

Упрощённая версия (4 обязательных компонента):

Ты — {роль}.

{инструкция}: {задача}.

Ограничения: {что_НЕ_делать}.

Формат: {структура_вывода}.

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

⚠️

Ограничения

⚠️ Это фреймворк, не готовая техника: Исследование даёт структуру компонентов и их порядок, но не показывает КАК конкретно писать каждый компонент для разных типов задач. Нужно адаптировать под свою задачу.

⚠️ Паттерны основаны на частоте, не на A/B тестах: То, что 90% приложений используют инструкции вместо вопросов — это корреляция, а не доказательство причинно-следственной связи. Исследование показывает что ДЕЛАЮТ разработчики, но не всегда почему это ЛУЧШЕ работает.

⚠️ JSON-фокус: Анализ формата вывода сильно сосредоточен на JSON (самый популярный структурированный формат), но слабо покрывает другие форматы — Markdown, таблицы, код. Если твоя задача не про JSON, придётся экстраполировать принципы.

⚠️ Порядок компонентов — общий паттерн: Оптимальная последовательность выведена статистически и может не подходить для специфичных задач. Например, для creative writing роль в начале может ограничивать креативность.

🔍

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

Команда взяла датасет PromptSet — коллекцию промптов из реальных open-source проектов на GitHub по состоянию на январь 2024. Отфильтровали репозитории с минимум 5 звёздами и активностью в последний год, чтобы оставить только качественные приложения. Из 14,834 промптов после чистки (удаление дубликатов, коротких промптов <5 токенов) получили 2,163 уникальных промпт-шаблона от 1,525 репозиториев. Среди них — инструменты от Uber (2.3k звёзд, используют 200+ разработчиков), Microsoft (5.4k звёзд), Weaviate (6.5k звёзд) и LAION-AI (37.1k звёзд).

Для анализа исследователи синтезировали список из 7 компонентов, объединив определения из документации Google Cloud, фреймворков Elavis Saravia, CRISPE и LangGPT. Например, компоненты Profile, Capacity, Role и Persona слили в один — Profile/Role. Затем использовали llama3-70b-8192 для автоматической разметки компонентов в каждом шаблоне, а точность проверили вручную на 5% выборке — precision 86% на уровне компонентов, 66% полного совпадения и 99% частичного на уровне промптов.

Почему результаты получились такими: Оказалось, что Directive (инструкция) есть в 86.7% промптов — это логично, потому что без чёткой инструкции модель не понимает что делать. Context (56.2%) и Output Format (39.7%) тоже частые — приложениям нужна предсказуемость: они обрабатывают ответы автоматически, поэтому формат критичен. Интересный инсайт: более 90% инструкций написаны в императивном стиле ("Проанализируй"), а не в форме вопроса ("Можешь проанализировать?") — разработчики эмпирически пришли к тому, что императив работает чётче.

Для анализа порядка компонентов построили матрицу вероятностей: какой компонент чаще всего следует за каким. Выяснилось, что Profile/Role и Directive почти всегда в начале (вероятность 0.87 и 0.65), Context обычно идёт после Profile, а Output Format и Constraints — в конце. Это не случайность: такой порядок логичен — сначала настроить модель (роль + контекст), потом дать задачу (инструкция + шаги), в конце задать формат. Разработчики интуитивно пришли к этой структуре через практику.

Удивительная находка: JSON как формат вывода оказался самым популярным после обычного текста (особенно в темах "Coding & Debugging" и "Information Seeking"). Исследователи выделили 3 паттерна детализации JSON: от простого "верни JSON" до полного описания атрибутов. Самый детальный паттерн (Pattern 3) используется в 43.97% случаев — это говорит о том, что разработчики жертвуют краткостью промпта ради надёжности структуры в ответах.

💡

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

📌

💡 Адаптация для итеративной работы

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

Промпт 1 — Генерация:

Ты — {роль}.

Создай {что}: {описание_задачи}.

Контекст: {ограничения_реальности}.

Формат: {структура}.

Промпт 2 — Критика (в том же чате):

Теперь ты — критик.

Оцени предыдущий результат по критериям:
1. {критерий_1}
2. {критерий_2}

Формат: JSON с оценками по каждому критерию и рекомендациями.

Промпт 3 — Доработка:

Вернись к роли {исходная_роль}.

Доработай результат с учётом критики. Сохрани формат.

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

⚠️

🔧 Техника: Динамические ограничения → адаптация под сложность

Исследование показывает, что Constraints (35.7%) — частый компонент, но ограничения можно регулировать по ходу диалога:

Для первого запроса (разведка):

Ограничения:
- Фокус на главном
- Без деталей реализации

Для уточнения (углубление):

Ограничения:
- Конкретные примеры
- Цифры и метрики
- Технические детали приветствуются

Меняя тип ограничений (исключения → включения, общее → детальное), управляешь глубиной ответа без переписывания всего промпта.

📌

🔧 Техника: Роль как линза → множественные перспективы

Компонент Profile/Role (28.4%) можно использовать для получения разных взглядов на одну задачу:

Контекст: {описание_бизнес_идеи}

---

Взгляд 1 — Ты инвестор:
Оцени идею с точки зрения рисков и возврата инвестиций.

Взгляд 2 — Ты целевой пользователь:
Оцени удобство и ценность для себя.

Взгляд 3 — Ты конкурент:
Как бы ты атаковал эту идею?

Формат каждого взгляда: JSON с ключевыми мыслями.

Один промпт → три роли → три перспективы. Принцип из исследования (роль влияет на стиль мышления) + техника multi-agent prompting.

🔗

Ресурсы

From Prompts to Templates: A Systematic Prompt Template Analysis for Real-world LLMapps — Yuetian Mao, Junjie He, Chunyang Chen (Technical University of Munich, Germany). Датасет доступен: https://github.com/RedSmallPanda/FSE2025

Упоминаемые фреймворки и документация: - Google Cloud prompt engineering guide - Elavis Saravia framework - CRISPE framework

- LangGPT framework

Датасет PromptSet (основа исследования) — коллекция промптов из open-source GitHub проектов.


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

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

Обнаружено: Анализ 2163 промптов из реальных LLM-приложений (Uber, Microsoft и др.) показал — порядок компонентов влияет на результат. Исследование выделило 7 ключевых блоков промпта: роль, контекст, инструкция, рабочий процесс, примеры, формат вывода, ограничения. Фишка: императивный стиль («Проанализируй текст») используют 90%+ приложений вместо вопросов («Можешь проанализировать?»), а роль и контекст в начале «настраивают» модель перед основной инструкцией — точность и повторяемость результатов растут.

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

Не просто набор компонентов — важен их порядок. Оптимальная последовательность: Роль → Контекст → Инструкция → Workflow → Примеры → Формат вывода → Ограничения. Роль задаёт стиль мышления (venture-аналитик думает иначе чем маркетолог). Контекст даёт границы реальности (российский рынок, бюджет 3 млн, стадия pre-seed). Императив в инструкции работает чётче вопросов. Workflow разбивает сложную задачу на шаги. Формат и ограничения в конце — финальный чек-лист перед генерацией.

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

LLM лучше работает со структурой, чем с размытым «напиши что-нибудь». Каждый компонент выполняет функцию: роль активирует определённый стиль мышления, контекст отсекает абстрактные рассуждения «на глобус», императивная инструкция однозначнее вопросительной (используется в 90%+ реальных приложений). Детализация формата вывода влияет на точность: третий паттерн для JSON (с описанием каждого атрибута) используют в 44% случаев — он снижает ошибки при обработке ответов. Когда роль и контекст идут в начале — модель «настраивается» на задачу, затем получает инструкцию и выполняет её в заданных рамках. Ограничения в конце работают как барьер против галлюцинаций.

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

Построение промптов для продакшен-приложений → особенно когда нужна структура и повторяемость результатов (автоматическая обработка ответов, API-интеграция, шаблоны для команды). Подходит для задач средней и высокой сложности: анализ данных, генерация структурированных отчётов, многошаговые процессы. НЕ подходит для быстрых креативных запросов где жёсткая структура может ограничить вариативность ответа.

Мини-рецепт

1. Роль: Ты — {специалист_в_домене} (venture-аналитик, редактор, эксперт)
2. Контекст: Опиши ситуацию, ограничения реальности (рынок, бюджет, стадия проекта)
3. Инструкция: Императив — Проанализируй, Создай, Оцени (не вопрос)
4. Workflow: Разбей на шаги (опционально для сложных задач): 1. Оцени рынок 2. Найди риски 3. Дай рекомендацию
5. Ограничения: Что НЕ делать — Не используй абстракции, Называй конкретных конкурентов
6. Формат: JSON с описанием атрибутов — {"market_size": "оценка в рублях", "risks": ["список рисков"]} (третий уровень детализации для точности)

Примеры

[ПЛОХО] : Можешь проанализировать эту бизнес-идею и сказать что думаешь?
[ХОРОШО] : Ты — venture-аналитик для российских фондов. Контекст: стадия pre-seed (посевной раунд), команда 2-3 человека, бюджет на первую версию продукта до 3 млн рублей. Проанализируй идею стартапа: {описание_идеи}. Выполни по шагам: 1. Оцени размер рынка 2. Найди ключевые риски (минимум 3) 3. Предложи метрики для проверки гипотез. Не используй абстрактные формулировки — называй конкретных конкурентов и реальные цифры рынка. Формат JSON: {"market_size_rub": "оценка объёма в рублях", "key_risks": ["риск 1", "риск 2"], "validation_metrics": ["метрика 1"]}
Источник: From Prompts to Templates: A Systematic Prompt Template Analysis for Real-world LLM apps
ArXiv ID: 2504.02052 | Сгенерировано: 2026-01-20 16:30

Концепты не выделены.

📖 Простыми словами

От промптов к шаблонам: систематический анализ шаблонов промптов для реальных LLM-приложений

arXiv: 2504.02052

Промпты в реальных приложениях — это не просто «запросы», а жестко структурированный код на естественном языке. Исследователи из Uber и Microsoft препарировали тысячи рабочих шаблонов и выяснили: магия нейросетей держится на семи кирпичах. Если ты просто пишешь «сделай мне красиво», модель гадает на кофейной гуще. Чтобы она выдала результат, пригодный для бизнеса, нужно четко задать роль, впихнуть инструкцию, описать рабочий процесс, накидать контекста, дать примеры, ограничить формат и выставить запреты. Это база, на которой стоят 86% всех успешных промптов в индустрии.

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

В реальности все держится на конкретике: 86.7% промптов содержат прямую директиву, а больше половины — детальный контекст. Самое важное здесь — Workflow (рабочий процесс) и Constraints (ограничения). Это те самые рельсы, которые не дают модели уйти в галлюцинации. Если ты не прописал формат вывода, ты получишь простыню текста вместо аккуратного JSON, который можно скормить другой программе. Исследование подтверждает: 39.7% разработчиков маниакально следят за форматом, потому что без него LLM-приложение — это просто дорогая игрушка.

Хотя ученые копались в коде Uber и Microsoft, этот фреймворк из 7 компонентов универсален. Он работает хоть для написания кода, хоть для генерации постов в Telegram, хоть для анализа юридических договоров. Это переход от шаманства с промптами к нормальной инженерии. SEO для текстов уходит в прошлое, на смену приходит структурное проектирование смыслов. Если твой промпт не содержит хотя бы четырех элементов из списка, ты просто тратишь токены впустую.

Короче: хватит надеяться на «интуицию» нейросети. Хочешь результат как у профи — собирай промпт по шаблону, как конструктор Lego. Семь элементов — это золотой стандарт, который отделяет работающее приложение от мусора. Либо ты задаешь модели жесткие рамки, либо она выдает тебе красивую, но бесполезную фигню. В мире реальных LLM-приложений выживают только те, кто умеет превращать хаос мыслей в четкие инструкции.

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

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

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