Всем привет! Меня зовут Миша Мартьянов, я инженер по исследованиям и разработке в лаборатории AI R&D в red_mad_robot. В мои задачи входит проверка гипотез и развитие наших продуктов. Однако недостаточно просто улучшать продукты, необходимо также чтобы они работали устойчиво и безопасно.
Ранее я рассказывал разработку идеального контент-фильтра на базе Guardrails. Но время не стоит на месте: появляются новые модели и новые практики их применения. Этому и будет посвящён наш сегодняшний разговор.
Люди очень пытливые существа
Если вы когда-нибудь делали сервис с открытым вводом текста, то знаете: люди будут писать всё подряд. От вопросов про котиков до попыток выудить рецепты взрывчатки, найти грязные лайфхаки или обойти любые запреты. И вот тут появляется главный герой инфраструктуры — система модерации. Она должна работать точно, быстро и без ошибок. Но, как это обычно бывает, идеального решения не существует — приходится идти на компромиссы, изобретать странные гибриды и мириться с неизбежными ограничениями.Самый лёгкий и очевидный путь
Лёгкие пути, как правило, обманчивы. Так, например, можно попытаться превратить LLM в модератора. Расписать огромный системный промпт вроде: «Ты модератор, оцени безопасность запроса и верни ответ с метками…». Затем регулярно править текст в надежде, что LLМ наконец начнёт понимать границы. Итог предсказуем: задержка в обработке каждого запроса в районе 700–900 мс, видеокарта перегрета, как и бюджет на вычисления. Тут надо серьезно задуматься: оправданы ли секундные задержки на модерацию? Именно эта мысль подтолкнула меня к моделям эмбеддингов, а точнее bge-m3 — изначально это не классификатор, а мощная модель для получения векторных представлений текста, способная эффективно кодировать смысл предложений в компактные векторы. Чтобы сделать фильтр, я собрал репрезентативный датасет из 40 тыс. примеров запросов с валидационными решениями, обучил свой классификатор и был страшно доволен результатом. Конечно же, с облегчением перешёл на неё, радуясь тому, что задержка упала до 20 мс при вполне приемлемой точности. Плюсы:- Латентность около 20 мс на запрос;
- Нагрузка на GPU в десятки раз ниже чем с LLМ;
- Простая в реализации фильтрация, чтобы не допускать грубые нарушения.
Qwen3Guard — достойная модель для модерации
Команда Qwen сделала то, что казалось логичным, но не у всех получалось: они отказались от идеи превращать LLМ в модератора и создали отдельный класс моделей, предназначенных именно для фильтрации. Qwen3Guard — не урезанная LLМ и не стопка слоёв поверх старого классификатора. Это полноценная архитектура для анализа безопасности. В основе лежит Qwen3, обученная на огромных массивах данных по модерации и десятках категорий угроз, а логика анализа опирается не на отдельные слова, а на контекст. Модель понимает цепочки токенов, считывает намерения, улавливает плавный переход от нейтрального к опасному и замечает любые попытки аккуратно прощупать систему. Когда модель получает текст, она выдаёт три основных сигнала:- Уровень риска — безопасно, спорно или опасно;
- Категория нарушения — персональные данные, неэтичные действия и прочие;
- Признаки обхода системы или провокации на нарушение правил.
Генеративная версия: Qwen3Guard-Gen-8B и её когнитивные способности
Эта модель по сути ведёт себя как не очень разговорчивая, но крайне наблюдательная LLМ. Вообще, это полноценная Qwen3-8B, дообученная так, чтобы воспринимать задачу модерации как инструкцию. Модель считывает:- Политику безопасности;
- Диалог — промпт и ответ модели;
- Формат, в котором нужно вернуть результат.
- Strict — любой сомнительный запрос автоматически считается небезопасным;
- Loose — сомнительные запросы считаются безопасными, но помечаются как спорные.
Не всё так идеально
Однако у подхода есть обратная сторона. Модель генерирует текст, а этот процесс всегда занимает больше времени, чем простая классификация. По сути, система работает почти как обычная языковая модель, настроенная на модерацию с помощью текстовой инструкции. Если поток запросов онлайн слишком большой — задержки станут неприлично большими. Это будут те же самые в несколько секунд как и других LLМ моделей того же размера.Модель в режиме потока: Qwen3Guard-Stream-8B
Stream — это интересный эксперимент, неожиданно оказавшийся крайне удачным. Эта модель не пишет текст, а скорее работает как трансформер, который сразу же отдаёт логиты классификации на каждом шаге чтения токенов. Внешне это та же модель с 8 млрд параметров, но архитектурно это уже не «генератор текста», а инструмент для извлечения признаков с дополнительными модулями для классификации. Это и есть модерация в реальном времени. Модель принимает токены как обычный трансформер, поэтому можно стримить их из основного ассистента и получать свежий прогноз риска в моменте. Если ассистент начинает переходить к опасной теме, Stream это сразу замечает — и ответ можно оборвать до отправки пользователю. Работает всё довольно быстро — за 60 мс можно оценить текст размером в примерно 100 токенов. Потоковая модель почти не уступает генеративной версии в качестве, но выигрывает по скорости настолько, что становится очевидным выбором для сервисов, где важна реакция «прямо сейчас». Оценка для каждого токена содержит уровень риска и категорию нарушения. Например, токенBomb выдаст риск Unsafe и категорию Violent. Причём модель не реагирует на Bomb как на триггер-слово — она учитывает контекст, в котором употребляется слово, отсекая ложноположительные (false positive) срабатывания.
Модель Stream отлично подходит для динамических сценариев:
- Поймать токсичность и опасность «на лету»;
- Не допустить утечку вредного ответа;
- Максимально быстро среагировать на опасность.
Что по скорости
Официальная документация аккуратно говорит про низкую задержку и потоковое обнаружение в реальном времени. Время работы растёт почти линейно с длиной ответа — в отличие от Gen-подхода, который приходится пересчитывать целиком при каждом новом фрагменте. На практике для модели размером 8B в формате BF16 на современной GPU задержка на один запрос без контекста достигает ~60 мс. Сравнение с другими подходами:- Специализированные модели, например, bge-m3 ~20 мс;
- Полная LLМ-модерация ~700 мс.
Эволюция подхода к модерации
Подводя итоги, стоит признать, что Qwen3Guard-Gen-8B — качественный и мощный инструмент для глубокого анализа и аудита. Однако модель не приносит революционных изменений в архитектуру модерации в реальном времени. Это просто LLМ, целенаправленно дообученная на задачах классификации и оценки безопасности. Схожего результата можно добиться, тонко настроив другие большие модели под конкретные политики безопасности, что оставляет нас в парадигме «медленно, но умно». Настоящее практическое преимущество — у потоковой версии. Её архитектура, изначально собранная под задачи классификации, обеспечивает стабильно низкую задержку. Главное достоинство Stream в том, что это готовое, предварительно обученное решение. Для модели не нужно разрабатывать сложные промпты — она уже настроена на базовые сценарии анализа безопасности. По-моему, Qwen3Guard-Stream-8B отлично подходит для построения гибридного конвейера. Например, можно оставить быстрый BERT-фильтр на входе для отсева грубых нарушений и Stream для анализа пограничных случаев, а на выходе использовать одну потоковую версию. Такая схема позволяет сократить задержки, отслеживать в реальном времени действия ассистента и остановить ответ до передачи пользователю, если ассистент начнёт генерировать небезопасный контент.Оригинал статьи опубликован на Хабре