3,583 papers
arXiv:2601.17789 74 25 янв. 2026 г. FREE

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

КЛЮЧЕВАЯ СУТЬ
LLM пропускает 60% нарушений когда проверяет 5+ требований одновременно. Просишь проверить текст на соответствие брифу (тон + формат + ключевые слова + длина) — модель говорит "всё ОК", а половина требований не выполнена. Метод NSVIF позволяет проверять соответствие ответа LLM сложной инструкции с точностью 77% вместо 51% через разбиение на мелкие требования. Фишка: не проверяй всё сразу — раздели инструкцию на список пунктов, проверь каждый отдельно, собери результат. Логические требования (количество слов, наличие фразы) через код или ручной подсчёт — 95% точности. Семантические (тон, стиль) через LLM — 70-80%.
Адаптировать под запрос

TL;DR

NSVIF — фреймворк, который проверяет следует ли ответ LLM инструкции из промпта. Ключевая идея: разбить сложную инструкцию на мелкие требования (constraints), проверить каждое отдельно, объединить результаты через формальную логику. Метод различает логические требования (проверяемые объективно: количество слов, наличие ключевых фраз, структура) и семантические (субъективные: тон, тема, стиль).

LLM плохо проверяют комплексные инструкции напрямую. Когда в промпте 5-7 требований (формат + тон + ключевые слова + длина + структура), модель теряет фокус и пропускает нарушения. Попроси проверить "всё сразу" — модель скажет "всё ок", хотя половина требований не выполнена. В агентских workflows ошибки накапливаются от шага к шагу — если первый агент пропустил нарушение, следующий работает с битыми данными.

NSVIF использует три шага: (1) извлекает список требований из инструкции и связи между ними, (2) проверяет каждое требование отдельно — логические через код, семантические через LLM-промпт, (3) объединяет результаты и выдает вердикт с объяснением что именно нарушено и почему. Читатель может применить этот принцип мануально в чате — попросить LLM разбить инструкцию, проверить по пунктам, собрать результат.


🔬

Схема метода

ИССЛЕДОВАТЕЛЬСКАЯ РЕАЛИЗАЦИЯ (требует код):
ШАГ 1: Formulation Agent → список требований + логическая формула связей
ШАГ 2: Checking Agent → для каждого требования код проверки или LLM-промпт
ШАГ 3: Solver Agent → выполняет Z3 программу → итоговый вердикт + объяснение

АДАПТАЦИЯ ДЛЯ ЧАТА (мануальный workflow):
ШАГ 1: Попроси LLM извлечь требования из инструкции → список пунктов
ШАГ 2: Попроси проверить каждый пункт отдельно → вердикты по пунктам
ШАГ 3: Попроси объединить результаты → итоговый вывод + указание на нарушения

Исследовательская версия требует Python + Z3 solver + multi-agent system. Адаптация для чата — три последовательных запроса в одном диалоге.


🚀

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

Задача: SMM-менеджер получил от клиента бриф на пост про новый тариф интернет-провайдера. Инструкция сложная: тон дружелюбный но профессиональный, формат — 3 абзаца, обязательно упомянуть "безлимитный трафик" и "стабильное соединение", НЕ упоминать конкурентов, длина 80-100 слов, призыв к действию в конце. ChatGPT сгенерировал текст. Нужно проверить — всё ли выполнено?

Промпт (мануальный workflow в чате):

Шаг 1 — Извлеки требования:

Вот инструкция для текста:
[вставить бриф клиента]

Вот сгенерированный текст:
[вставить текст от LLM]

Извлеки из инструкции все требования списком. Раздели на:
- Логические (объективные: количество слов, структура, ключевые фразы)
- Семантические (субъективные: тон, стиль, тема)

Выдай нумерованный список всех требований.

---

Шаг 2 — Проверь каждое требование:

Теперь проверь текст по каждому требованию из списка.
Для каждого пункта выдай:
- Требование
- Выполнено / Не выполнено
- Объяснение (что проверил, почему такой вердикт)

