3,583 papers
arXiv:2610.12313 76 8 окт. 2026 г. FREE

Контрфактический аудит правил (OCS): проверка, действительно ли вердикт LLM зависит от правила, которое вы ей дали

КЛЮЧЕВАЯ СУТЬ
Парадокс: модель может давать 90% верных вердиктов и при этом не читать ваше правило. В исследовании вердикты «нарушает / не нарушает» почти не менялись, даже когда правило удаляли целиком или переворачивали наоборот. Метод OCS (Output Compliance Sensitivity, «чувствительность вердикта к правилу») позволяет проверить, что ответ реально зависит от нормы, которую вы дали модели, а не от здравого смысла. Прогони один и тот же кейс несколько раз и меняй только поле с правилом: удали его, подмени чужим, инвертируй «должен» в «не должен». Если вердикт стоит как вкопанный, это слепой исполнитель, и доля изменившихся вердиктов близкая к нулю = правило не используется.
Адаптировать под запрос
⚡

TL;DR

OCS (Output Compliance Sensitivity) — простой тест на «слепого исполнителя». Берёте один и тот же случай и прогоняете его несколько раз, меняя только правило. Первый раз правило на месте. Потом его удаляют, подменяют правилом из другой области или инвертируют («должен» превращается в «не должен»). Если вердикт не меняется, он вряд ли опирался на правило.

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

Суть метода: три возмущения правила (удалить, подменить на чужое, инвертировать обязательства), одинаковый случай, подсчёт доли изменившихся вердиктов. Заодно авторы нашли, где модель правило всё-таки использует: на кейсах, где без правила ответ портится. Там замена правила меняла вердикт почти всегда. Попытки «починить» слабую связь с правилом более строгим промптом или вмешательством во внутренности модели, по их данным, не помогли.

🔬

Схема метода

ШАГ 1: Собрать выборку кейсов с известным верным ответом (отдельные запросы)
ШАГ 2: Прогнать с настоящим правилом → базовый вердикт
ШАГ 3: Прогнать с тем же кейсом, но правило:
        а) удалено (пустое поле)
        б) заменено правилом из другой области
        в) инвертировано («должен» → «не должен»)
ШАГ 4: Для каждого кейса отметить: вердикт изменился? (да/нет)
ШАГ 5: Посчитать долю изменений по условиям
        → почти 0 = модель правило не использует
ШАГ 6: Отдельно выделить кейсы, где без правила ответ стал неверным
        → проверить, что на них замена правила ломает вердикт

Все шаги — отдельные запросы к модели. Менять нужно только поле с правилом.

🚀

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

Задача: Юрист интернет-магазина из Екатеринбурга внедрил LLM-проверку рекламных текстов на соответствие ФЗ «О рекламе». На тесте из 50 текстов модель дала 90% верных вердиктов, и юрист хочет подписать отчёт «система применяет закон». Перед этим он решает проверить, правда ли ответы зависят от нормы.

Промпт (запускается в новых чатах, по 20–30 кейсам, меняется только блок «Правило»):

Ты проверяешь рекламный текст на соответствие правилу.

Правило:
{ПРАВИЛО}

Рекламный текст:
«Только у нас: препарат вылечит гипертонию за 3 дня. Гарантия результата 100%. Скидка 40% до пятницы!»

Ответь одним словом: СООТВЕТСТВУЕТ или НАРУШАЕТ.

Четыре прогона: - Контроль: {ПРАВИЛО} = «Реклама лекарственных средств не должна содержать гарантий положительного результата и обещаний излечения». - Удаление: {ПРАВИЛО} = пусто. - Подмена: {ПРАВИЛО} = случайная норма из другой области, например «Обработка персональных данных допускается только при наличии согласия субъекта». - Инверсия: {ПРАВИЛО} = «Реклама лекарственных средств должна содержать гарантии положительного результата и обещания излечения».

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

🧠

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

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

Что модель умеет хорошо. Она чутко реагирует на то, что действительно нужно для ответа. На кейсах, где без правила вердикт портится, модели в большинстве случаев меняли вердикт при подмене правила. То есть связь с правилом есть, но включается только когда без правила не обойтись.

Как метод использует это. Он не просит модель объяснить рассуждение (объяснения бывают придуманными). Он смотрит на поведение: меняется ли ответ, когда меняешь только правило. Это дешёвая проверка «снаружи». Для неё не нужны доступ к модели и разметка.

