3,583 papers
arXiv:2604.09737 79 9 апр. 2026 г. FREE

6-модульный промпт для структурированного извлечения: разные части промпта — против разных сбоев LLM

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

TL;DR

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

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

Решение: Один промпт из шести блоков, каждый из которых закрывает свой тип сбоя. M1 — XML-разметка структуры. M2 — правила разграничения похожих категорий. M3 — 4-шаговый алгоритм рассуждения до выдачи ответа. M4 — явные переменные контекста (роль, канал, тип источника). M5 — строгий контракт формата вывода. M6 — самопроверка в конце того же промпта.


🔬

Схема метода

Все 6 модулей — в одном промпте, один запрос:

M1: XML-теги → разделить инструкции, правила, задачу по блокам
M2: Правила разграничения → список "если X похоже на Y, то различай так"
M3: 4 шага до ответа → анализ контекста → разбор фраз → 
                         извлечение цитаты → перекрёстная проверка
M4: Переменные контекста → явно передать метаданные (канал, роль, тип)
M5: Схема вывода → строгий формат с валидными парами категория+подкатегория
M6: Чеклист самопроверки → до финального вывода проверь: 
                             формат ✓, категория валидна ✓, цитата точная ✓

🚀

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

Задача: Ты — аналитик в маркетплейсе. Нужно классифицировать отзывы покупателей Wildberries: тип проблемы, подтип и дословная цитата из отзыва. Отзывы путаются между "проблема с доставкой" и "проблема с ПВЗ", модель придумывает цитаты, а формат к пятому отзыву разваливается.

Промпт:


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



- Доставка > [задержка, потеря, повреждение, курьер]
- ПВЗ > [очередь, режим работы, грубость персонала, выдача не того товара]
- Товар > [качество, несоответствие описанию, брак, подделка]
- Возврат > [сложность процесса, отказ, долгий возврат денег]



ДОСТАВКА vs ПВЗ:
— Если проблема возникла В ПУТИ (до прибытия в ПВЗ) → Доставка
— Если проблема возникла НА МЕСТЕ получения → ПВЗ
— "Долго везли" → Доставка > задержка
— "Долго ждал в очереди в пункте" → ПВЗ > очередь

ТОВАР vs ВОЗВРАТ:
— Если покупатель жалуется на сам товар → Товар
— Если жалуется на процесс после обнаружения проблемы → Возврат



Перед тем как дать ответ, пройди 4 шага:
1. КОНТЕКСТ: о чём отзыв в целом, что именно не устроило покупателя?
2. ФРАЗЫ: какие конкретные слова указывают на тип проблемы?
3. ЦИТАТА: найди дословный фрагмент из отзыва (только слова из текста, ничего не добавляй)
4. ПРОВЕРКА: применил ли правила разграничения? Цитата точная? Категория валидна?



Канал отзыва: {канал — приложение / сайт / маркет}
Тип покупателя: {новый / постоянный}



Тип проблемы: [только из списка Categories]
Подтип: [только валидный подтип для выбранного типа]
Цитата: "[дословно из текста отзыва]"



Перед финальным ответом проверь:
☐ Тип проблемы из допустимого списка?
☐ Подтип валиден для этого типа?
☐ Цитата — только слова из исходного текста, без добавлений?
☐ Применил правила разграничения если категории похожи?
Если хоть один пункт не выполнен — пересмотри ответ.


Отзыв для анализа:
{текст_отзыва}

Результат: Модель покажет 4 шага рассуждения перед выводом — что поняла из контекста, какие фразы привлекли внимание, какую цитату нашла. Затем самопроверку по чеклисту. Финальный ответ — три строки: тип, подтип, цитата в кавычках. Цитата будет дословной, а не "почти такой же".


🧠

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

LLM при структурированном извлечении ведёт себя как стажёр без инструкций: когда нет чётких правил разграничения — угадывает по звуку. "Доставка" и "ПВЗ" звучат похоже — модель выбирает случайно. Когда нет явного требования цитировать дословно — дополняет "для ясности". Когда нет формата — придумывает свой.

Метод использует то, что LLM хорошо умеет: следовать явным пошаговым инструкциям. Если написать "сначала сделай шаг 1, потом шаг 2, потом проверь по списку" — модель следует этому гораздо точнее, чем абстрактному "будь точным". Каждый модуль промпта убирает одну причину для ошибки, не оставляя места для интерпретации.

Рычаги управления: - M2 (правила разграничения) — главный рычаг качества. Чем больше пар похожих категорий разобрать явно, тем меньше ошибок на границах - M3 (4 шага) — можно добавить шаги или убрать лишние для простых задач; для коротких отзывов достаточно 2 шагов - M6 (чеклист) — расширяй под свои требования: добавь "☐ Тональность нейтральная?" или "☐ Указан конкретный продукт?" - M4 (метаданные) — дополнительные переменные сужают пространство решений: тип пользователя часто меняет интерпретацию


📋

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


{роль_и_задача}



