3,583 papers
arXiv:2610.33920 72 24 окт. 2026 г. FREE

DRILS: найти, какие пункты ТЗ заденет правка, с помощью двух «аналитиков» и «судьи»

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

TL;DR

DRILS — конвейер из нескольких запросов к LLM, который по запросу на изменение находит в длинном техническом задании все пункты, которые придётся переписать вслед за правкой. Сначала каждый пункт «причёсывают» (раскрывают местоимения, добавляют справку из самого документа), потом два независимых аналитика-модели предлагают списки затронутых пунктов, а третья модель-судья собирает из них итоговый список с объяснением по каждому пункту.

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

Суть метода: (1) очистить и обогатить каждый пункт; (2) разбить документ на смысловые группы, чтобы всё влезало в запрос; (3) два аналитика независимо дают список затронутых пунктов с причиной, местом правки и уверенностью; (4) судья выбирает итог. В чате для небольшого документа достаточно первых двух шагов и «судьи».

🔬

Схема метода

ШАГ 1 (очистка): пункт + 5 предыдущих → убрать неоднозначные «он/система/это» → пункт без двусмысленностей
         (обогащение): сводки разделов документа → 3 самых близких → справка 3-5 строк по пункту
ШАГ 2: сгруппировать обогащённые пункты по смыслу (чтобы группа влезла в запрос)
ШАГ 3: для каждой группы два аналитика отдельно → список затронутых пунктов + причина + где править + уверенность
        (на входе: пункты группы, запрос на изменение, граф зависимостей)
ШАГ 4: судья читает оба списка → итоговый список + причина по каждому пункту

Шаги 1-4 в статье — отдельные запросы к разным моделям; первый шаг сам состоит из трёх малых запросов.

🚀

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

⚠️ Метод для длинных документов, где пункты ссылаются друг на друга (ТЗ, регламенты, договоры, условия тарифов). Для короткого списка из десятка требований он избыточен.

Задача: продуктовый менеджер доставки «Самокат»-подобного сервиса добавляет в ТЗ мобильного приложения оплату через СБП. Нужно найти все пункты ТЗ, которые теперь придётся менять: возвраты, чеки, акции, статусы заказа, поддержка.

Промпт для аналитика (после того, как пункты очищены и дополнены справкой):

Ты аналитик изменений в требованиях. Тебе даны запрос на изменение, группа пунктов ТЗ и список зависимостей между пунктами в формате «пункт А зависит от пункта Б».

Найди все пункты группы, которые придётся изменить из-за этого запроса. Учитывай не только прямое влияние, но и цепочки: если изменён пункт X, а пункт Y зависит от X, проверь и Y.

Для каждого затронутого пункта укажи:
- Пункт: <номер и текст>
- Причина: <почему затронут>
- Где менять: <какая часть формулировки>
- Уверенность: <0-100>

Если пункт не затронут, не включай его в ответ.

Запрос на изменение: Добавить оплату заказа через СБП.
Пункты группы: {пункты}
Зависимости: {зависимости}

Результат: модель выдаст список из нескольких пунктов, к каждому причина, место правки и уверенность. Если запустить это дважды в разных чатах, а потом попросить третью модель выбрать итог из двух списков, ложных пунктов в итоге будет меньше.

🧠

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

Слабость модели. Два типа ошибок: (1) в длинном контексте нужные детали теряются, особенно в середине; (2) пункт вроде «система должна уведомить пользователя» непонятен без соседей, и модель гадает, о какой «системе» идёт речь. Результат: пропущенные цепочки последствий и лишние «затронутые» пункты.

Сильная сторона. Модель хорошо переписывает отдельный пункт, подставляя нужного героя вместо «он/система», и хорошо сжимает раздел документа в короткую сводку. Она также неплохо сверяет два списка и выбирает лучший.

Как метод это использует. Сначала по маленьким кускам делается «понятный» пункт, потом короткая справка из документа добавляется только по теме этого пункта (в статье берут три самых близких раздела, а не всё подряд). Два независимых аналитика дают разнообразие мнений, а судья отсекает слабые. Граф зависимостей подсказывает, где искать цепочку, чтобы модели не приходилось угадывать.

Рычаги: - Число соседних пунктов для очистки (в статье пять) → больше для документов, где ссылки дальние. - Сколько разделов брать в справку (в статье три) → меньше, чтобы убрать шум; больше, чтобы не терять факты. - Формат справки. Список коротких предложений вместо абзацев: авторы заметили, что модель так даёт точные самостоятельные факты. - Поле «уверенность» → сделай порог для судьи: пункты с низкой уверенностью проверять в первую очередь.

