3,583 papers
arXiv:2609.03814 74 3 сент. 2026 г. FREE

DECO: LLM путает «что сказано» с «зачем сказано» при модерации контента

КЛЮЧЕВАЯ СУТЬ
Обнаружено: LLM путает шутку «убил бы тебя за опоздание» с реальной угрозой — потому что цепляется за слово «убил», а не за смысл фразы. Метод DECO позволяет разделить смешанную оценку «опасно/не опасно» на шесть независимых числовых шкал, чтобы увидеть, где именно модель подменяет намерение автора поверхностной лексикой. Модель сначала выставляет баллы по каждому признаку отдельно — грубость слов, тема вреда, конкретность инструкции — а итоговый вердикт собирается потом по формуле. Результат: грубость слов модель ловит метко, а умысел и рабочую инструкцию — путает.
Адаптировать под запрос

TL;DR

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

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

Чтобы это увидеть, исследователи разбили общую оценку «опасно/не опасно» на шесть отдельных числовых характеристик контента (грубость слов, тема вреда, отношение автора, конкретность инструкций и так далее), оценили каждую отдельно по шкале 0–10, а затем собрали из них метки под три разных критерия: внешний вид текста, намерение автора, наличие рабочей инструкции. Это позволило показать: модель, которая выглядит умной на общей оценке, начинает ошибаться, как только критерий сужается до чего-то конкретного.


🔬

Схема метода

ШАГ 1 (один промпт): Оцени текст по 6 независимым шкалам 0-10,
не зная какой финальный критерий будет применён →
числовые баллы (лексика, тема вреда, отношение автора, 
конкретность инструкции, яркость деталей, нейтральность позиции)

ШАГ 2 (правило/формула, не промпт): Комбинируй баллы по чёткому 
правилу для нужного критерия →
метка safe/unsafe под конкретный критерий (внешний вид / намерение / инструкция)

ШАГ 3 (сравнение): Для одного текста сравни результаты 
по разным критериям →
проверка, различает ли модель критерии, или выдаёт одно и то же

Шаги 1 и 2 можно объединить в один запрос к LLM. Шаг 3 — это сверка результатов, а не отдельный промпт.


🚀

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

Задача: Владелец интернет-магазина модерирует отзывы и комментарии на Wildberries/Avito перед публикацией. Нужно отличить эмоциональный мат от реальной угрозы и от инструкций типа «как обмануть возврат товара».

Промпт:

Оцени этот отзыв покупателя по шести отдельным шкалам от 0 до 10.
Не делай общий вывод "опасно/не опасно" — просто дай баллы.

1. Грубость лексики (мат, оскорбления сами по себе, вне контекста)
2. Наличие темы вреда (угрозы, мошенничество, обман)
3. Отношение автора (одобряет ли он вредное действие или просто упоминает)
4. Есть ли конкретные шаги/метод (не просто "обманул", а КАК именно)
5. Насколько ярко и воспроизводимо описан вредный процесс
6. Нейтральность позиции (это критика/пересказ или реальный призыв)

Текст отзыва: {текст отзыва}

Дай баллы по каждой шкале и короткое пояснение к каждой.

Результат: Модель выдаст 6 чисел с короткими пояснениями. Дальше вручную (или в следующем запросе) можно применить свои правила: если балл 4 или 5 высокий — это не просто эмоциональный отзыв, а инструкция, требующая внимания модератора, даже если лексика чистая. Если высокий только балл 1 — это просто грубость, можно смягчить, а не удалять.


🧠

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

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

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

Рычаги управления: - Число осей оценки — можно сократить с 6 до 3, если задача проще (например, только «грубость» и «намерение») - Пороговые значения (когда балл считается «сработавшим») — снижай порог, если хочешь более строгую модерацию, повышай — если хочешь меньше false positive - Формулировка критерия — чем конкретнее описан критерий («не блокируй цитаты и шутки, если слово не повторяется многократно»), тем точнее модель различает контекст


📋

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

Оцени следующий текст по отдельным шкалам от 0 до 10. 
Не выноси общий вердикт "опасно/безопасно" на этом шаге.

Шкалы:
1. {ось_1}: {описание_оси_1}
2. {ось_2}: {описание_оси_2}
3. {ось_3}: {описание_оси_3}

Текст: {текст}

Формат ответа:
Ось 1: [балл 0-10] — [пояснение]
Ось 2: [балл 0-10] — [пояснение]
Ось 3: [балл 0-10] — [пояснение]

После этого, отдельно, оцени текст по критерию: {конкретный_критерий}.
Критерий: {чёткое_описание_что_считать_нарушением_и_что_НЕ_считать}
Ответь: safe / unsafe и объясни, на какую именно ось ты опирался.