Рычаги управления: - Тип возмущения. Удаление показывает, нужен ли вообще текст правила. Подмена показывает, различает ли модель области. Инверсия показывает, читает ли она смысл обязательств. - Выборка. Берите кейсы из вашего реального потока, а не из учебного набора. Показатель сильно зависел от типа задачи: на других наборах он вырос примерно втрое. - Подвыборка «правило необходимо». Выделите кейсы, где без правила ответ стал неверным. Это ваш самый показательный тест. - Инверсия работает только там, где есть обязательные формулировки («должен», «обязан»). Если в правиле их нет, этот прогон не годится.

📋

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

Ты проверяешь {тип_объекта} на соответствие правилу.

Правило:
{правило}

{тип_объекта}:
{текст_кейса}

Ответь одним словом: СООТВЕТСТВУЕТ или НАРУШАЕТ.

Подставьте: {тип_объекта} — что проверяете (рекламный текст, договор, ответ оператора поддержки). {правило} — норма, политика или рубрика. {текст_кейса} — сам случай.

Затем запустите тот же шаблон ещё трижды: с пустым {правило}, с правилом из другой области и с инвертированным правилом («должен» → «не должен»). Сравните вердикты по каждому кейсу.

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

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

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

LLM спросит, что вы проверяете, какое у вас правило и есть ли в нём «обязан/должен». Это нужно, чтобы подготовить четыре варианта поля с правилом: контрольный, пустой, чужой и инвертированный. Она также предложит подходящее «чужое» правило из соседней области.

⚠️

Ограничения

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

⚠️ Починить не удалось: по аннотации, ни более строгий промпт с привязкой к правилу, ни вмешательство во внутренние представления модели не вернули точность на кейсах с наименьшей зависимостью от правила. Раздел с интервенциями в доступном тексте обрезан, деталей промпта нет. Этот вывод ограничен именно протестированными вариантами.

⚠️ Старые и открытые модели: проверяли Llama 3.x, Qwen2.5, Mistral 7B и guard-модель. Фронтирных моделей в тесте не было. Переносится ли картина на сегодняшние ChatGPT, Claude и Gemini, неизвестно. Но проверка у вас дешёвая.

⚠️ Значение зависит от задачи: на другом бенчмарке показатель вырос примерно втрое. Универсального «нормального значения» нет, считать нужно на ваших данных.

⚠️ Guard-модель не по назначению: Llama Guard, адаптированная под произвольные правила вместо своей фиксированной таксономии, дала 51% точности. Это провал несоответствия формата, а не вывод про все защитные модели.

⚠️ Внутренняя проверка недоступна: вторая часть метода (ICS-delta) требует доступа к активациям модели. В чате это не повторить, применим только поведенческий OCS.

🔍

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

Исследователи взяли пять моделей и 20 областей регулирования: защита данных, финансы, кибербезопасность, правила платформ и другие. Из набора OmniCompliance-100K на каждую область взяли по 200 кейсов, почти поровну «нарушает» и «соответствует». Каждый кейс прогнали с настоящим правилом и с тремя искажёнными. Всего получилось около 64 тысяч генераций.

Главная находка: вердикт менялся в среднем в 1–9% случаев (по моделям), хотя случайная независимость дала бы около 50%. Точность без правила оставалась в пределах четырёх пунктов от базовой. Дальше возникал очевидный вопрос: может, правило просто не нужно, потому что кейсы очевидные? Тогда авторы выделили кейсы, где удаление правила превращает верный ответ в неверный (от 94 до 187 на модель). На них подмена правила меняла вердикт в 73–100% случаев. То есть связь с правилом у моделей есть, но включается только когда без правила не обойтись. Обычная проверка на размеченном наборе не видит этих двух режимов.

Удивило, что «починка» не сработала. Усиление правила в промпте и сдвиг внутренних представлений («стиринг») почти не поменяли точность на проблемных кейсах. Местами сдвиг даже вредил: у Llama 3.3-70B на кейсах, чувствительных к правилу, точность упала с 79% до 73%. Для практики вывод такой: надёжнее проверять поведение системы на ваших данных, чем надеяться, что правильная формулировка заставит модель читать правило. Ещё одна находка: чувствительность лучше предсказывалась синтаксической глубиной текста правила, чем количеством оговорок и ссылок. Это скорее подсказка, чем доказанный факт, потому что регрессия не достигла значимости.

💡

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

💡 Адаптация для LLM-судьи с рубрикой (моя экстраполяция, в статье не проверялась): если вы оцениваете ответы по рубрике «тон, точность, полнота», прогоните ту же проверку. Удалите рубрику, подмените её другой и инвертируйте критерии. Если оценки почти не меняются, судья оценивает по общему впечатлению, а не по вашим критериям.

