Категории Content Safety¶
ML-модель анализирует текст по категориям вредоносного контента. Анализ применяется как к входящим запросам (8 категорий), так и к ответам LLM (7 категорий — без jailbreak). Модель работает только на GPU. Без GPU сервис Content Safety возвращает 503, и Gateway (при fail_open) пропускает эту проверку.
Категории запросов и ответов
На стороне запроса доступны все 8 категорий, включая jailbreak. На стороне ответа LLM применяются те же категории, кроме jailbreak (это исключительно входная категория), — итого 7.
Категории¶
violence — Насилие и физический вред¶
| Свойство | Значение |
|---|---|
| Описание | Контент, содержащий угрозы физического насилия, инструкции по причинению вреда, графические описания насилия, поощрение агрессии |
| Примеры запросов | «Как причинить максимальный вред...», «Опиши подробно процесс...» |
| Примеры ответов | LLM генерирует пошаговые инструкции по причинению вреда |
| Рекомендация | Блокировать в большинстве сценариев. Часто пересекается с легитимным контентом (художественная литература, журналистика, мифология) — задайте политику Controversial flag вместо block для мониторинга без избыточных блокировок (см. Политика для Controversial) |
illegal_acts — Нелегальная деятельность¶
| Свойство | Значение |
|---|---|
| Описание | Инструкции по совершению преступлений, изготовлению запрещённых веществ, взлому систем, обходу законов |
| Примеры запросов | «Как изготовить...», «Как обойти систему безопасности...» |
| Рекомендация | Блокировать. Особенно важно для compliance. Высокорисковая категория — держите в blocked_categories и не ослабляйте политику Controversial |
sexual — Сексуальный контент¶
| Свойство | Значение |
|---|---|
| Описание | Откровенный сексуальный контент, NSFW-материалы, эротические описания |
| Примеры | Запросы на генерацию эротических текстов |
| Рекомендация | Блокировать в корпоративных средах. Для consumer-приложений — по политике сервиса |
self_harm — Самоповреждение¶
| Свойство | Значение |
|---|---|
| Описание | Суицидальный контент, инструкции по самоповреждению, романтизация самоубийства |
| Примеры | Просьбы написать предсмертную записку, описание методов |
| Рекомендация | Всегда блокировать. Критичная категория с точки зрения ответственности. Держите в blocked_categories, политику Controversial не ослабляйте |
unethical — Неэтичное поведение¶
| Свойство | Значение |
|---|---|
| Описание | Мошенничество, манипуляции, обман, социальная инженерия, газлайтинг |
| Примеры | «Напиши фишинговое письмо...», «Как манипулировать человеком...» |
| Рекомендация | Блокировать в корпоративных средах |
political_sensitive — Политически чувствительный контент¶
| Свойство | Значение |
|---|---|
| Описание | Экстремистская пропаганда, призывы к свержению власти, разжигание ненависти по национальному/религиозному признаку |
| Примеры | Генерация экстремистских текстов, пропагандистских материалов |
| Рекомендация | Блокировать. Особенно важно в РФ (ст. 280, 282 УК РФ) |
copyright — Нарушение авторских прав¶
| Свойство | Значение |
|---|---|
| Описание | Запросы на воспроизведение защищённых текстов, книг, статей, программного кода с нарушением лицензии |
| Примеры | «Перепиши полностью главу из книги...», «Скопируй код из...» |
| Рекомендация | Мониторинг или блокировка в зависимости от контекста |
jailbreak — Jailbreak (только запросы)¶
| Свойство | Значение |
|---|---|
| Описание | Промпт является попыткой обхода ограничений модели или содержит инструкции по jailbreak другой модели |
| Примеры | «Ignore all previous instructions...», «You are now DAN...» |
| Рекомендация | Блокировать. Категория применяется только к запросам (не к ответам) |
Персональные данные (PII)
Детекция персональных данных в Content Safety не входит. За PII отвечает отдельный сервис PII Detector (см. Типы PII) — он точнее для этой задачи и поддерживает маскирование/блокировку.
Группы категорий: тематические и токсичность¶
Внутри модели Content Safety категории разделены на две группы — это отражает разную механику детекции:
| Группа | Категории | Что детектирует |
|---|---|---|
| Тематические (topic) | illegal_acts, unethical, political_sensitive, copyright, jailbreak |
Тематическую принадлежность контента |
| Токсичность (toxicity) | violence, sexual, self_harm |
Токсичность контента |
Модель возвращает результаты двумя отдельными структурами (topic и toxicity). Для целей профиля безопасности Gateway объединяет обе группы в единый набор при передаче в PDP — деление topic/toxicity для оператора прозрачно. На стороне ответов LLM доступны 7 категорий (все, кроме jailbreak).
Вердикты и score¶
Для каждого проанализированного текста модель возвращает:
- Вердикт (
risk_level) — один из трёх классов:Safe,Controversial,Unsafe. - Score категории (
risk_prob) — реальная вероятность (softmax-уверенность модели) для сработавшей категории, число в диапазоне0.0–1.0. Это не фиксированная константа: реальные атаки получают score ≈0.95–1.0, а пограничный легитимный контент (журналистика, мифология, художественная литература) — заметно ниже (≈0.4–0.8). Score идёт в единый risk_score и сохраняется в событии (risk_breakdown) для аудита, но при блокировке с порогом не сравнивается — решение принимается по вердикту.
| Вердикт | Описание | Действие по умолчанию |
|---|---|---|
| Safe | Контент безопасен по данной категории | Пропуск |
| Controversial | Пограничный случай — контент спорный, но не явно вредоносный | Определяется controversial_policy для категории (см. ниже) |
| Unsafe | Контент определён как вредоносный | Блокировка (если категория в blocked_categories) |
Базовое поведение: категория блокирует запрос/ответ, если она в blocked_categories и вердикт = Unsafe. Обработка Controversial вердикта настраивается отдельно через controversial_policy / response_controversial_policy.
Политика для Controversial-категорий¶
Для каждой категории можно задать отдельную политику обработки вердикта Controversial через поля controversial_policy (запросы) и response_controversial_policy (ответы). Это словари {категория → действие}:
| Действие | Поведение |
|---|---|
block (по умолчанию при отсутствии) |
Блокировать запрос/ответ (как Unsafe) |
flag |
Пропустить запрос/ответ, но зафиксировать находку в событии безопасности (audit-only, MONITOR) |
allow |
Пропустить без записи — категория не влечёт действий при Controversial |
Если категория не указана в controversial_policy / response_controversial_policy, для неё применяется block (безопасный дефолт).
Где видна находка с flag
При flag запрос проходит к LLM, но в событии безопасности (SecurityEvent) в поле matched_rules появляется запись content_safety_flag. На стороне ответов решение принимает значение MONITOR. Это позволяет операторам наблюдать за Controversial-категориями без принудительной блокировки.
Примеры¶
| Конфигурация | вердикт | Результат |
|---|---|---|
controversial_policy не задан (по умолчанию) |
Controversial (copyright) | БЛОК |
{"copyright": "flag"} |
Controversial (copyright) | Пропуск + запись в audit |
{"copyright": "allow"} |
Controversial (copyright) | Пропуск без записи |
{"copyright": "flag"} |
Unsafe (violence) | БЛОК (Unsafe всегда блокирует) |
Калибровка score¶
Сырые уверенности guard-модели плохо откалиброваны (особенно под adversarial-промптами). AppSec.AIGate применяет post-hoc температурную калибровку (temperature scaling), подобранную офлайн отдельно для каждого сигнала (score Threat Detector и каждая категория Content Safety). Калиброванный score:
- используется в едином risk score (см. risk-аналитику события): вклад Content Safety = максимальный калиброванный score по всем категориям.
Калибровка информационна: она меняет то, как вычисляется risk score, но не меняет само действие блокировки — оно определяется вердиктом (risk_level), а не числовым порогом. Калибровка привязана к версии модели — пересчитывается при смене модели детектора (release gate в e2e-бенчмарках). При отсутствии калибровочной кривой сырой score == калиброванный (обратная совместимость).
Приватность (152-ФЗ)
Калибровка и risk_score оперируют только числовыми score — никакого текста промпта и новых поверхностей с персональными данными не добавляется.
Блокировка ответов LLM¶
Для проверки ответов LLM используется та же risk_level логика, что и для запросов:
- категория блокирует ответ, если она в
blocked_categories(сторона ответов:response_blocked_categories) и вердикт =Unsafe; - обработка
Controversialна стороне ответов управляется черезresponse_controversial_policy(те же значения:block/flag/allow, дефолтblock).
Поля toxicity_threshold / topic_threshold
Поля response_scanning.toxicity_threshold и response_scanning.topic_threshold присутствуют в схеме профиля для обратной совместимости, но не влияют на решение о блокировке начиная с текущей версии — enforcement перенесён на risk_level + response_controversial_policy. Не используйте их в новых профилях.
Настройка per-profile¶
{
"content_safety": {
"enabled": true,
"blocked_categories": ["violence", "illegal_acts", "self_harm", "jailbreak"],
"controversial_policy": {
"copyright": "flag",
"political_sensitive": "flag"
},
"response_enabled": true,
"response_blocked_categories": ["violence", "sexual", "self_harm"],
"response_controversial_policy": {
"copyright": "flag"
}
}
}
| Поле | Описание | Рекомендация |
|---|---|---|
enabled |
Включить Content Safety для запросов | true |
blocked_categories |
Категории для блокировки запросов при вердикте Unsafe | Минимум: ["violence", "self_harm", "jailbreak"] |
controversial_policy |
Per-category политика для Controversial-вердикта запросов: {категория: "block"\|"flag"\|"allow"} |
Отсутствие ключа = block (безопасный дефолт). flag — для audit-only мониторинга |
response_enabled |
Включить проверку ответов LLM | true если нужна двусторонняя защита |
response_blocked_categories |
Категории для блокировки ответов при вердикте Unsafe (7 категорий, без jailbreak) |
Может отличаться от blocked_categories |
response_controversial_policy |
Per-category политика для Controversial-вердикта ответов: {категория: "block"\|"flag"\|"allow"} |
Аналогично controversial_policy |