AI-модерация контента — это автоматическая фильтрация пользовательского контента (комментариев, отзывов, сообщений) с помощью языковых моделей. В отличие от простых фильтров по ключевым словам, AI понимает контекст и тональность, что снижает количество ложных срабатываний и пропусков.
Почему AI лучше фильтров по словам
Традиционные подходы к модерации имеют серьёзные ограничения:
- Словарные фильтры — легко обходятся заменой букв ("д.у.р.а.к"), транслитом и эвфемизмами
- Регулярные выражения — генерируют массу ложных срабатываний (слово "скосить" содержит подстроку "коси")
- Ручная модерация — дорого, медленно, не масштабируется
AI-модерация понимает смысл текста и может выделять категории нарушений с указанием степени уверенности.
Реализация AI-модерации
Создадим систему модерации с несколькими категориями нарушений:
from openai import OpenAI
import json
client = OpenAI(
base_url="https://api.modelswitch.ru/v1",
api_key="msk_ваш_ключ"
)
def moderate_content(text: str) -> dict:
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": """Ты — система модерации контента.
Проанализируй текст и верни JSON:
{
"approved": true/false,
"categories": {
"spam": {"flagged": false, "confidence": 0.0},
"toxicity": {"flagged": false, "confidence": 0.0},
"hate_speech": {"flagged": false, "confidence": 0.0},
"adult_content": {"flagged": false, "confidence": 0.0},
"personal_data": {"flagged": false, "confidence": 0.0}
},
"reason": "причина отклонения или null"
}
Верни ТОЛЬКО JSON."""},
{"role": "user", "content": text}
],
temperature=0.1
)
return json.loads(response.choices[0].message.content)
result = moderate_content("Купи виагру дёшево на нашем сайте!!!")
# {"approved": false, "categories": {"spam": {"flagged": true, "confidence": 0.98}, ...},
# "reason": "Спам: рекламное сообщение с продажей товаров"}
Потоковая модерация в реальном времени
Для платформ с высоким трафиком используйте асинхронную обработку:
import asyncio
from openai import AsyncOpenAI
async_client = AsyncOpenAI(
base_url="https://api.modelswitch.ru/v1",
api_key="msk_ваш_ключ"
)
async def moderate_stream(messages: list[dict]) -> list[dict]:
tasks = [
moderate_single(msg["id"], msg["text"])
for msg in messages
]
return await asyncio.gather(*tasks)
async def moderate_single(msg_id: str, text: str) -> dict:
result = await async_client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "Классифицируй: safe/spam/toxic/nsfw. JSON: {"status": "..."}"},
{"role": "user", "content": text}
],
temperature=0.0
)
data = json.loads(result.choices[0].message.content)
return {"id": msg_id, **data}
Двухуровневая система модерации
Оптимальная архитектура — двухуровневая проверка:
- Первый уровень (gpt-4o-mini) — быстрая фильтрация всего контента, дешёвая модель
- Второй уровень (gpt-4o) — глубокий анализ спорных случаев (confidence 0.4–0.7)
Это снижает стоимость на 80%, так как большинство сообщений очевидно безопасны и не требуют дорогой модели. Через ModelSwitch переключение между моделями — один параметр. Стоимость модерации 100 000 сообщений в день составляет ~$5–10, что значительно дешевле ручной модерации.