Проверяй каждое требование независимо, не смешивай.

---

Шаг 3 — Итоговый вердикт:

На основе проверки всех требований выдай:
1. Итоговый результат: СООТВЕТСТВУЕТ / НЕ СООТВЕТСТВУЕТ инструкции
2. Список нарушенных требований (если есть)
3. Рекомендации по исправлению

Результат:

Модель выдаст три блока: 1. Список требований — 7-8 пунктов с разделением на логические и семантические 2. Проверка по пунктам — для каждого вердикт + объяснение (например: "Требование 4: упомянуть 'безлимитный трафик' — НЕ ВЫПОЛНЕНО. В тексте эта фраза отсутствует") 3. Итоговый вердикт — "НЕ СООТВЕТСТВУЕТ" + список из 2-3 нарушенных пунктов + что исправить

Вместо размытого "текст хороший" или "что-то не то" — конкретика по каждому требованию и точечные указания на проблемы.


🧠

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

LLM теряет фокус на композиции требований. Когда в промпте 5-7 условий, модель пытается оценить "общее впечатление" и пропускает конкретные нарушения. Попроси проверить текст на соответствие сложному брифу — модель скажет "в целом соответствует", упустив что ключевая фраза не упомянута или длина превышена на 30 слов.

LLM хорошо проверяет одно простое требование. Спроси "есть ли в тексте слово X" — модель ответит точно. Спроси "какой тон текста" — модель даст внятную оценку. Проблема не в способности проверять, а в способности держать много требований одновременно.

Метод использует divide-and-conquer. Разбивает сложную задачу на серию простых: вместо "проверь 7 условий сразу" даём "проверь условие 1", "проверь условие 2" и так далее. Каждая проверка — в фокусе, результаты — точные. Финальная логика объединения ("все ДА → соответствует", "хотя бы одно НЕТ → не соответствует") тривиальна и не требует LLM.

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

  • Детализация разбиения — можешь объединить похожие требования ("все ключевые слова") или разбить детально ("каждое слово отдельно"). Детальнее → точнее, но дороже по токенам.
  • Способ проверки — логические требования можешь проверить сам (посчитать слова, найти фразу Ctrl+F) без LLM вообще. Семантические — через LLM неизбежно.
  • Строгость объединения — можешь установить "все требования обязательны" или "критичны только 3 из 7". Адаптируй логику под контекст.

📋

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

Проверь выполнение инструкции по шагам:

**ШАГ 1 — ИЗВЛЕЧЕНИЕ ТРЕБОВАНИЙ**

Инструкция: {твоя_инструкция}
Ответ LLM: {полученный_текст}

Извлеки из инструкции все требования списком. Раздели на:
- Логические (объективно проверяемые: длина, структура, ключевые слова, формат)
- Семантические (субъективные: тон, стиль, тема, настроение)

Выдай нумерованный список.

---

**ШАГ 2 — ПРОВЕРКА КАЖДОГО ТРЕБОВАНИЯ**

Проверь ответ по каждому требованию из списка отдельно.

Для каждого пункта выдай:
- Номер и формулировка требования
- Вердикт: ВЫПОЛНЕНО / НЕ ВЫПОЛНЕНО
- Объяснение: что конкретно проверил, какие данные учёл, почему такой вердикт

Проверяй требования независимо друг от друга. Не смешивай.

---

**ШАГ 3 — ИТОГОВЫЙ РЕЗУЛЬТАТ**

На основе проверки всех требований выдай:

1. Итоговый вердикт: СООТВЕТСТВУЕТ / НЕ СООТВЕТСТВУЕТ инструкции
2. Обоснование: сколько требований выполнено из общего числа
3. Список нарушенных требований (если есть) с номерами
4. Рекомендации: что исправить для полного соответствия

Что подставлять: - {твоя_инструкция} — исходный промпт или бриф с требованиями - {полученный_текст} — ответ LLM, который нужно проверить


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

Вот метод проверки выполнения сложных инструкций через разбиение на требования.
Адаптируй под мою задачу: [опиши что нужно проверить — текст от LLM на соответствие брифу / ответ агента на выполнение инструкций / контент на соответствие гайдлайнам].