Что подставлять: - {ось_N} — конкретный признак, который хочешь измерить отдельно (грубость слов, наличие угрозы, конкретность инструкции) - {конкретный_критерий} — то, что тебе реально нужно оценить (не «опасно», а «есть ли злой умысел» или «есть ли рабочая инструкция») - {текст} — контент для проверки

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

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

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

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


⚠️

Ограничения

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

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

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


🔍

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

Команда взяла четыре известных датасета для модерации контента (Civil Comments, X-Sensitive, OpenAI Moderation, ToxicChat) и прогнала через четыре модели — Gemini, GPT, Llama и Qwen. Сначала проверили обычную «одну метку» — все модели показали хорошие цифры, как и на привычных бенчмарках.

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

Результат удивил: точность на общей метке не гарантирует точность на отдельных критериях — где-то она даже росла, а где-то падала сильно, особенно там, где нужно было различать намерение и конкретную инструкцию. Чтобы убедиться, что выведенные метки — не выдумка модели, авторы дополнительно провели проверку на 200 примерах руками пяти людей: совпадение с человеческой оценкой было высоким, особенно для критерия «есть ли рабочая инструкция» (92% согласия).


🔗

Ресурсы

DECO (Diagnostic Evaluation of COntent) — Danting Zhang (независимый исследователь), Bei Peng, Robert Loftin (University of Sheffield). Отсылка к гайдлайнам OpenAI Moderation как основе для разделения критериев.


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

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

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

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

Не проси у модели один вердикт — проси отдельные числа. Смешанный критерий заставляет LLM хвататься за самый яркий сигнал — мат и угрозы словами, а не за скрытый смысл. Раздельные шкалы 0-10 не дают модели свалить всё в одну кучу: каждый признак получает свою цифру, без слияния формы и содержания. Критерий (намерение, инструкция, внешний вид) собирается уже потом — по чёткому правилу, а не по общему чутью модели.

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

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

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

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

Мини-рецепт

1. Разбей вред на оси: выбери 3-6 независимых признаков — грубость лексики, тема вреда, отношение автора, конкретность шагов.
2. Оцени раздельно: один промпт — шкала 0-10 по каждой оси, без общего вывода на этом шаге.
3. Собери правило: сформулируй чёткую формулу под нужный критерий — намерение, рабочая инструкция или просто внешний вид текста.
4. Проверь на разных критериях: возьми один текст, примени разные критерии — если метки совпадают везде, модель не различает суть, а просто реагирует на слова.

Примеры

[ПЛОХО] : Оцени этот отзыв покупателя: опасно или нет?
[ХОРОШО] : Оцени отзыв по 6 отдельным шкалам от 0 до 10: грубость лексики, тема вреда, отношение автора, конкретность шагов, яркость деталей, нейтральность позиции. Не делай общий вывод на этом шаге, просто дай баллы и короткое пояснение к каждому.
Источник: Evaluating Criterion-Conditioned Behaviour of Large Language Models in Content Moderation
ArXiv ID: 2609.03814 | Сгенерировано: 2026-09-04 04:30

Проблемы LLM

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

Методы

МетодСуть
Разделение измерения и вывода — декомпозиция критерия на числовые осиСначала попроси модель оценить текст по нескольким независимым шкалам 0-10 (грубость, тема вреда, отношение автора, конкретность шагов). Не проси вердикт на этом шаге. Затем собери итоговую метку под нужный критерий по чёткому правилу (например: «unsafe, если ось конкретности 6»). Оцени по шкалам X, Y, Z отдельно примени правило для критерия N. Почему работает: LLM точно считает числа по узкой шкале с ясным определением, но плохо выносит один смешанный вердикт — при смешении сваливается на самый заметный сигнал. Когда да: нужно различать несколько типов нарушений одновременно (намерение, инструкция, лексика). Когда нет: задача одномерная, критерий один и простой — декомпозиция только усложнит
📖 Простыми словами

Evaluating Criterion-Conditioned Behaviour ofLargeLanguageModelsin Content Moderation

arXiv: 2609.03814

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

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

Чтобы это починить, нужен переход от субъективных ощущений к жестким рамкам. Что реально работает: критериальное разделение (оценивай намерение навредить отдельно от наличия мата), шкалирование признаков (разметка параметров по шкале от 1 до 5) и контекстная фильтрация. Когда ты даешь LLM изолированные метрики вместо абстрактного вопроса "опасно ли это", точность классификации вырастает в разы.

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

Короче: забудь про размытые промпты в духе «проверь адекватность текста». Дроби задачу на атомарные критерии, требуй баллы и убирай субъективщину. Иначе твой AI-модератор перебанит платежеспособных клиентов за эмоции и пропустит реальный скам.

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

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

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