{иерархический_список_категорий_с_подкатегориями}



{категория_А} vs {категория_Б}:
— Если {признак_1} → {категория_А}
— Если {признак_2} → {категория_Б}
— Пример: "{пример_фразы}" → {правильная_категория}



Перед ответом пройди 4 шага:
1. КОНТЕКСТ: {что нужно понять из текста}
2. ФРАЗЫ: {какие сигналы искать}
3. ИЗВЛЕЧЕНИЕ: {что вытащить — цитату / данные / признак}
4. ПРОВЕРКА: {применил правила? результат корректен?}



{переменная_1}: {значение_1}
{переменная_2}: {значение_2}



{поле_1}: [только из допустимых значений]
{поле_2}: [только валидное для поля_1]
{поле_3}: "[дословно из текста / строгий формат]"



Перед финальным ответом проверь:
☐ {проверка_1}?
☐ {проверка_2}?
☐ {проверка_3}?
Если не выполнено — пересмотри.


Текст для анализа:
{входной_текст}

Что подставлять: - {иерархический_список_категорий} — твоя классификация, два уровня: тип > [подтипы] - {правила_разграничения} — пары похожих категорий + как отличить, можно добавить примеры фраз - {4 шага} — адаптируй под задачу: для отзывов это контекст/фразы/цитата/проверка, для анализа договора это будет иначе - {метаданные} — всё что влияет на классификацию: тип клиента, канал, дата, роль - {чеклист} — 3-5 конкретных условий корректного ответа


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

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

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

LLM спросит про категории, подкатегории, какие пары чаще путаются и какой формат вывода нужен — потому что именно эти данные заполняют M1–M6 и делают промпт работающим.


⚠️

Ограничения

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

⚠️ Правила разграничения писать вручную: M2 требует человеческой экспертизы. Если сам не знаешь чем отличается "жалоба на курьера" от "жалобы на доставку" — промпт не поможет. Выписывай примеры из реальных случаев.

⚠️ Длинный промпт — длинный ответ: 6 модулей + 4 шага рассуждения = много токенов. На больших объёмах (100+ документов) учитывай стоимость и время. Для простых задач убирай M3 или сокращай до 2 шагов.

⚠️ STaR-DRO — не для чата: Вторая часть исследования (метод дообучения на жёстких группах) требует GPU, датасеты и обучение модели. Для обычного пользователя ChatGPT/Claude недоступна. Весь практический выход — в 6-модульном промпте.


🔗

Ресурсы

Статья: STaR-DRO: Stateful Tsallis Reweighting for Group-Robust Structured Prediction

Авторы: Samah Fodeh, Ganesh Puthiaraju, Elyas Irankhah, Linhai Ma, Srivani Talakokkul, Afshan Khan, Sreeraj Ramachandran, Jordan Alpert, Sarah Schellhorn

Организации: Yale University (New Haven, CT), Cleveland Clinic, Yale School of Medicine

Бенчмарк: EPPC Miner — извлечение иерархических меток коммуникации из переписки пациент–врач

Контакт: samah.fodeh@yale.edu


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

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

Обнаружено: LLM ломается при структурированном извлечении одними и теми же способами. Всегда. Придумывает цитаты, путает похожие категории, теряет формат к десятому документу — это не случайность, это пять предсказуемых типов сбоев. 6-модульный промпт позволяет классифицировать тексты с дословными цитатами-доказательствами, не деградируя на масштабе — один шаблон закрывает все пять сбоев сразу. Фишка: каждый модуль закрывает ровно один тип сбоя — M2 разбирает правила разграничения похожих категорий (именно там модель угадывает «по звуку»), M6 вставляет чеклист самопроверки прямо в тот же промпт, до финального ответа. Цитаты перестают быть «почти точными».

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

LLM без явных правил — как стажёр без инструкций. Слышит «доставка» и «пункт выдачи» — выбирает случайно. Просят цитату — дополняет «для ясности». Просят формат — придумывает свой. Ключ в том, чтобы убирать каждую причину ошибки отдельно, а не писать «будь точным». Принцип: один модуль = одна причина сбоя, которую он исключает Модули работают последовательно в одном промпте: — M1 (XML-теги) → разбивает инструкции на блоки, модель не мешает их в голове — M2 (правила разграничения) → явно разбирает пары похожих категорий с примерами фраз — M3 (4 шага рассуждения) → заставляет думать до ответа, а не угадывать — M4 (метаданные) → сужает пространство решений: тип клиента или канал меняют интерпретацию — M5 (схема вывода) → строгий контракт: только валидные пары категория+подтип — M6 (чеклист) → самопроверка перед финалом, в том же запросе — без второго вызова

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

LLM хорошо следует явным пошаговым инструкциям. Абстрактное «будь точным» — игнорирует. Конкретное «цитируй только слова из текста, ничего не добавляй» — выполняет. Главный рычаг — M2, правила разграничения похожих категорий. Именно здесь модель ошибается чаще всего, и именно здесь большинство промптов молчат. Чем больше пар разобрать явно с примерами фраз — тем меньше ошибок на границах. M6 работает потому что модель проверяет свой ответ до его выдачи, а не после: это дешевле одного дополнительного запроса и ловит 80% ошибок формата.

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

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

