← Все статьи

Модерация контента и фильтры безопасности LLM API: кросс-провайдерное сравнение отказов, API модерации и политик контента

Мы сравнили подходы к модерации контента у OpenAI, Anthropic, DeepSeek, DashScope и Kimi — endpoint модерации, форматы отказов, категории контентных политик и что нужно знать операторам при маршрутизации запросов между провайдерами с разными политиками безопасности.

· TheRouter

Каждый провайдер 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 APIHTTP 200 + текст отказаhate, harassment, self-harm, sexual, violence (+ подкатегории)Нет (уровень модели)
AnthropicНетДа — конституционные классификаторыHTTP 200 + stop_reason: "end_turn" с вежливым отказомCBRN, оружие, безопасность детей, вмешательство в выборы, мошенничествоНет (уровень модели/классификатора)
DeepSeekНетДа — серверная фильтрацияHTTP 400 или текст отказа в теле ответаКатегории по китайскому регулированию + общая безопасностьНет
DashScopeНет (отдельный продукт Guardrails)Да — встроенная политика + опциональный GuardrailsHTTP 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, может быть отклонён китайским провайдером, и наоборот. Пространства политик пересекаются, но не совпадают.

СценарийOpenAIAnthropicКитайские провайдеры
Политический контент (западная перспектива)Обычно разрешёнОбычно разрешёнМожет быть отфильтрован
Политический контент (чувствительный для Китая)Обычно разрешёнОбычно разрешёнФильтруется
Оружие/взрывчаткаМодерируетсяОтказОтказ
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 на обоих наборах политик.

Дополнительное чтение

Помощь и контакты