Оцени ответ по рубрике. Рубрика:
{рубрика}
Ответ: {ответ}
Дай оценку от 1 до 5.

Запустите с обычной рубрикой, пустой и с инвертированной («чем дружелюбнее, тем хуже»).

🔧 Техника: ограничить проверку «необходимыми» кейсами → сильнее сигнал. Сначала выпишите кейсы, где без правила ответ ухудшился. Затем на них оценивайте замену правила. Так вы смотрите на кейсы, где правило обязано работать, а не на очевидные.

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

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

Парадокс: модель может давать 90% верных вердиктов и при этом не читать ваше правило. В исследовании вердикты «нарушает / не нарушает» почти не менялись, даже когда правило удаляли целиком или переворачивали наоборот. Метод OCS (Output Compliance Sensitivity, «чувствительность вердикта к правилу») позволяет проверить, что ответ реально зависит от нормы, которую вы дали модели, а не от здравого смысла. Прогони один и тот же кейс несколько раз и меняй только поле с правилом: удали его, подмени чужим, инвертируй «должен» в «не должен». Если вердикт стоит как вкопанный, это слепой исполнитель, и доля изменившихся вердиктов близкая к нулю = правило не используется.

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

Это контрфактический тест. Кейс один, меняется одна переменная. Всё остальное заморожено. Три возмущения проверяют три разные вещи: - Удаление: нужен ли вообще текст правила. - Подмена на правило из другой области: отличает ли модель одну область от другой. - Инверсия: читает ли модель смысл обязательств. Если ответ не дрогнул при удалении, подмене и инверсии, правило в ответе не участвовало. Это как проверять, слушает ли водитель навигатор: выключи навигатор и посмотри, изменится ли маршрут. Метод не просит модель объяснять рассуждение. Объяснения бывают придуманными задним числом. Смотрим только на поведение снаружи.

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

Модель отвечает по общему ощущению от всего текста. Кейс «препарат вылечит за 3 дня, гарантия 100%» и так звучит как нарушение. Ответ готов без всякого закона. Точность на тесте остаётся высокой, и рождается иллюзия, что правило применено. Одна точность не отличает «применила» от «угадала». Исследование нашло и обратную сторону. На кейсах, где без правила ответ портится, модели в большинстве случаев меняли вердикт при подмене правила. Связь с правилом у модели есть, но включается только когда без правила не обойтись. На лёгких кейсах она просто не нужна. Ещё одна цифра: на другом наборе тестов показатель вырос примерно втрое. Универсальной нормы нет, считать надо на своих данных. Для проверки не нужны доступ к модели и разметка. Хватит обычного чата.

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

Проверка соответствия → договоры, рекламные тексты, ответы операторов поддержки, внутренние политики. Особенно когда на тесте высокая точность и вы собираетесь подписать отчёт «система применяет норму». Лучше всего брать кейсы из реального потока, а не из учебного набора. Выделите отдельную группу, где без правила модель ошиблась. Она самая показательная. НЕ подходит для инверсии, если в правиле нет обязательных формулировок («должен», «обязан»). Тогда этот прогон не работает. Низкий показатель не значит «модель ошибается». Вердикт может быть верным и без правила. Метод показывает только, что ответ от правила не зависит. Оговорка: проверяли Llama 3.x, Qwen2.5 и Mistral 7B. Современных ChatGPT, Claude и Gemini в тесте не было. Как у них, неизвестно, но проверка дешёвая. Исследователи пробовали чинить слабую связь с правилом более строгим промптом и вмешательством во внутренности модели. Не помогло, хотя детали обрезаны. Метод умеет находить проблему, но не лечить её.

Мини-рецепт

1. Собери кейсы: 20-30 штук из реального потока, у каждого известен верный ответ.
2. Сделай шаблон: правило в отдельном поле, чтобы менять только его.
3. Контрольный прогон: настоящее правило, запиши вердикт по каждому кейсу.
4. Удали правило: оставь поле пустым.
5. Подмени правило: возьми норму из соседней области, например про персональные данные вместо рекламы.
6. Инвертируй: «должен» превращается в «не должен».
7. Каждый прогон делай в новом чате: иначе модель вспомнит прошлые ответы.
8. Посчитай долю изменений: по каждому условию, сколько вердиктов отличается от контроля. Около нуля значит, что модель правило игнорирует.
9. Выдели кейсы «правило необходимо»: где без правила ответ стал неверным. На них замена правила обязана ломать вердикт.

