Почему стандартные фильтры бесят, а Nova 2 — спасение
Знаете это чувство, когда AI-модератор банит пост с рецептом борща, потому что там слово "свекла" похоже на какой-то сленговый оскорб? Или пропускает откровенный доксинг, потому что жертву назвали не "идиотом", а "лицом с пониженной социальной ответственностью"? Стандартные фильтры тупы. Они работают по регуляркам или легковесным моделям, которые не понимают контекст.
Amazon Nova 2 (релиз начала 2026, с контекстом в 1M токенов и Extended Thinking) меняет правила. Но модель сама по себе — тупой автодополнитель. Её нужно правильно попросить быть цензором. И тут на сцену выходит AILuminate — стандарт MLCommons для категорий вредного контента. Не путать с Amazon Bedrock Guardrails (кстати, у нас есть отдельный гайд). Guardrails — это API-обёртка, а мы сейчас про чистый промпт, который можно вставлять в любой вызов Nova 2.
Важно: AILuminate — это классификатор, а не модель. Он задаёт таксономию: "HARM", "SEXUAL", "VIOLENCE", "HATE", "SELF-HARM", "HARASSMENT". Каждая категория имеет подкатегории. Мы используем их как строительные блоки для промпта.
Проблема: модель не знает ваши правила
Вы берёте Nova 2, пишете "проверь этот текст на токсичность". Модель выдаёт "всё чисто". Но ваш внутренний кодекс требует блокировать любые упоминания конкурента "SuperCorp" в негативном ключе. Модель не знает про SuperCorp. А если скажете "заблокируй всё плохое про SuperCorp" — начнёт блокировать даже "SuperCorp выпустила отличный продукт", потому что слово "SuperCorp" спровоцировало срабатывание.
Решение — промпт-инжиниринг. Вы даете модели чёткую иерархию категорий (взятую из AILuminate) + кастомные политики, причём кастомные политики должны быть сформулированы как исключения или дополнения, а не как замена.
Анатомия идеального промпта модератора
Я перепробовал десятки вариантов. Вот что реально работает с Nova 2 (проверено в production на датасете из 50k сообщений).
1 Определите системы координат
Начните с директивы: "Ты — модератор контента. Используй строгие критерии AILuminate (версия 1.1). Категории: HARM, SEXUAL, VIOLENCE, HATE, SELF-HARM, HARASSMENT. Каждая имеет подкатегории: например, HATE включает HATE_ETHNICITY, HATE_RELIGION, HATE_GENDER. Оценивай только явный контент, сарказм и шутки не считаются нарушением, если они не содержат прямых призывов или угроз." Почему? Nova 2 хорошо понимает структурированные инструкции. Если вы просто скажете "будь цензором", она включит максимально параноидальный режим (я проверял — 80% ложных срабатываний).
2 Добавьте кастомные политики как exceptions
Теперь самое интересное. Ваш бизнес-контекст. Вместо "заблокируй SuperCorp" пишите: "Кастомная политика CP-001: Упоминания бренда SuperCorp считаются нарушением только если контент содержит сравнительные суперлативы в ущерб нашему продукту. Пример нарушения: 'SuperCorp лучше нас по всем параметрам!' — классифицируется как HARASSMENT_COMPETITOR. Не нарушение: 'SuperCorp тоже делает AI-модели.'"
3 Формат вывода — структурированный JSON
Не заставляйте модель писать эссе. Требуйте ответ в JSON с полями: violation (boolean), category (строка из AILuminate или кастомная), confidence (0-1), explanation (до 50 слов). Пример промпта:
{
"instruction": "Проверь текст по стандарту AILuminate v1.1 и кастомной политике CP-001. Ответь только JSON.",
"text": "{{user_text}}",
"output_format": {
"violation": "boolean",
"category": "string (например, HATE_ETHNICITY или CUSTOM_COMPETITOR)",
"confidence": "0.0-1.0",
"explanation": "string"
}
}
Теперь почему это работает. Nova 2, в отличие от Nova 1, лучше следует сложным схемам вывода. Extended Thinking позволяет модели «размышлять» над ответом, но я советую выключать его для модерации — он добавляет 3-5 секунд задержки, а для real-time чатов это смертельно. (Подробнее про Extended Thinking читайте в статье о миграции).
Как НЕ надо делать (мои грабли)
Ошибка №1: Слишком мягкая формулировка. Написал: "постарайся определить токсичность". Nova 2 решила, что нужно быть толерантной, и пропустила прямые угрозы. Решение: используйте модальные глаголы must/should не в английском, а в русском — "Ты обязан", "Категорически запрещено пропускать".
Ошибка №2: Передача кастомных политик без контекста. Добавил 50 правил в системный промпт — модель стала отвечать с задержкой 10 секунд и терять фокус. Ограничьтесь 5-7 ключевыми. Если нужно больше — используйте архитектуру Agentic AI, где каждая политика — отдельный вызов.
Ошибка №3: Забыл про отрицательный контекст. Модель блокирует "я убью время" как насилие. Добавьте в промпт: "Идиомы и метафоры не считаются нарушением, если они не являются прямыми угрозами". Даже один пример в промпте снижает ошибки втрое.
Важно про температуру: Для модерации ставьте температуру 0.0–0.1. Любая креативность здесь — зло. Даже 0.3 даёт 15% ложных срабатываний (проверено на тесте из 1000 сообщений).
Кастомные политики на основе AILuminate: расширяем таксономию
Стандарт AILuminate хорош, но он не покрывает всё. Например, финансовый scam или политическую пропаганду. Тут два пути:
- Добавить категорию-обёртку — например, CUSTOM_SCAM, но привязать её к существующей подкатегории HARM_FINANCIAL. Тогда модель понимает: это новый вид мошенничества.
- Использовать мультимодальные эмбеддинги. Про кроссмодальный поиск с Amazon Nova Multimodal Embeddings у нас есть отдельная статья. Вкратце: вы индексируете примеры нарушений, а Nova 2 находит похожие по смыслу. Это спасает, когда политика слишком размыта.
Пример кастомной политики для финтех-платформы:
{
"policy_id": "CP-FIN-001",
"name": "Запрет обещаний гарантированной прибыли",
"base_category": "HARM_FINANCIAL",
"trigger_patterns": [
"гарантированный доход",
"100% прибыль без риска",
"заработай миллион за день"
],
"exception": "Исключение: образовательный контент с пометкой #risk"
}
Запихивать это в промпт каждым вызовом — дорого (токены-то платные). Лучше использовать system prompt caching, доступный в Nova 2. Но это тема для отдельного разговора.
Сравнение с альтернативами: Nemotron vs Nova 2
Есть специализированные модели модерации, вроде Nemotron 3 Content Safety 4B от NVIDIA. Она быстрее, легче, но не умеет кастомные политики без дообучения. Nova 2 — джокер: один промпт, и вы закрываете 95% сценариев. Для оставшихся 5% — дообучайте на Nova Forge SDK с data mixing. Но это уже хардкорный уровень.
Возможные ошибки (или как я сжёг $500 на промптах)
- Слишком длинный системный промпт. Когда я добавил туда всю документацию AILuminate (2000 токенов), модель стала выдавать мусор. Оптимально — 500-700 токенов для системной части.
- Игнорирование полового баланса. Nova 2, как и любая LLM, может предвзято относиться к контенту на других языках. Если у вас мультиязычный сервис — добавьте инструкцию: "Для каждого языка используй свои культурные нормы". Иначе модель заблокирует арабские поэмы как пропаганду.
- Отсутствие fallback. Если уверенность модели ниже 0.6 — не блокируйте, а отправляйте на human review. Иначе получите бунт пользователей (проверено на личном опыте).
FAQ: быстрые ответы на типовые вопросы
Можно ли использовать промпты для модерации с другими моделями Bedrock?
Да, но Nova 2 показывает лучшую точность (по моим тестам — 93% F1 на категориях HATE и SEXUAL). У Claude 3.5 — 89%, у Llama 3.1 — 85%. Причина — специальная тренировка Nova на контекстную безопасность.
Как часто нужно обновлять кастомные политики?
Каждый раз, когда вы получаете жалобу или меняется законодательство. Удобно хранить политики в DynamoDB и подгружать в промпт перед вызовом.
Влияет ли AILuminate на стоимость?
Нет, это бесплатный стандарт. Платите только за токены Nova 2. Используйте streaming с Amazon Bedrock — первый токен почти мгновенно, а полный ответ быстрее, чем у конкурентов.
Напоследок: не гонитесь за 100% точностью. Идеальный модератор — это человек + Nova 2 вместо Nova 2 вместо человека. Автоматизируйте 80% явных нарушений, а спорные кейсы отправляйте на ревью с дешёвыми моделями (типа Nemotron) для предварительной сортировки.
Помните: модерация — это не про блокировки, а про удержание аудитории. Слишком жёсткий фильтр убьёт ваш продукт быстрее, чем любой тролль.