📋

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

Это три запроса из статьи (переведены), сохранена их структура.

1. Раскрытие неоднозначностей

Ниже перечислены ранее определённые пункты. Используй их как контекст, чтобы раскрыть неоднозначные ссылки в текущем пункте. Замени неоднозначные ссылки (например, местоимения или расплывчатые именные группы) на явные, если их можно определить по предыдущим пунктам. Если неоднозначностей нет, верни текущий пункт без изменений.
Предыдущие пункты: {5_предыдущих_пунктов}
Текущий пункт: {пункт}
Формат ответа:
- Обоснование: <текст>
- Пункт без неоднозначностей: <текст>

2. Сжатие раздела

Сократи следующий текст, сохранив ключевую информацию, понятия и знания предметной области:
Текст: {раздел}

3. Обогащение пункта справкой

Тебе даны несколько разделов документа, отобранных по близости к пункту. Для пункта найди и выпиши информацию из этих разделов, которая его обогащает: добавляет контекст предметной области, поясняет объекты и ссылки, снимает неоднозначность, объясняет связанные функции или ограничения, добавляет недостающие сведения. Включай только то, что прямо относится к пункту, без домыслов и посторонних подробностей.
Разделы: {три_раздела}
Пункт: {пункт}
Формат ответа: маркированный список из отдельных предложений

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

Что подставлять: {5_предыдущих_пунктов} — пять пунктов выше по документу; {раздел} — раздел документа; {три_раздела} — три самые близкие по теме сводки; {пункт} — одно требование.

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

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

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

LLM спросит, что у тебя за документ, как разбит на пункты, есть ли ссылки между пунктами и какое изменение ты хочешь проверить. Это нужно, чтобы правильно подставить соседние пункты для раскрытия ссылок и собрать список зависимостей.

⚠️

Ограничения

⚠️ Только автомобильные требования. Проверка шла на трёх наборах требований из автомобильной области, размеченных вручную. Для договоров, ТЗ интернет-магазина или регламентов результат не проверялся.

⚠️ Нужен граф зависимостей. В статье он входит в метод, и именно он дал самый заметный и стабильный вклад. Если зависимости между пунктами никто не записал, придётся сначала составить их (отдельная работа).

⚠️ Нужен конвейер. Много запросов подряд, группировка по смыслу и отбор близких разделов в статье делаются программой. В чате это возможно вручную только для небольшого документа.

⚠️ Часть деталей недоступна. В переданном тексте обрывается описание группировки, а промпты аналитиков и судьи, и разбор влияния отдельных частей метода дан только в кратком виде из введения.

⚠️ Не замена эксперту. Метод даёт список для проверки человеком: он выше по точности, но не абсолютно.

🔍

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

Авторы (Оттавский университет вместе с инженерами General Motors) собрали три набора данных из автомобильных требований, где эксперты вручную разметили, какие пункты затрагивает каждое изменение. Свой метод сравнили с четырьмя современными подходами из разных групп: через зависимости, через модели, через языковые приёмы и через LLM. Самым сильным соперником оказался ProReFiCIA, тоже на LLM.

Итог: в среднем полнота около 87%, точность около 76%, мера F1 около 81%, а у ближайшего конкурента F1 было около 55%. Главный выигрыш пришёлся на точность: у конкурента точность около 41%, у DRILS около 76%, то есть в два раза меньше ложных тревог, которые аналитику надо разбирать руками. Метод при этом дешевле.

Затем «выключали» части метода по одной. Все вспомогательные данные (причина, место правки, уверенность, очистка, обогащение, группировка, граф) по отдельности помогли, а вместе подняли среднюю полноту с 71% до 87%. Самый сильный и стабильный вклад дал граф зависимостей: с ним F1 вырос примерно с 77% до 81%. Вывод для практики: структурированная подсказка о связях между пунктами работает лучше, чем «ещё больше контекста».

💡

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

🔧 Техника: добавить «судью с критиком» → меньше пропусков

После судьи запусти отдельный запрос: «Найди пункты, которые судья мог пропустить. Для каждого укажи, почему он может быть затронут». Это моя вариация, в статье не проверялась.

🔧 Техника: перенести на договор → какие пункты затронет правка