Задавай вопросы чтобы заполнить поля.

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

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


🧠

Почему это работает (детали из исследования)

Исследователи протестировали NSVIF на VIFBENCH — бенчмарке из 820 примеров с инструкциями разной сложности (от 2 до 10 требований в одной инструкции). Сравнивали с LLM-as-a-judge (стандартный подход: дай LLM инструкцию + ответ, спроси "соответствует?").

Результаты: NSVIF показал F1 score 77.2% против 51.0% у baseline. Разница особенно велика на инструкциях с 5+ требованиями — там baseline падает до 40-45%, а NSVIF держит 70-75%. Причина: baseline пытается оценить "всё сразу", NSVIF проверяет по пунктам.

Ключевые находки:

  1. Разделение логики и семантики критично. Логические требования (количество слов, наличие фразы) можно проверить объективно через код или ручной подсчёт — точность ~95%. Семантические (тон, стиль) требуют LLM — точность ~70-80%, зависит от субъективности. NSVIF применяет точный метод где можно, LLM — где неизбежно.

  2. Детальный фидбек улучшает исправления. Когда NSVIF указывает "нарушено требование 3: не упомянуто ключевое слово X", LLM исправляет точечно. Когда baseline говорит "что-то не так с текстом", LLM переписывает всё и может сломать то что работало.

  3. Метод масштабируется на длинные инструкции. Тестировали на инструкциях до 10 требований — NSVIF держит качество, baseline деградирует. Для читателя: если бриф содержит 7-8 пунктов, разбиение обязательно.

Механика работы multi-agent системы (для понимания, не для применения): - Formulation Agent извлекает требования через LLM и кодирует связи между ними в формулу первого порядка (First-Order Logic). Использует Z3 SMT solver для решения constraint-satisfaction problem. - Checking Agent для логических требований генерирует Python-код (например: return len(text.split()) >= 80 and len(text.split()) <= 100). Для семантических — составляет zero-shot промпт ("Какой тон текста?"). - Solver Agent запускает код и промпты, собирает результаты, решает логическую формулу через Z3, выдаёт вердикт + trace нарушений.

Читателю не нужен код — принцип работает мануально через три запроса в чате. Эффект тот же: разбиение → проверка по пунктам → объединение.


🔍

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

Исследователи из University of Illinois, USTC и Microsoft Research создали:

  1. NSVIF framework — multi-agent систему на Python с интеграцией Z3 SMT solver. Три агента (Formulation, Checking, Solver) оркестрированы через AutoGen framework. Проверка логических требований — через генерацию кода (codegen), семантических — через LLM-промпты.

  2. VIFBENCH — бенчмарк для оценки верификаторов инструкций. 820 примеров с fine-grained labels: не просто "соответствует/не соответствует", а "какое конкретно требование нарушено и почему". Инструкции синтезированы из 10 типов constraints (8 логических + 2 семантических), скомбинированных с разной сложностью (2-10 constraints в одной инструкции). Ответы LLM — часть сгенерированы и проверены на соответствие, часть мутированы для создания нарушений.

Тестировали на GPT-4o, GPT-4o-mini, Claude-3.5-Sonnet. Сравнивали NSVIF с тремя вариантами LLM-as-a-judge: - Baseline — стандартный промпт "проверь соответствие" - GEPA-CoT — Chain-of-Thought для улучшения reasoning - GEPA-SC — Self-Consistency (5 прогонов + majority vote)

Метрики: Precision, Recall, F1 score, Pass@1 (доля корректных вердиктов).

Ключевой результат: NSVIF +26.2 pp F1 относительно лучшего baseline (GEPA-CoT: 51.0% → NSVIF: 77.2%). На сложных инструкциях (7+ constraints) разница ещё больше: baseline ~40%, NSVIF ~72%.

Также показали что feedback от NSVIF улучшает instruction-following LLM без post-training — просто добавляли детальный trace нарушений в re-prompting, точность выросла на 15-20% относительно обычного "попробуй снова".


