3,583 papers
arXiv:2604.10350 74 11 апр. 2026 г. FREE

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

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

TL;DR

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

Когда просишь «дай мне примеры» без структуры — модель генерирует похожие варианты. Попроси пять раз — получишь пять вариаций одного и того же: одинаковый масштаб, одинаковые допущения, одинаковый уровень сложности. Модель воспроизводит самый типичный случай, потому что у неё нет инструкции искать разнообразие намеренно.

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


🔬

Схема метода

Шаги выполняются в двух отдельных чатах (CoT-стратегия) или одном чате (простая стратегия).

CoT-стратегия (рекомендуется):

ЧАТ 1:
ШАГ 1: Анализ домена → описание на естественном языке
       Промпт: "Опиши структуру, компоненты, связи, правила"
ШАГ 2: Генерация сценариев → 5 текстовых описаний по категориям
       (одним запросом)

ЧАТ 2 (для каждой категории отдельно):
ШАГ 3: Генерация примера → готовый пример по описанию сценария
ШАГ 4: Если ошибка → "Это некорректно: {ошибка}. Исправь."
ШАГ 5: "Сгенерируй ещё один — структурно и семантически отличный"

Простая стратегия (быстрее):

ОДИН ЧАТ:
ШАГ 1: Инструкция + пример формата → первый пример
ШАГ 2-N: "Сгенерируй ещё один, отличный от предыдущих"
         (повторять нужное количество раз)

🚀

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

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

Промпт (ЧАТ 1, Шаг 1 — анализ):

Проанализируй следующую модель клиента корпоративных продаж.
Структурируй ответ так:

## Описание
Общая картина: кто этот клиент, какова его цель.

### Компоненты
Перечисли ключевые атрибуты клиента: должность, размер компании, 
бюджетные полномочия, текущие боли.

## Отношения и зависимости
Как взаимодействуют: закупщик, финдир, конечные пользователи. 
Кто влияет на решение, с какой силой.

## Ограничения
Реальные ограничения клиента: бюджет, процедуры, предыдущий опыт.

Вот модель клиента:
{описание целевого сегмента — компании 50-500 человек, Москва и МО, 
сферы: IT, финансы, ретейл, HoReCa}

Промпт (ЧАТ 1, Шаг 2 — сценарии):

На основе этого описания клиента сгенерируй 5 сценариев для ролевых игр 
по категориям. Каждый сценарий — на русском, ~100 слов, 
с именем персонажа, должностью, компанией и главным возражением.

Категории:
- Базовый: типичный клиент, стандартные возражения, всё предсказуемо
- Сложный: несколько заинтересованных сторон с противоречивыми целями
- Граничный: крайние значения — очень маленький бюджет или очень 
  большой запрос
- Крайний случай: нестандартная ситуация, которая возможна, 
  но редко встречается
- Перегруженные ограничения: клиент, чьи внутренние правила делают 
  любое решение формально невозможным — но логика ситуации требует 
  его принять

Учти региональные и отраслевые различия.

Результат: Модель выдаст пять описаний клиентов, которые кардинально отличаются по структуре ситуации. Базовый — знакомый закупщик с типовым «дорого». Сложный — HRD хочет, финдир против, а CEO не в курсе. Граничный — стартап с 12 сотрудниками или госкорпорация с тендером на 800 человек. Крайний случай — компания с корпоративным кейтерингом, который уже «работает». Перегруженный — холдинг, где каждая «дочка» закупает отдельно и единого бюджета нет. После этого — в новом чате — по каждому сценарию можно генерировать диалоги.


🧠

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

Модель без явной типологии тяготеет к центру распределения — к самому частому, самому ожидаемому выводу. Это не баг, это принцип работы: следующий токен предсказывается по вероятности. Типичный пример статистически «тяжелее», чем редкий.

Категории работают как явные векторы поиска. Когда ты говоришь «граничный случай» — модель не генерирует следующий по шаблону текст, а следует инструкции найти конкретный тип. Категории убирают двусмысленность там, где «ещё один пример» оставляет её.

Рычаги управления: - Шаг анализа — сделай его длиннее или короче в зависимости от сложности задачи. Для простых задач можно пропустить совсем. - Количество категорий — можно использовать 2-3 вместо 5, если задача не требует полного покрытия. - Описание категорий — главный рычаг. «Граничный» для клиентов ≠ «граничный» для юридических документов. Перепиши под свой домен. - Культурное и региональное разнообразие — явно попроси в инструкции, иначе всё будет из одного контекста. - Цикл коррекции — если результат неточный, верни ошибку: «Этот пример не соответствует категории X, потому что {причина}. Исправь.»


