Skip to content

Обработка ошибок

Узнайте, как обрабатывать ошибки при взаимодействии с API AITUNNEL. Полное руководство по кодам ошибок, сообщениям и лучшим практикам обработки ошибок.

При возникновении ошибок AITUNNEL возвращает JSON-ответ следующей структуры:

typescript
type ErrorResponse = {
  error: {
    code: number;
    message: string;
    metadata?: Record<string, unknown>;
  };
};

HTTP-ответ будет иметь тот же код статуса, что и error.code, формируя ошибку запроса, если:

  • Ваш исходный запрос недействителен
  • У вашего API-ключа/аккаунта закончились кредиты

В противном случае возвращаемый HTTP-статус ответа будет 200, и любая ошибка, возникшая при генерации вывода LLM, будет отправлена в теле ответа или как событие SSE data.

Пример кода для вывода ошибок в JavaScript:

typescript
const request = await fetch("https://api.aitunnel.ru/...");
console.log(request.status); // Будет кодом ошибки, если модель не начала обработку вашего запроса
const response = await request.json();
console.error(response.error?.status); // Будет кодом ошибки
console.error(response.error?.message);

Коды ошибок

  • 400: Неверный запрос (недействительные или отсутствующие параметры, CORS)
  • 401: Недействительные учетные данные (отключен/недействителен API-ключ)
  • 402: У вашего аккаунта или API-ключа недостаточно баланса. Добавьте больше баланса и повторите запрос.
  • 403: Выбранная вами модель требует модерации, и ваш ввод был помечен
  • 408: Ваш запрос превысил время ожидания
  • 429: Вы превысили лимит запросов
  • 502: Выбранная вами модель недоступна или мы получили недействительный ответ от неё

Ошибки модерации

Если ваш ввод был помечен, error.metadata будет содержать информацию о проблеме. Структура метаданных следующая:

typescript
type ModerationErrorMetadata = {
  reasons: string[]; // Причины, по которым ваш ввод был помечен
  flagged_input: string; // Помеченный сегмент текста, ограниченный 100 символами. Если помеченный ввод длиннее 100 символов, он будет обрезан посередине и заменен на ...
  provider_name: string; // Имя провайдера, запросившего модерацию
  model_slug: string;
};

Ошибки провайдера

Если провайдер модели сталкивается с ошибкой, error.metadata будет содержать информацию о проблеме. Структура метаданных следующая:

typescript
type ProviderErrorMetadata = {
  provider_name: string; // Имя провайдера, столкнувшегося с ошибкой
  raw: unknown; // Исходная ошибка от провайдера
};

Когда контент не генерируется

Иногда модель может не генерировать никакого контента. Это обычно происходит, когда:

  • Модель прогревается после холодного старта
  • Система масштабируется для обработки большего количества запросов

Время прогрева обычно составляет от нескольких секунд до нескольких минут, в зависимости от модели и провайдера.

Если вы сталкиваетесь с постоянными проблемами отсутствия контента, рассмотрите возможность реализации простого механизма повторных попыток или попробуйте снова с другим провайдером или моделью, у которой была более недавняя активность.

Кроме того, имейте в виду, что в некоторых случаях вы все равно можете быть тарифицированы за стоимость обработки промпта вышестоящим провайдером, даже если контент не был сгенерирован.

AITUNNEL