ЦАРЬ ROUTER

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

ЦАРЬ ROUTER использует стандартные HTTP-коды. OpenAI SDK корректно перехватывает их через свои exception-классы.

Коды ошибок

КодНазваниеОписаниеРешение
400Bad RequestНеизвестная модель или некорректные параметрыПроверьте имя модели и формат запроса
401UnauthorizedНеверный или отсутствующий API-ключПроверьте заголовок Authorization: Bearer sk-tsar-...
402Payment RequiredБюджет ключа исчерпан или баланс = 0Пополните баланс или увеличьте бюджет ключа
403ForbiddenНет прав на действиеПроверьте роль/права пользователя
422Unprocessable EntityОшибка валидацииПроверьте типы и форматы полей
429Too Many RequestsПревышен RPM лимит ключаУменьшите частоту запросов
502Bad GatewayВсе провайдеры модели недоступныПопробуйте другую модель или повторите позже

Формат ошибок

{
  "detail": "Model 'unknown-model' not found. Available: yandex/yandexgpt, sber/gigachat-2-max, ..."
}

Для ошибок валидации (422):

{
  "detail": [
    {"loc": ["body", "model"], "msg": "field required", "type": "value_error.missing"}
  ]
}

Пример обработки

from openai import OpenAI, APIError, RateLimitError, AuthenticationError
 
client = OpenAI(base_url="https://api.tsarrouter.ru/v1", api_key="sk-tsar-ваш-ключ")
 
try:
    response = client.chat.completions.create(
        model="yandex/yandexgpt",
        messages=[{"role": "user", "content": "Привет"}],
    )
except AuthenticationError:
    print("Неверный API-ключ")
except RateLimitError:
    print("Превышен лимит запросов")
except APIError as e:
    if e.status_code == 402:
        print("Пополните баланс")
    elif e.status_code == 502:
        print("Провайдеры недоступны, попробуйте позже")
    else:
        print(f"Ошибка API: {e}")

502 и retry-логика

При получении 502 — ЦАРЬ ROUTER уже попробовал всех доступных провайдеров модели (с автоматическими retry). Это означает полный отказ. Рекомендации:

  • Используйте models (fallback-цепочка) для критичных запросов
  • Повторите запрос через 5-10 секунд — провайдер может восстановиться