Модерация контента и фильтры безопасности LLM API: кросс-провайдерное сравнение отказов, API модерации и политик контента
Мы сравнили подходы к модерации контента у OpenAI, Anthropic, DeepSeek, DashScope и Kimi — endpoint модерации, форматы отказов, категории контентных политик и что нужно знать операторам при маршрутизации запросов между провайдерами с разными политиками безопасности.
Каждый провайдер LLM API модерирует контент по-своему. OpenAI предоставляет бесплатный endpoint модерации с покатегорийными оценками. Anthropic обучает конституционные классификаторы прямо в моделях и обрабатывает отказы inline. DeepSeek и Kimi применяют серверные фильтры, сформированные требованиями китайского регулирования. DashScope накладывает опциональный сервис Guardrails поверх встроенных политик.
Если вы маршрутизируете запросы через несколько провайдеров, рано или поздно столкнётесь с ситуацией, когда провайдер A принимает промпт, а провайдер B его отклоняет. Этот справочник описывает подход каждого провайдера к модерации, чтобы вы могли построить routing-логику, корректно обрабатывающую эти асимметрии.
OpenAI-совместимость означает, что провайдер предоставляет endpoint chat-completions, чей контракт запроса и ответа достаточно близок к API OpenAI, чтобы немодифицированный вызов OpenAI SDK работал после замены трёх значений: API key, base URL, название модели. Минимальная поверхность на практике —POST /v1/chat/completions с messages, model и потоковым ответом в форме OpenAI.
Сводная таблица
| Провайдер | Отдельный API модерации | Inline-модерация | Формат отказа | Категории контента | Настраиваемые фильтры |
|---|---|---|---|---|---|
| OpenAI | Да — omni-moderation-latest (бесплатно) | Да — параметр moderation в Responses API | HTTP 200 + текст отказа | hate, harassment, self-harm, sexual, violence (+ подкатегории) | Нет (уровень модели) |
| Anthropic | Нет | Да — конституционные классификаторы | HTTP 200 + stop_reason: "end_turn" с вежливым отказом | CBRN, оружие, безопасность детей, вмешательство в выборы, мошенничество | Нет (уровень модели/классификатора) |
| DeepSeek | Нет | Да — серверная фильтрация | HTTP 400 или текст отказа в теле ответа | Категории по китайскому регулированию + общая безопасность | Нет |
| DashScope | Нет (отдельный продукт Guardrails) | Да — встроенная политика + опциональный Guardrails | HTTP 400 DataInspectionFailed (Guardrails); текст отказа (встроенный) | Категории по китайскому регулированию, настраиваемые теги через Guardrails | Частично (управление тегами Guardrails) |
| Kimi | Нет | Да — серверная фильтрация | Текст отказа в теле ответа | Категории по китайскому регулированию + общая безопасность | Нет |
OpenAI: endpoint модерации + inline-оценки
Среди крупных провайдеров OpenAI — единственный, кто предоставляет отдельный бесплатный endpoint модерации. Модель omni-moderation-latest принимает текст и изображения (до 20 МБ на изображение) и возвращает покатегорийные флаги и оценки уверенности без запуска генерации.
Standalone-модерация
from openai import OpenAI
client = OpenAI()
result = client.moderations.create(
model="omni-moderation-latest",
input="текст для классификации"
)
print(result.results[0].flagged) # True/False
print(result.results[0].categories) # булевы значения по категориям
print(result.results[0].category_scores) # оценки 0.0–1.0 по категориям
Endpoint бесплатный и не учитывается в квоте потребления. Категории включают hate, harassment, self-harm, sexual, violence и подкатегории: hate/threatening, self-harm/instructions, sexual/minors, violence/graphic.
Inline-модерация через Responses API
С середины 2026 года OpenAI поддерживает inline-модерацию через параметр moderation в вызовах Responses API.
response = client.responses.create(
model="gpt-5.6",
input=[{"role": "user", "content": "..."}],
moderation={"model": "omni-moderation-latest"}
)
# Проверяем модерацию входа и выхода
input_mod = response.moderation.input # flagged, categories, scores
output_mod = response.moderation.output # flagged, categories, scores
Один вызов API возвращает оценки модерации и для входных данных, и для сгенерированного ответа. Модель генерирует контент в обычном режиме — сигналы модерации служат входными данными для контентной политики вашего приложения, а не автоматической блокировкой.
Важно для операторов. Inline-оценки модерации приходят после генерации полного ответа. При потоковой передаче оценки модерации не включаются в частичные delta. Ответ, обсуждающий вредоносный контент с позиции безопасности (например, объясняющий, почему что-то опасно), всё равно может получить флаг модерации. Источник: OpenAI Moderation docs, получено 2026-08-10
Anthropic: конституционные классификаторы
Anthropic не предоставляет отдельного endpoint модерации. Модели Claude обучены с принципами Constitutional AI и защищены конституционными классификаторами — отдельными AI-системами для входных и выходных данных, фильтрующими запросы во время инференса.
Механизм отказов
Когда Claude определяет, что запрос нарушает контентную политику, он возвращает обычный HTTP 200 с stop_reason: "end_turn" и вежливым текстом отказа. Специального HTTP-кода или error code для отказов модерации нет — на уровне HTTP отказ неотличим от обычного ответа.
{
"content": [
{
"type": "text",
"text": "I can't help with that request. Creating instructions for weapons could cause serious harm..."
}
],
"stop_reason": "end_turn"
}
Конституционные классификаторы
Anthropic опубликовал исследование конституционных классификаторов в начале 2025 года. Классификаторы обучены на синтетических данных и предназначены для защиты от jailbreak-атак. Результаты программы bug bounty показали следующее.
- 183 участника потратили более 3 000 часов на попытки найти универсальный jailbreak
- За двухмесячный тестовый период универсальный jailbreak не был обнаружен
- Обновлённые классификаторы достигли сопоставимой устойчивости при увеличении частоты ложных отказов всего на 0,38%
С выходом Claude Fable 5 и Mythos 5 в середине 2026 года Anthropic представил новое поколение классификаторов, детектирующих потенциальное злоупотребление, включая попытки jailbreak. Источник: Anthropic Constitutional Classifiers research, получено 2026-08-10
Категории контентной политики
Acceptable Use Policy Anthropic покрывает следующие области.
- CBRN (химические, биологические, радиологические, ядерные) угрозы
- Оружие и взрывчатые вещества
- Материалы сексуального насилия над детьми (CSAM)
- Вмешательство в выборы и политические манипуляции
- Мошенничество и обман
- Вредоносное ПО и кибератаки
В отличие от OpenAI, Anthropic не предоставляет покатегорийных оценок. Программно определить причину отказа Claude невозможно — можно лишь установить сам факт отказа.
DeepSeek: серверная фильтрация
DeepSeek применяет серверную фильтрацию контента ко всем API-запросам. Как китайская AI-компания, DeepSeek работает в рамках китайского контентного регулирования, которое предписывает фильтрацию по категориям, включающим политическую чувствительность, насилие и другие регулируемые темы.
Поведение при отказе
Форма отказов DeepSeek варьируется. API может вернуть обычный HTTP 200 с текстом отказа ("Sorry, that's beyond my current scope. Let's chat about something else?") или HTTP 400 для контента, попадающего под жёсткие политические ограничения.
{
"choices": [
{
"message": {
"role": "assistant",
"content": "Sorry, that's beyond my current scope. Let's chat about something else?"
},
"finish_reason": "stop"
}
]
}
Что важно знать операторам
- DeepSeek не предоставляет API модерации или покатегорийных оценок
- Фильтрация контента не настраивается через API
- Мягкие отказы неотличимы от обычных ответов на уровне HTTP (оба — HTTP 200)
- Область фильтрации определяется китайским регулированием и существенно отличается от политик западных провайдеров
- Самостоятельно развёрнутые open-weight-модели DeepSeek (V4, V4-0324) не включают API-уровневые фильтры — фильтрация применяется только к hosted API
Источник: DeepSeek API docs, получено 2026-08-10
DashScope (Alibaba Cloud): встроенная политика + сервис Guardrails
DashScope (Alibaba Cloud Model Studio) использует двухуровневую систему модерации. Встроенная контентная политика обеспечивает базовый compliance на всех вызовах API моделей Qwen. Поверх этого операторы могут опционально включить сервис Guardrails для более гранулярного контроля.
Встроенная контентная политика
Все вызовы DashScope API проходят через базовую модерацию, согласованную с требованиями китайского регулирования. При срабатывании встроенного фильтра модель может вернуть текст отказа в теле ответа с finish_reason: "stop".
Сервис Guardrails (опциональный)
Сервис Guardrails обеспечивает дополнительную модерацию с настраиваемыми тегами. Для включения передайте заголовок X-DashScope-DataInspection.
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen-plus",
messages=[
{"role": "user", "content": "..."}
],
extra_headers={
"X-DashScope-DataInspection": '{"input":"cip","output":"cip"}'
}
)
При срабатывании Guardrails DashScope возвращает HTTP 400 с кодом ошибки DataInspectionFailed (OpenAI-compatible mode) или data_inspection_failed.
{
"error": {
"code": "data_inspection_failed",
"message": "Output data may contain inappropriate content.",
"type": "data_inspection_failed"
}
}
Настраиваемое управление тегами
В отличие от других провайдеров, Guardrails DashScope позволяет операторам включать и выключать определённые теги модерации в зависимости от требований приложения. Для корпоративных пользователей доступны настраиваемые конфигурации политик безопасности. Это делает DashScope наиболее гибким китайским провайдером в плане модерации, хотя выполнение базовых политик остаётся обязательным.
Источник: Alibaba Cloud Guardrails service docs, получено 2026-08-10
Kimi (Moonshot AI): inline-фильтры безопасности
API Kimi применяет серверную фильтрацию контента ко всем запросам в соответствии с требованиями китайского регулирования. Как и DeepSeek, Kimi не предоставляет API модерации или покатегорийных оценок.
Поведение при отказе
Kimi K3 возвращает сообщения об отказе inline в теле ответа. Документация API указывает, что модель «will reject any questions involving terrorism, racial discrimination, pornography, incitement to violence, etc.»
Отказы приходят как обычные HTTP 200 ответы с текстом отказа в поле assistant-сообщения.
{
"choices": [
{
"message": {
"role": "assistant",
"content": "I'm sorry, but I can't assist with that request..."
},
"finish_reason": "stop"
}
]
}
Что важно знать операторам
- Нет отдельного endpoint модерации
- Фильтрация контента не настраивается через API
- Отказы inline (HTTP 200 + текст отказа), а не error-level
- При выходе open-weight-версии Kimi K3 самостоятельные развёртывания не будут включать API-уровневую фильтрацию
Источник: Kimi Platform docs, получено 2026-08-10
Влияние на мультипровайдерную маршрутизацию
При маршрутизации запросов между провайдерами с разными контентными политиками возникают три практические проблемы.
1. Обнаружение отказов модерации
Основная сложность в том, что большинство провайдеров возвращают отказы как обычные HTTP 200 ответы. Только DashScope с включённым Guardrails возвращает отдельный HTTP 400 error code. Для OpenAI, Anthropic, DeepSeek и Kimi приходится парсить текст ответа, чтобы определить, ответила модель по существу или вежливо отказала.
Подходы, которые мы наблюдали у операторов:
- Поиск ключевых слов — проверка фраз вроде «I can't help with that», «beyond my current scope» или «I'm unable to»
- Inline-модерация OpenAI — использование параметра
moderationдля получения машиночитаемых флагов вместе с генерацией - Эвристика по длине ответа — отказы модерации обычно значительно короче реальных ответов (менее 200 token)
2. Обработка асимметричных отказов
Промпт, прошедший модерацию OpenAI, может быть отклонён китайским провайдером, и наоборот. Пространства политик пересекаются, но не совпадают.
| Сценарий | OpenAI | Anthropic | Китайские провайдеры |
|---|---|---|---|
| Политический контент (западная перспектива) | Обычно разрешён | Обычно разрешён | Может быть отфильтрован |
| Политический контент (чувствительный для Китая) | Обычно разрешён | Обычно разрешён | Фильтруется |
| Оружие/взрывчатка | Модерируется | Отказ | Отказ |
| CBRN-контент | Модерируется | Отказ | Отказ |
| Контент для взрослых | Модерируется | Отказ | Отказ |
| Историческое/образовательное насилие | Обычно разрешён | Обычно разрешён | Может быть отфильтрован |
3. Стратегия fallback
Когда основной провайдер отклоняет запрос, routing-слой должен принять решение.
- Повторить на резервном провайдере — полезно, когда отказ специфичен для провайдера (например, политическая чувствительность у китайских провайдеров). Если не логировать, есть риск policy arbitrage.
- Показать отказ пользователю — безопаснее с точки зрения compliance.
- Залогировать и уведомить — независимо от retry, фиксировать события модерации для аудита.
TheRouter поддерживает fallback-маршрутизацию, которую можно настроить для обработки различных типов ошибок. Когда провайдер возвращает ошибку, routing-слой может переключиться на альтернативного провайдера. Для мягких отказов модерации (HTTP 200 с текстом отказа) обнаружение и решения о маршрутизации происходят на уровне приложения, поскольку с точки зрения HTTP ответ технически успешен.
Матрица выбора подхода к модерации
| Ваша задача | Рекомендуемый подход |
|---|---|
| Предварительная проверка пользовательского ввода перед генерацией | Endpoint модерации OpenAI (бесплатный, standalone) |
| Получение сигналов модерации при каждой генерации | Inline-модерация OpenAI (параметр moderation) |
| Максимальный контроль над категориями модерации | DashScope Guardrails (настраиваемые теги) |
| Аудит-trail всех событий модерации | Endpoint модерации OpenAI + логирование на уровне приложения |
| Обход провайдер-специфичных отказов | Обнаружение отказов на уровне приложения + fallback-маршрутизация |
| Self-hosted модель без контентных фильтров | Open-weight модели DeepSeek или Kimi |
FAQ
Как программно обнаружить отказ модерации?
Inline-модерация OpenAI возвращает машиночитаемые булевы flagged и покатегорийные оценки. У остальных провайдеров приходится парсить текст ответа. Проверяйте типичные паттерны отказов, аномально короткие ответы или используйте лёгкий классификатор на выходе. Исключение — DashScope с Guardrails, который возвращает отдельный HTTP 400 error code.
Можно ли использовать endpoint модерации OpenAI для проверки выходов других провайдеров?
Да. Endpoint принимает любой текст независимо от того, какая модель его сгенерировала. Некоторые операторы пропускают все LLM-выходы через endpoint модерации OpenAI как дополнительную проверку безопасности, независимо от исходного провайдера. Endpoint бесплатный и не требует ключа генерации — подойдёт любой API-ключ OpenAI.
Почему один и тот же промпт получает разные результаты модерации у разных провайдеров?
Каждый провайдер поддерживает независимые контентные политики, обучает разные классификаторы безопасности и работает в разных регуляторных рамках. Китайские провайдеры (DeepSeek, DashScope, Kimi) обязаны соблюдать китайское контентное регулирование, покрывающее категории, которые западные провайдеры не фильтруют. Западные провайдеры (OpenAI, Anthropic) имеют собственные категории политик, не обязательно совпадающие с китайскими требованиями.
Что происходит с модерацией контента в потоковых ответах?
Inline-оценки модерации OpenAI приходят после генерации полного ответа и не включаются в частичные потоковые delta. Если ответ получает флаг модерации в процессе стриминга, ваше приложение к этому моменту уже начало отправлять token пользователю. Провайдеры с inline-отказами (Anthropic, DeepSeek, Kimi) передают текст отказа как обычную часть потокового ответа.
Обрабатывает ли TheRouter отказы модерации в своей маршрутизации?
TheRouter маршрутизирует OpenAI-compatible запросы через настроенных провайдеров и поддерживает fallback-маршрутизацию при ошибках провайдера. Для жёстких ошибок вроде HTTP 400 DataInspectionFailed от DashScope routing-слой может инициировать fallback. Для мягких отказов (HTTP 200 с текстом отказа) обнаружение и routing-решения принимаются на уровне приложения, поскольку с точки зрения HTTP ответ технически успешен.
Есть ли региональные различия в строгости модерации?
Да. Китайские провайдеры работают в рамках обязательного контентного регулирования, покрывающего политическую чувствительность, исторические события и другие категории, которые западные провайдеры обычно не фильтруют. Международный endpoint DashScope (dashscope-intl.aliyuncs.com) применяет те же базовые контентные политики, что и внутренний endpoint. При маршрутизации между китайскими и западными провайдерами операторам следует тестировать конкретные use case на обоих наборах политик.
Дополнительное чтение
- Коды ошибок LLM API: кросс-провайдерный справочник, обработка HTTP-ошибок, включая вызванные модерацией
- Governance и runtime-guardrails AI-агентов: сравнение, контроль governance для agentic coding workflow
- Сравнение провайдеров LLM API 2026, обзор провайдеров с ценами и rate limits
- Руководство по миграции с OpenAI на TheRouter, переход от прямого использования OpenAI к мультипровайдерной маршрутизации
- DeepSeek API: полное руководство, полный справочник DeepSeek API с обработкой ошибок
- Aliyun Bailian (DashScope) API: руководство, настройка DashScope, модели и паттерны интеграции
- Kimi K3 API: руководство по интеграции, настройка и использование API Kimi K3
- Anthropic Claude API: полное руководство, справочник Claude API и интеграция