Шаблон:
Ты проверяешь {тип_объекта} на соответствие правилу.

Правило:
{правило}

{тип_объекта}:
{текст_кейса}

Ответь одним словом: СООТВЕТСТВУЕТ или НАРУШАЕТ.


Быстрый старт, чтобы модель сама адаптировала шаблон:
Вот шаблон контрфактического аудита правил. Адаптируй под мою задачу: [твоя задача]. Задавай вопросы, чтобы заполнить поля. Подготовь четыре варианта поля с правилом: настоящий, пустой, чужой и инвертированный.

Примеры

[ПЛОХО] : Прогнал 50 рекламных текстов, модель дала 90% верных вердиктов. Значит, система применяет ФЗ «О рекламе», подписываю отчёт.
[ХОРОШО] : Ты проверяешь рекламный текст на соответствие правилу. Правило: Рекламный текст: «Только у нас: препарат вылечит гипертонию за 3 дня. Гарантия результата 100%. Скидка 40% до пятницы!» Ответь одним словом: СООТВЕТСТВУЕТ или НАРУШАЕТ. Поле правила здесь пустое. Это прогон «удаление». Дальше ставим туда «Обработка персональных данных допускается только при наличии согласия субъекта» (подмена). Потом ставим «Реклама лекарственных средств должна содержать гарантии положительного результата и обещания излечения» (инверсия). Если на очевидно плохой текст модель во всех четырёх прогонах отвечает НАРУШАЕТ, правило ей не нужно. Отчёт «система применяет закон» подписывать нельзя. Хороший знак, когда при подмене и инверсии вердикты заметно меняются.
Источник: Verdict Without the Rule: Diagnosing and Auditing Regulatory Rule Sensitivity in LLM Compliance Systems
ArXiv ID: 2610.12313 | Сгенерировано: 2026-10-09 06:00

Проблемы LLM

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

Методы

МетодСуть
Подмена правила — проверка, влияет ли оно на вердиктБерёшь один и тот же случай. Прогоняешь четыре раза, меняя только блок с правилом. 1. Настоящее правило (контроль). 2. Пустое поле. 3. Правило из другой области, например про персональные данные вместо рекламы. 4. Инвертированное правило: «должен» → «не должен». Для каждого случая отмечаешь: вердикт отличается от контрольного, да или нет. Потом считаешь долю изменений по каждому условию. Доля около нуля означает, что модель правило не использует. Почему работает: смотришь на поведение, а не на объяснения модели. Объяснения бывают придуманными, а изменение ответа придумать нельзя. Если правило влияет на ответ, замена должна менять вердикт. Как делать: каждый прогон — отдельный запрос в новом чате. Меняй только поле с правилом. Остальной текст запроса оставь точно таким же. Бери случаи из своего реального потока, а не из учебного набора. Прогонов на 20–30 случаях уже достаточно. Шаблон: Правило: {правило} Текст: {случай} Ответь одним словом: СООТВЕТСТВУЕТ или НАРУШАЕТ. Что показывает каждый прогон. Удаление: нужен ли вообще текст правила. Подмена: различает ли модель области. Инверсия: читает ли она смысл обязательств. Когда не работает: инверсия не годится, если в правиле нет обязательных формулировок («должен», «обязан»). Нет эталонного ответа — нечего сравнивать с точностью. Низкая доля изменений не значит, что модель ошибается. Вердикт мог быть верным и без правила. Значит, готового «нормального значения» доли нет. Считай на своих данных
📖 Простыми словами

Verdict Without the Rule: Diagnosing and Auditing Regulatory Rule Sensitivity inLLMCompliance Systems

arXiv: 2610.12313

Языковые модели в комплаенсе не читают законы — они судят по вайбу текста. Если скормить сетке рекламу таблеток, она влепит бан просто потому, что фраза "гарантируем 100% излечение" статистически пахнет скамом, а не потому, что она сопоставила формулировку со статьёй закона. Высокая точность в 90% верных вердиктов — это самообман: модель просто угадывает очевидное, абсолютно игнорируя сам регламент.

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

Чтобы вскрыть эту показуху, придумали тест OCS (Output Compliance Sensitivity). Механика простая: берёшь один кейс и прогоняешь его через три стресс-теста. Сначала проводишь удаление правила из промпта, затем делаешь подмену нормы на пункт из другого кодекса, а в финале тестируешь инверсию правила — превращаешь "запрещено" в "разрешено". Если вердикт сетки не изменился, модель плевать хотела на закон.

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

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

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

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

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