📋

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

📌

Шаблон: Анализ перед генерацией

## Шаг 1 — Анализ структуры (отдельный запрос)

Проанализируй следующую задачу/модель/структуру.
Используй чёткий язык, не перегружай деталями.

## Описание
Объясни общую структуру и назначение.

### Компоненты
Опиши ключевые элементы, их характеристики и роль.

## Отношения
Опиши связи между элементами, зависимости, 
минимальные и максимальные значения там, где они есть.

## Ограничения
Перечисли правила, которые должны выполняться.

Вот структура для анализа:
{описание домена, объекта или задачи}

---

## Шаг 2 — Генерация по категориям (на основе анализа)

На основе описанной структуры сгенерируй {число} примеров 
для каждой из следующих категорий:

**Базовый сценарий:** стандартный, типичный случай — 
всё работает как ожидается, каждый элемент присутствует.

**Сложный сценарий:** много взаимосвязанных элементов, 
несколько ограничений действуют одновременно.

**Граничный сценарий:** крайние допустимые значения — 
минимум или максимум по всем ключевым параметрам.

**Крайний случай:** нестандартная, редкая, но допустимая ситуация.

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

Требования к разнообразию:
- Семантическое: разные контексты, регионы, культуры, масштабы
- Структурное: разное количество элементов и связей
- Избегай дублирования с предыдущими примерами

Плейсхолдеры: - {описание домена} — твоя тема. Клиентский сегмент, продукт, юридический документ, персонаж, сценарий переговоров — что угодно со структурой. - {число} — сколько примеров на категорию (обычно 1-3).


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

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

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

LLM спросит что именно нужно генерировать, какой формат результата и нужен ли шаг анализа — потому что без этого она не поймёт как интерпретировать категории для твоего домена.


⚠️

Ограничения

⚠️ Категории нужно адаптировать под домен: Названия (базовый, граничный, крайний) — шаблонные. Для текстов «граничный» означает одно, для переговоров — другое, для технических документов — третье. Без точного описания категории модель интерпретирует их по своим критериям.

⚠️ Шаг анализа не заменяет экспертизу: Если задача требует глубокого доменного знания (медицина, юриспруденция), анализ на шаге 1 может быть поверхностным. Стоит проверить описание перед шагом 2.

⚠️ Простые задачи не требуют CoT: Для простого «придумай 5 примеров имён» — излишне. Метод даёт прирост на задачах с явной структурой и требованием покрытия разных случаев.

⚠️ Автоматическая валидация невозможна в чате: В исследовании шибки проверяются инструментом USE автоматически. В чате — проверяешь глазами или описываешь критерии вручную.


🔗

Ресурсы

Работа: LLM-based Generation of Semantically Diverse and Realistic Domain Model Instances (препринт, апрель 2025)

Авторы: Andrei Coman, Lola Burgueño — Universidad de Málaga; Dominik Bork — TU Wien; Manuel Wimmer — JKU Linz

Смежные техники из бумаги: Chain-of-Thought (Wei et al., 2022) — промптинг через промежуточные шаги; One-shot learning — предоставление одного примера формата; USE tool + SOIL — инструменты для UML-моделирования (для специалистов по моделированию)


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

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

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

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

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

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

LLM строит текст токен за токеном, выбирая из наиболее вероятных вариантов. Типичный пример встречается в обучающих данных чаще — его вероятность выше. Редкий, граничный, «невозможный» случай статистически слабее — модель не уйдёт туда сама. Категории не просят 'что-то другое' — они задают конкретные координаты поиска. Модель не угадывает что ты имеешь в виду под 'разнообразным', а следует точной инструкции. Шаг анализа структуры перед генерацией дополнительно снижает ошибки: модель формулирует правила задачи своими словами и потом не противоречит им в примерах.

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

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

Мини-рецепт

1. Разогрей модель: в отдельном запросе попроси описать структуру задачи — компоненты, связи, ограничения. Одна-две страницы на естественном языке. Для простых задач этот шаг можно пропустить.

2. Задай пять категорий: в том же или новом запросе опиши каждую своими словами под твой домен. Не копируй названия буквально — 'граничный' для клиентов и 'граничный' для юридических документов означают разные вещи. Напиши что именно ищешь.

