API
Модерация
Классифицирует текст и картинки по категориям политики: ненависть, насилие, сексуальный контент и другие. Формат как у OpenAI Moderations.
POST https://api.aitunnel.ru/v1/moderations. Стриминга нет.
Бесплатно
Модерация не списывает баланс.
Это не защита PII. PII маскирует паспорта и телефоны на шлюзе. Модерация отвечает, нарушает ли контент правила.
Запрос
Обязательно input: строка, массив строк или мультимодальный массив. model можно не указывать — будет omni-moderation-latest.
curl https://api.aitunnel.ru/v1/moderations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-aitunnel-xxx" \
-d '{
"input": "Текст для проверки"
}'Несколько текстов — один запрос, в results по объекту на каждый:
result = client.moderations.create(
input=["Первый текст", "Второй текст", "Третий текст"],
)
for item in result.results:
print(item.flagged, item.categories)Ответ
flagged: true, если сработала хотя бы одна категория.
type ModerationResponse = {
id: string;
model: string;
results: ModerationResult[];
};
type ModerationResult = {
flagged: boolean;
categories: {
hate: boolean;
"hate/threatening": boolean;
harassment: boolean;
"harassment/threatening": boolean;
"self-harm": boolean;
"self-harm/intent": boolean;
"self-harm/instructions": boolean;
illicit: boolean;
"illicit/violent": boolean;
sexual: boolean;
"sexual/minors": boolean;
violence: boolean;
"violence/graphic": boolean;
};
category_scores: { [category: string]: number };
// Только omni-moderation-latest: text / image по каждой категории
category_applied_input_types?: {
[category: string]: ("text" | "image")[];
};
};Пример:
{
"id": "modr-xxxxxxxxxxxx",
"model": "omni-moderation-latest",
"results": [
{
"flagged": false,
"categories": {
"hate": false,
"harassment": false,
"self-harm": false,
"sexual": false,
"violence": false
},
"category_scores": {
"hate": 0.000012,
"harassment": 0.000045,
"self-harm": 0.000003,
"sexual": 0.000021,
"violence": 0.000015
}
}
]
}Картинки
omni-moderation-latest принимает изображения вместе с текстом. input — массив объектов text / image_url (URL или data:…;base64). В ответе category_applied_input_types показывает, что сработало: текст или картинка.
curl https://api.aitunnel.ru/v1/moderations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-aitunnel-xxx" \
-d '{
"model": "omni-moderation-latest",
"input": [
{ "type": "text", "text": "Текст для проверки" },
{ "type": "image_url", "image_url": { "url": "https://example.com/image.png" } }
]
}'Модель
Список без ключа:
curl https://api.aitunnel.ru/public/aitunnel/models/moderationsОбычно хватает omni-moderation-latest — её можно не указывать.