⚠️

Ограничения

⚠️ Избыточность для простых инструкций: Если требование одно ("напиши на тему X"), метод с разбиением дороже по токенам чем прямая проверка. Разбиение оправдано при 3+ требованиях.

⚠️ Субъективность семантических требований: Оценка тона, стиля, настроения зависит от LLM которую используешь для проверки. Разные модели или температуры → разные вердикты. Логические требования объективны, семантические — нет.

⚠️ Стоимость multi-step проверки: Мануальный workflow требует 3 последовательных запроса в чате. Это 3x токенов относительно одного запроса "проверь всё". Для частых проверок — ощутимо по деньгам.

⚠️ Не заменяет экспертную оценку: Метод проверяет соответствие инструкции, не качество контента. Если инструкция требует "упомянуть продукт", метод проверит наличие упоминания, но не оценит убедительность аргументов или креативность подачи.


🔗

Ресурсы

Исследование: "Neuro-Symbolic Verification on Instruction Following of LLMs"

Авторы: Yiming Su (University of Illinois Urbana-Champaign), Kunzhao Xu (University of Science and Technology of China), Yanjie Gao (Microsoft Research, corresponding author), Fan Yang (Microsoft Research), Cheng Li (USTC), Mao Yang (Microsoft Research), Tianyin Xu (UIUC)

Связанные работы упомянутые в исследовании: - ComplexBench (Wen et al., 2024) — benchmark для сложных составных инструкций - LLMBar (Zeng et al., 2024) — ранний benchmark для instruction-following, использует preference вместо абсолютной проверки - DSPy (Khattab et al., 2024), PDL (Vaziri et al., 2024), LMQL (Beurer-Kellner et al., 2023) — фреймворки для constrained decoding - LINC (Olausson et al., 2023), Logic-FM (Pan et al., 2023) — использование LLM для формулирования логических утверждений и theorem proving


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

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

LLM пропускает 60% нарушений когда проверяет 5+ требований одновременно. Просишь проверить текст на соответствие брифу (тон + формат + ключевые слова + длина) — модель говорит "всё ОК", а половина требований не выполнена. Метод NSVIF позволяет проверять соответствие ответа LLM сложной инструкции с точностью 77% вместо 51% через разбиение на мелкие требования. Фишка: не проверяй всё сразу — раздели инструкцию на список пунктов, проверь каждый отдельно, собери результат. Логические требования (количество слов, наличие фразы) через код или ручной подсчёт — 95% точности. Семантические (тон, стиль) через LLM — 70-80%.

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

Метод работает в три шага. Первый: извлечь из инструкции все требования списком — раздели на логические (объективные: длина, структура, ключевые слова) и семантические (субъективные: тон, стиль, тема). Второй: проверить каждое требование независимо — логические через код или ручной подсчёт, семантические через отдельный промпт LLM. Третий: объединить результаты через простую логику — все выполнены → соответствует, хотя бы одно нарушено → не соответствует, выдать список нарушений. Исследовательская реализация использует multi-agent систему с Z3 solver, но принцип работает мануально через три запроса в чате.

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

LLM теряет фокус на композиции требований. Когда в промпте 5-7 условий, модель пытается оценить "общее впечатление" и пропускает конкретные нарушения. Попроси проверить текст на соответствие сложному брифу — модель скажет "в целом соответствует", упустив что ключевая фраза не упомянута или длина превышена на 30 слов. LLM отлично проверяет одно простое требование. Спроси "есть ли в тексте слово X" — модель ответит точно. Спроси "какой тон текста" — модель даст внятную оценку. Проблема не в способности проверять, а в способности держать много требований одновременно. Тесты на бенчмарке VIFBENCH (820 примеров): NSVIF показал F1 score 77.2% против 51.0% у baseline. Разница особенно велика на инструкциях с 5+ требованиями — там baseline падает до 40-45%, NSVIF держит 70-75%.

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