3. Генерируй по одному на категорию: попроси один пример на каждую категорию за один запрос. Не пять одинаковых — один-пять разных.

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

5. Расширяй в новом чате: для дополнительных примеров по конкретной категории открывай новый чат с описанием сценария — и просишь Сгенерируй ещё один, структурно отличный от этого.

Примеры

[ПЛОХО] : Придумай 5 сценариев клиентов, которые возражают против подписки Модель даст пять вариантов 'клиент говорит дорого' с разными именами. Структура ситуации — одна и та же.
[ХОРОШО] : На основе описания ниже сгенерируй 5 сценариев клиентов для ролевых игр — по одному на категорию: - Базовый: типичный закупщик в компании 100-200 человек, стандартное возражение по цене - Сложный: три стороны с противоречивыми целями — HRD хочет, финдир против, CEO не в курсе - Граничный: стартап с 12 сотрудниками ИЛИ корпорация с тендером на 800 человек - Крайний случай: компания с собственным корпоративным кейтерингом, который 'уже решает проблему' - Перегруженные ограничения: холдинг, где каждая дочерняя структура закупает отдельно и единого бюджета нет Каждый сценарий: имя, должность, компания, главное возражение — ~100 слов. Результат: пять ситуаций с кардинально разной структурой. Последняя покажет слабое место в стандартном скрипте продажи.
Источник: LLM-based Generation of Semantically Diverse and Realistic Domain Model Instances
ArXiv ID: 2604.10350 | Сгенерировано: 2026-04-14 04:51

Проблемы LLM

ПроблемаСутьКак обойти
Модель схлопывается к типичному при повторных запросахПросишь «ещё пример» — получаешь вариацию того же. Одинаковый масштаб, одинаковые допущения, одинаковый уровень сложности. Пять раз попросил — пять раз получил один и тот же «стандартный» случай. Проблема в том, что ты сделал всё правильно: попросил примеры, получил примеры. Но диапазон нулевой. Работает для любых задач где нужен набор: тест-кейсы, персонажи, сценарии, клиентские профилиДай явные категории сценариев. Вместо «ещё пример» пиши «сгенерируй по одному примеру каждого типа: базовый, сложный, граничный, крайний случай, перегруженные ограничения»

Методы

МетодСуть
Пять категорий сценариев — полное покрытие без повторенийВместо «дай примеры» запрашивай по категориям: Базовый — всё стандартно, всё предсказуемо. Сложный — много элементов с противоречивыми требованиями. Граничный — крайние допустимые значения (максимум или минимум). Крайний случай — редкая, нестандартная, но возможная ситуация. Перегруженные ограничения — реальная ситуация, которая логически валидна, но нарушает правила. Каждая категория — отдельная инструкция для поиска. Модель не угадывает что ты хочешь. Она ищет конкретный тип. Важно: названия категорий надо переписывать под задачу. «Граничный» для клиентских сценариев «граничный» для юридических документов. Без адаптации модель интерпретирует по-своему. Синтаксис: Сгенерируй по примеру для каждой категории: [список с описаниями]

Тезисы

ТезисКомментарий
Явная категория — это вектор поиска, а не описание результатаКогда просишь «ещё пример» — модель предсказывает следующий токен. Статистически тяжёлый (типичный) вариант выигрывает. Когда говоришь «граничный случай» — это инструкция искать конкретный тип, а не предсказывать следующий вероятный текст. Механика разная. Результат разный. Применяй: не описывай что должно получиться, а называй тип сценария явно
📖 Простыми словами

LLM-based Generation of Semantically Diverse and Realistic DomainModelInstances

arXiv: 2604.10350

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

Это как просить неопытного актера «сыграть кого-нибудь». Он выдаст картонного персонажа с дежурной улыбкой. Но если ты сначала заставишь его расписать биографию героя, его страхи и привычки, а потом дашь конкретное амплуа — злобный вахтер или тревожный айтишник — игра станет живой. Метод анализа-перед-генерацией работает именно так: он выбивает модель из колеи привычных шаблонов, заставляя ее сначала осознать правила игры, а уже потом действовать.

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

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

Короче: если хочешь от нейронки качества, перестань давать ей свободу. Используй анализ-перед-генерацией, чтобы сначала зафиксировать правила, а потом выжать из модели семантическое разнообразие. Без четкой типологии ты всегда будешь получать «среднюю температуру по больнице», которая в реальной работе бесполезна. Формально модель задачу выполнит, но на практике это будет бесполезный набор штампов.

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

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

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