Мини-рецепт

1. Выпиши категории иерархически: тип > [подтипы]. Два уровня обязательно — без подтипов M5 не даст строгого контракта.
2. Найди пары, которые путаются: какие категории звучат похоже в твоей задаче? Именно под них пиши M2 — правило «если признак X → категория А; если признак Y → категория Б» плюс пример конкретной фразы.
3. Адаптируй 4 шага рассуждения под задачу: для отзывов это контекст → сигнальные слова → цитата → проверка; для договора будет иначе — не копируй вслепую.
4. Добавь метаданные, которые меняют интерпретацию: тип клиента, канал обращения, дата, роль отправителя.
5. Сделай строгую схему вывода: три поля с ограничением каждого — «только из списка», «только валидный подтип для выбранного типа», «дословно из текста».
6. Напиши чеклист из 3–5 конкретных условий и заканчивай фразой: «Если хотя бы один пункт не выполнен — пересмотри ответ».

Примеры

[ПЛОХО] : Классифицируй отзыв по типу проблемы и приведи цитату из текста.
[ХОРОШО] : Ты — аналитик клиентского опыта. Классифицируй отзыв: тип проблемы, подтип, дословная цитата-доказательство. - Доставка > [задержка, повреждение, курьер] - ПВЗ > [очередь, грубость, выдача не того товара] ДОСТАВКА vs ПВЗ: — Проблема возникла в пути (до прибытия) → Доставка — Проблема возникла на месте получения → ПВЗ — «Долго везли» → Доставка > задержка — «Ждал в очереди в пункте» → ПВЗ > очередь 1. КОНТЕКСТ: о чём отзыв в целом? 2. СИГНАЛЫ: какие слова указывают на тип проблемы? 3. ЦИТАТА: найди дословный фрагмент — только слова из текста 4. ПРОВЕРКА: применил правила разграничения? Цитата точная? Тип проблемы: [только из списка] Подтип: [только валидный для выбранного типа] Цитата: "[дословно из текста]" ☐ Тип из допустимого списка? ☐ Подтип валиден для этого типа? ☐ Цитата — только слова из исходного текста? Если не выполнено — пересмотри. {текст_отзыва} Результат: модель покажет 4 шага рассуждения, затем самопроверку, затем три строки финального ответа. Цитата будет дословной — не «похожей».
Источник: STaR-DRO: Stateful Tsallis Reweighting for Group-Robust Structured Prediction
ArXiv ID: 2604.09737 | Сгенерировано: 2026-04-14 04:57

Проблемы LLM

ПроблемаСутьКак обойти
Модель угадывает категорию по звучаниюКогда два класса звучат похоже — "доставка" и "ПВЗ", "качество" и "брак" — модель выбирает по семантической близости. Не по смыслу. Явного правила "что именно отличает A от B" у неё нет. Ошибки появляются именно на границах между похожими категориями — и это происходит при любой классификацииПропиши явные правила разграничения прямо в промпте. Формат: "если {признак 1} категория A, если {признак 2} категория B". Добавь примеры фраз. Модель перестаёт гадать — у неё есть конкретный критерий

Методы

МетодСуть
Правила разграничения похожих категорийВыпиши пары категорий которые легко спутать. Для каждой пары опиши признак-разделитель. КАТЕГОРИЯ_А vs КАТЕГОРИЯ_Б: — если {признак_1} А — если {признак_2} Б — пример: "{фраза}" А. Почему работает: без явного правила модель использует семантическую близость слов. С правилом — применяет конкретный критерий. Работает для любого классификатора с 5+ категориями. Не нужно для задач где категории очевидно разные
Чеклист самопроверки в том же промптеДобавь в конец промпта блок проверки — до финального ответа. Перед ответом проверь: ☐ категория из допустимого списка? ☐ цитата дословная, без добавлений? ☐ применил правила разграничения?. Почему работает: модель проходит шаги явно, а не подразумевает их. Ошибки которые пропустила при генерации — ловит при проверке. Расширяй под свои требования: добавляй нужные пункты, убирай лишние
📖 Простыми словами

STaR-DRO: Stateful Tsallis Reweighting for Group-Robust Structured Prediction

arXiv: 2604.09737

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

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

Вместо одного рыхлого промпта исследователи собрали модульный конструктор из 6 частей, где каждая закрывает конкретную дыру. Метод заставляет модель сначала четко разграничить похожие сущности (например, чем «косяк курьера» отличается от «бардака на пункте выдачи»), а потом вводит жесткий протокол цитирования. Если нужно доказать вину ПВЗ, модель обязана вытащить фразу слово в слово, а не пересказывать её своими словами. Это превращает творческий хаос в структурированный конвейер, где формат ответа не разваливается даже к сотому пункту.

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

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

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

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

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