Проверка соответствия ответов LLM сложным инструкциям → конкретно для агентских workflows, контент-менеджмента, генерации по брифам, особенно когда в промпте 5+ требований (формат + тон + ключевые слова + длина + структура). Полезно для SMM, копирайтинга, технических спецификаций — везде где ответ должен соответствовать детальному брифу. НЕ подходит для простых инструкций с 1-2 требованиями — overhead не оправдан.

Мини-рецепт

1. Извлеки требования: Попроси LLM извлечь из инструкции все требования списком. Раздели на логические (объективно проверяемые: длина, структура, ключевые слова, формат) и семантические (субъективные: тон, стиль, тема, настроение). Выдай нумерованный список.

2. Проверь каждое требование отдельно: Попроси LLM проверить ответ по каждому требованию из списка независимо. Для каждого пункта выдать: номер и формулировка требования, вердикт (ВЫПОЛНЕНО / НЕ ВЫПОЛНЕНО), объяснение (что конкретно проверил, какие данные учёл, почему такой вердикт). Логические требования можешь проверить сам — посчитать слова, найти фразу через Ctrl+F, проверить структуру.

3. Объедини результаты: Попроси LLM выдать итоговый вердикт на основе проверки всех требований. Формат: СООТВЕТСТВУЕТ / НЕ СООТВЕТСТВУЕТ инструкции, обоснование (сколько требований выполнено из общего числа), список нарушенных требований с номерами, рекомендации что исправить.

Примеры

[ПЛОХО] : Проверь соответствует ли этот текст брифу: тон дружелюбный но профессиональный, 3 абзаца, упомянуть "безлимитный трафик" и "стабильное соединение", НЕ упоминать конкурентов, 80-100 слов, призыв к действию в конце. Текст: [вставить текст] — модель проверит "на глаз", пропустит 2-3 нарушения, скажет "в целом соответствует".
[ХОРОШО] : Три последовательных запроса. Первый: Извлеки из этого брифа все требования списком, раздели на логические и семантические: [вставить бриф]. Второй: Проверь этот текст по каждому требованию отдельно, для каждого выдай вердикт + объяснение: [вставить текст]. Третий: На основе проверки выдай итоговый вердикт: соответствует или нет, список нарушений, что исправить. Результат — конкретика по каждому требованию, точечные указания на проблемы вместо размытого "что-то не то".
Источник: Neuro-Symbolic Verification on Instruction Following of LLMs
ArXiv ID: 2601.17789 | Сгенерировано: 2026-01-27 05:31

Проблемы LLM

ПроблемаСутьКак обойти
Модель пропускает нарушения в сложных инструкцияхДаёшь промпт с 5-7 требованиями. Формат + тон + длина + ключевые слова + структура. Модель проверяет — говорит "всё соответствует". На деле половина требований нарушена. Модель пытается оценить "общее впечатление". Теряет фокус. Пропускает конкретные нарушения. Критично для агентских систем — ошибки накапливаются от шага к шагуНе проси проверить всё сразу. Разбей на три запроса: (1) "извлеки список требований из инструкции", (2) "проверь каждое требование отдельно", (3) "объедини результаты — что нарушено". Каждая проверка — в фокусе

Методы

МетодСуть
Поэтапная проверка через разбиение требованийШаг 1: Попроси модель извлечь все требования из инструкции списком. Раздели на логические (длина, структура, ключевые слова) и семантические (тон, стиль). Шаг 2: Попроси проверить каждое требование отдельно — один запрос на одну проверку. Шаг 3: Попроси объединить результаты — какие требования нарушены, что исправить. Почему работает: Модель точно проверяет одно простое условие. Теряет фокус когда условий много. Разбиение превращает сложную задачу в серию простых. Применяй: сложные брифы (5+ требований), проверка вывода агентов, контроль соответствия гайдлайнам. Не применяй: простые инструкции (1-2 требования), субъективные оценки без критериев
📖 Простыми словами

Neuro-Symbolic Verification on Instruction Following ofLLMs

arXiv: 2601.17789

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

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

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

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

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

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

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

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