Обработка ошибок
Узнайте, как обрабатывать ошибки при взаимодействии с API AITUNNEL. Полное руководство по кодам ошибок, сообщениям и лучшим практикам обработки ошибок.
При возникновении ошибок AITUNNEL возвращает JSON-ответ следующей структуры:
type ErrorResponse = {
error: {
code: number;
message: string;
metadata?: Record<string, unknown>;
};
};
HTTP-ответ будет иметь тот же код статуса, что и error.code
, формируя ошибку запроса, если:
- Ваш исходный запрос недействителен
- У вашего API-ключа/аккаунта закончились кредиты
В противном случае возвращаемый HTTP-статус ответа будет 200
, и любая ошибка, возникшая при генерации вывода LLM, будет отправлена в теле ответа или как событие SSE data.
Пример кода для вывода ошибок в JavaScript:
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
будет содержать информацию о проблеме. Структура метаданных следующая:
type ModerationErrorMetadata = {
reasons: string[]; // Причины, по которым ваш ввод был помечен
flagged_input: string; // Помеченный сегмент текста, ограниченный 100 символами. Если помеченный ввод длиннее 100 символов, он будет обрезан посередине и заменен на ...
provider_name: string; // Имя провайдера, запросившего модерацию
model_slug: string;
};
Ошибки провайдера
Если провайдер модели сталкивается с ошибкой, error.metadata
будет содержать информацию о проблеме. Структура метаданных следующая:
type ProviderErrorMetadata = {
provider_name: string; // Имя провайдера, столкнувшегося с ошибкой
raw: unknown; // Исходная ошибка от провайдера
};
Когда контент не генерируется
Иногда модель может не генерировать никакого контента. Это обычно происходит, когда:
- Модель прогревается после холодного старта
- Система масштабируется для обработки большего количества запросов
Время прогрева обычно составляет от нескольких секунд до нескольких минут, в зависимости от модели и провайдера.
Если вы сталкиваетесь с постоянными проблемами отсутствия контента, рассмотрите возможность реализации простого механизма повторных попыток или попробуйте снова с другим провайдером или моделью, у которой была более недавняя активность.
Кроме того, имейте в виду, что в некоторых случаях вы все равно можете быть тарифицированы за стоимость обработки промпта вышестоящим провайдером, даже если контент не был сгенерирован.