Вместо пунктов ТЗ бери пункты договора поставки, а вместо графа зависимостей составь список «пункт А ссылается на пункт Б» (например, «штраф по п. 7.2 зависит от срока по п. 3.1»). Это также моя вариация.

🔗

Ресурсы

DRILS: Dependency-based Requirement Change Impact Analysis Using LLMs (ACM, 2026). Авторы: Romina Etezadi, Ikram Darif, Lionel Briand (University of Ottawa; Lero Centre, University of Limerick), Ramesh S, Prakash Peranandam (General Motors). Сравнивали с ProReFiCIA; для первого шага использовали llama3.1-70b. Авторы публикуют три размеченных набора данных.


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

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

Проблема: просишь модель найти, что заденет правка в длинном ТЗ, и получаешь кучу лишних пунктов. Метод DRILS позволяет находить именно те пункты, которые придётся переписать вслед за изменением, включая цепочки последствий. Фишка: сначала каждый пункт делают самодостаточным, и только потом ищут влияние. Из пункта убирают «он», «система», «это» и добавляют короткую справку из самого документа. Затем два независимых аналитика дают свои списки, а судья собирает итог. Ложных тревог становится меньше, потому что модель больше не гадает, о чём речь.

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

Работает как редакция с двумя корректорами и главным редактором. Один корректор мог проглядеть. Два проверяют отдельно, а судья берёт из двух списков только то, что выдержало проверку. Процесс такой: очистить пункт → сгруппировать по смыслу → два аналитика → судья. Сверху лежит граф зависимостей: список вида «пункт А зависит от пункта Б». Он подсказывает, где искать цепочку. Модели не надо угадывать связи самой. Прикол в том, что главный вклад дал не хитрый промпт, а эта скучная карта связей.

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

У модели две слабости. В длинном тексте нужные детали теряются, особенно в середине. А пункт «система должна уведомить пользователя» без соседей непонятен: какая система, какой пользователь? Модель гадает и тащит в ответ лишнее. Зато переписать один пункт с нормальными героями она умеет. Сжать раздел в короткую сводку тоже. И сверить два списка тоже. Метод ставит модель только на те задачи, где она сильна, а гадать не заставляет. Справку берут из трёх самых близких разделов, а не из всего документа. Так в запросе меньше шума. Два аналитика дают разнообразие мнений, судья отсекает слабое. Честно: цифр точности в доступной части статьи нет. Проверяли на трёх наборах автомобильных требований, размеченных вручную.

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

Длинные документы с перекрёстными ссылками (ТЗ, регламенты, договоры, условия тарифов) → оценка, какие пункты придётся менять после правки, особенно когда пунктов много и они зависят друг от друга. НЕ подходит для короткого списка из десятка требований: там это лишняя возня. Ещё не проверено вне автомобильной области. Если связи между пунктами никто не записал, сначала придётся составить граф зависимостей. Это отдельная работа. Результат отдавай человеку на проверку, а не принимай на веру.

Мини-рецепт

1. Разбери пункты: возьми каждый пункт и 5 пунктов выше него, попроси заменить «он/система/это» на конкретных героев
2. Сожми разделы: сделай короткую сводку каждого раздела документа
3. Добавь справку: для пункта возьми 3 ближайшие по теме сводки и выпиши факты списком коротких предложений
4. Собери граф: запиши, какой пункт от какого зависит, в формате «А зависит от Б»
5. Запусти двух аналитиков: в двух отдельных чатах дай группу пунктов, запрос на изменение и граф. Пусть выдадут пункт, причину, где менять и уверенность от 0 до 100
6. Позови судью: в третьем чате дай оба списка и попроси итог с причиной по каждому пункту
7. Проверь вручную: начни с пунктов с низкой уверенностью

Примеры

[ПЛОХО] : Вот весь документ на 200 пунктов. Что изменится, если добавить оплату через СБП?
[ХОРОШО] : Ты аналитик изменений в требованиях. Тебе даны запрос на изменение, группа пунктов ТЗ и список зависимостей в формате «пункт А зависит от пункта Б». Найди пункты, которые придётся изменить, учитывая цепочки: если изменён пункт X, а Y зависит от X, проверь и Y. Для каждого укажи: пункт, причину, где менять, уверенность от 0 до 100. Незатронутые пункты не включай. Запрос: добавить оплату заказа через СБП. Пункты группы: [вставь]. Зависимости: [вставь]. Запусти это в двух чатах, потом дай оба списка третьему чату: Вот два списка затронутых пунктов. Собери итоговый список и объясни, почему каждый пункт в нём.
Источник: DRILS: Dependency-based Requirement Change Impact Analysis Using LLMs
ArXiv ID: 2610.33920 | Сгенерировано: 2026-10-29 13:27

