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 как основе для разделения критериев.
