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, если сработала хотя бы одна категория.

TypeScript
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")[];
  };
};

Пример:

JSON
{
  "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
curl https://api.aitunnel.ru/public/aitunnel/models/moderations

Обычно хватает omni-moderation-latest — её можно не указывать.