Проблемы LLM

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

Методы

МетодСуть
Самодостаточные пункты перед анализом — меньше ложных тревогОбработай каждый пункт отдельным коротким запросом. Первый: дай пять предыдущих пунктов и текущий, попроси заменить расплывчатые ссылки на явные. Если неясностей нет, пусть вернёт пункт как есть. Второй: сожми разделы документа в краткие сводки. Третий: возьми три сводки, самые близкие по теме к пункту, и выпиши из них только то, что прямо относится к пункту, списком коротких предложений. Почему работает: модель хорошо переписывает мелкий кусок и хорошо сжимает текст. Маленькая задача решается точнее большой. Справка по теме снимает догадки и не засоряет запрос. Когда применять: длинное ТЗ, регламент, договор, где пункты ссылаются друг на друга. Когда не нужно: короткий список из десятка требований
Два независимых аналитика и судья — отсев слабых ответовЗапусти одну и ту же задачу дважды в разных чатах. Каждый аналитик даёт список затронутых пунктов: причина, где менять, уверенность от 0 до 100. Затем третий запрос получает оба списка и собирает итог с причиной по каждому пункту. Почему работает: два независимых взгляда ловят разные ошибки. Судья сверяет списки, а это для модели проще, чем искать с нуля. Ложные пункты, которые видит только один аналитик, отсекаются. Применяй: пункты с низкой уверенностью проверяй вручную первыми. Не работает: если аналитики ошибаются одинаково, судья ничего не исправит
Карта зависимостей в запросе — поиск цепочек последствийВместе с правкой и пунктами дай список связей вида «пункт А зависит от пункта Б». Попроси проверять не только прямое влияние, но и цепочки: изменён X, значит проверь всё, что зависит от X. Почему работает: модели не нужно угадывать, где искать следствия. Она идёт по готовым связям. Когда применять: связи известны или их легко записать. Когда не работает: связей никто не описал, их придётся составить заранее

Тезисы

ТезисКомментарий
Ясные короткие куски дают больше, чем длинный контекст целикомКогда пункт понятен сам по себе, модели не нужно угадывать смысл и искать нужное в середине длинного текста. Ошибок становится меньше, а ложных срабатываний особенно. Применяй: перед сложным анализом документа прогони каждый кусок через запрос «раскрой неоднозначные ссылки»
Справка только по теме лучше, чем весь документЛишний контекст отвлекает модель и размывает нужные факты. Три близких по теме раздела дают пользу, а весь документ приносит шум. Хорошо работает справка в виде списка коротких самостоятельных предложений. Применяй: подбирай к вопросу только ближайшие разделы, остальное не добавляй
Явная карта связей помогает находить цепочки последствийБез связей модель смотрит на пункты по отдельности и теряет следствия второго и третьего порядка. С записанными связями она проверяет каждое звено цепочки. Применяй: записывай зависимости между пунктами отдельным списком и давай рядом с самим вопросом
📖 Простыми словами

DRILS: Dependency-based Requirement Change Impact AnalysisUsingLLMs

arXiv: 2610.33920

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

Это как выдернуть «непонятный проводок» в старом щитке, надеясь отключить бра, а в итоге обесточить весь подъезд. Формально ты тронул одну мелочь, но посыпалась вся скрытая проводка. Обычная нейросеть тут просто тычет пальцем в небо, потому что понятия не имеет, куда этот провод ведёт и что на него завязано.

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

Тестировали метод на требованиях к ПО, но принцип универсален. Подход идеально заходит для любых сложных документов: запутанных договоров, регламентов безопасности или условий тарифов. Везде, где один абзац неявно завязан на «пункт 4.2 с учётом приложения Б», человеческий мозг плавится, а DRILS находит концы. Для записки на две страницы это избыточно, но на документах от 100 страниц спасает от катастрофы.

Короче: скармливать ТЗ целиком с вопросом «что поменять» — это гарантированный облом. Хочешь адекватный анализ изменений — заставляй модель сначала разворачивать скрытый контекст, а потом внедряй перекрёстную проверку несколькими агентами. Иначе неучтённая правка вылезет на проде, и разбираться придётся уже в режиме пожара.

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

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

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