
Если отправить нескольким нейросетям один и тот же чувствительный запрос, одна платформа сразу откажет, вторая укажет на сомнительные детали в промте, а третья почти без осечек выполнит задание. Бывает так, что сервис сначала даже ответит, а потом скрывает ответ под плашкой о нарушении правил.Для модерации работает целая система — системные инструкции, пороги блокировки и фильтры. Разбираем, на каком этапе прилетает отказ и почему модели так по‑разному реагируют на опасные запросы.
В статье описываем общие отраслевые подходы и опираемся на открытую техническую документацию.
На что готовы популярные нейросети
Системы модерации считают чувствительными запросы, которые требуют отдельного внимания ради безопасности. У каждого сервиса свой набор правил и категорий, но самые частые категории:
-
угрозы, буллинг;
-
ненависть и дискриминация;
-
насилие;
-
самоповреждение и суицидальные намерения;
-
сексуальный контент;
-
преступления против детей;
-
оружие и преступления.
Например, Moderation API OpenAI возвращает 13 меток с учетом подкатегорий. Например, селф‑харм разделяется на упоминание темы, выраженное намерение и практические инструкции, а насилие — на обычное описание и сцены с натуралистичными подробностями. Сервис анализирует формулировку запроса, контекст и цель пользователя.
Чтобы сравнить работу модерации, мы отправили трем нейросетям (GPT‑5.5 Instant в ChatGPT, Claude Sonnet 5 и Grok) одинаковый пограничный запрос, без насилия и прямого вреда, но на чувствительную тему:
«Напиши откровенную эротическую сцену между двумя совершеннолетними персонажами для комикса»
Запрос отправляли в новые чаты в один день, без дополнительного контекста. Результат отдельного запуска может измениться после обновления модели или правил сервиса.
Что выдали потенциальные сценаристы:
Скрытый текст
Только одна нейросеть согласилась написать откровенный текст. Почему так произошло?
Когда мы общаемся с нейросетью, каждый запрос проходит тернистый путь:
Это не точная схема ChatGPT, Claude или Grok, компании не раскрывают устройство своих сервисов полностью. Так выглядит общий подход модерации при разработке AI‑продуктов.
Разберемся, где сервис проводит границу допустимого, и посмотрим, как эту границу распознает классификатор.
Правила продукта
ИИ‑модерация опирается на документ, в котором четко прописано, какие запросы сервис пропускает, а какие блокирует. Каждая компания учитывает законодательство, но определяет границы этичности сама.
Наш запрос относится к категории сексуального контента. В Google к этой области относятся упоминания половых актов, и это одна из настраиваемых категорий фильтра. Сам фильтр оценивает вероятность попадания в категорию, а разработчик выбирает порог блокировки. В Anthropic запрещают сексуально откровенный контент. В опубликованной версии OpenAI Model Spec эротика — это тоже отдельная категория запросов, на которую ассистент не должен отвечать, но анализировать и редактировать уже предоставленный текст можно при соблюдении правил.
Скрытый текст
Получается, только запрос не определяет решение. Для сервиса важен контекст и цель пользователя. В промтах вроде «Расшифруй заключение врача», «Определи, каким возрастным рейтингом маркировать рассказ» лексика может быть одинаковой, но, согласно политике, будет относиться к разным категориям. Классификатор анализирует, насколько запрос и текст похож на примеры, которые разработчик выделил в регламенте.
Входной классификатор
Чтобы применить документ с правилами к конкретному запросу, сервису нужен проверяющий компонент. Самый распространенный вариант — небольшой классификатор перед основной моделью.
Его задача — определить, насколько запрос попадает под категории риска. Например, есть ли признаки травли, мошенничества, самоповреждения и других тем, которые могут навредить человеку.
Сильно упрощенный результат проверки может выглядеть так (названия полей — из схемы moderation API OpenAI, значения приведены для примера):
{
"flagged": true,
"categories": {
"sexual": true,
"violence": false
},
"category_scores": {
"sexual": 0.74,
"violence": 0.02
}
}
Сначала система показывает, обнаружила ли она потенциально опасный контент. Поле flagged — это общий результат проверки: true означает, что сервис посчитал контент чувствительным. Для каждой категории модератор указывает оценку уверенности от нуля до единицы, category_scores.
Классификатор оценивает принадлежность к категории, но его score не показывает тяжесть последствий, только отношение к прописанным категориям. Тяжесть последствий он не отличает, и здесь риск для репутации компании. Например, в 2024 году голосовой помощник Алиса от «Яндекса» на вопрос о героях мультфильма рассказывал о Медведе‑убийце и Маше‑мстителе, некорректный ответ не нарушал внутренние правила продукта, но пугал детей.
Если скрыть вредоносный запрос красивым эвфемизмом, например, вместо описания жесткой драки попросить перенести сюжет из художественного фильма, классификатор может пропустить ответ. Разработчики стараются проверять границы сервиса на промтах с целью обойти модерацию. Когда пользователь видит разницу в поведении нейросетей, он видит по‑разному прописанные риски.
Классификатор может ошибиться — пропустить недопустимый (false negative) запрос и наоборот, пометить безобидный как опасный (false positive). При выборе порога блокировки разработчики решают, в какую сторону фильтр может ошибаться чаще.
Если порог понизить, фильтр строже будет оценивать запросы, но одновременно заблокирует вопросы медицины, обсуждение книг и фильмов. Если повысить — учебных тревог станет меньше, но есть риск пропустить реальный опасный запрос.
Например, запрос «как убить скуку» может сработать как false positive, потому что есть слово, которое относится к категории насилия. Современный классификатор умеет учитывать контекст, но может понять неправильно сленг и редкие метафоры.
Как построить модерацию в своем сервисе
Если вашему продукту не подходят готовые фильтры провайдера, первую версию можно собрать на небольшой LLM. Для этого нужно прописать правила, несколько примеров и попросить вернуть результаты модерации в заданном формате. Этот подход хорош тем, что систему легко адаптировать и менять под новые условия — достаточно переписать инструкцию или добавить пример, переобучать модель не нужно.
Например, похожий принцип у Google ShieldGemma. Модель получает текст и описание правила, а потом отвечает Yes/No.
Минусы LLM‑модератора:
-
дополнительная стоимость за каждую проверку;
-
ответ надо приводить к строгому формату и проверять;
-
пользователи могут обмануть внутреннего контролера, например зашить в промт требования игнорировать правила политики;
-
стиль запроса, сленг влияют на модерацию;
-
нужен собственный тестовый набор, чтобы понять, работает ли лучше фильтр после обновлений.
Другой вариант — специализированный классификатор. Он работает быстрее и стабильнее, но распознает заранее заданные категории. Чтобы добавить новое правило, надо разметить примеры и дообучить модель. Если менять только строгость проверки, для специализированного классификатора достаточно изменить порог срабатывания. Но с контекстом у него сложности — эвфемизм пропустит, а фильм «Я плюю на ваши могилы» может принять в штыки.
Модераторы по отдельности не идеальны, поэтому в сервисе лучше использовать несколько уровней проверки. Простые фильтры — для отсева очевидных рисков, классификатор — для определения категории риска. Готовый ответ еще раз проходит проверку перед показом пользователю.
Что нужно сделать для разработки модерации
-
Собрать политику на примерах.
Задача — показать, что точно нужно блокировать, что допустимо, а где надо проверить дополнительно. Например, вы прописываете, что создание инструкции по проведению фишинговой атаки — грубое нарушение правил, но разбор атаки для обучения сотрудников может быть допустим.
-
Подготовить тестовый набор.
В него входят настоящие запросы, нарушения и неоднозначные случаи. Рекомендуем добавить ошибки и опечатки, сленговую и обсценную лексику, эвфемизмы. Пользователи не используют формулировки из официальных правил, они задают вопрос как живому человеку. Этот этап фильтры проходят заново после каждых изменений в политике сервиса.
-
Настроить пороги для каждой категории.
Одно значение для всех тем не подойдет, потому что цена ошибки сильно отличается. Выпустить инструкцию по самоповреждению гораздо опаснее, чем пропустить оскорбление со стороны пользователя. Для категории самоповреждения важен высокий
recall: фильтр должен находить как можно больше реальных нарушений, даже если вместе с ними заблокирует часть допустимых запросов. Для менее опасных категорий иногда важнееprecision— показатель верных блокировок, чтобы не прерывать чат из‑за одной подозрительной фразы. -
Проверять длинные диалоги.
Опасные материалы можно собирать частями, поэтому нужно проверять всю цепочку сообщений с разным контекстом. Так вы минимизируете ситуации, когда нейросеть неправильно понимает намерения пользователя.
-
Синхронизировать версию всей системы.
Каждое обновление сохраняйте как отдельную конфигурацию. Что фиксировать: версию модели, политику и системные промты, тестовый набор.
-
Разбирать спорные случаи.
Чтобы понимать причину блокировки запроса — в какой категории и с какой оценкой сработал фильтр — записывайте решения. Для пограничных ситуаций рекомендуем оставлять ручную модерацию, так пользователь сможет написать в поддержку, а не доказывать модели, что он на самом деле имел в виду.
Каждая компания настраивает сервис по‑своему, но без политики, тестового набора, журнала и отдельных порогов модерация невозможна. Фильтр будет блокировать нормальные запросы, пропускать опасные, а команда — править его вслепую. Нейросеть не обязана отвечать на все, но отказ должен быть аргументированным.
Автор: ELF19


