
Мультимодельные AI-приложения: роутинг и фолбэки
Туториал по мультимодельным AI-приложениям: OpenAI-совместимый клиент, роутинг моделей в OpenRouter, автоматические фолбэки, лимиты цен и учёт расходов.
Продакшен-приложение с AI должно переживать отказ модели так, чтобы никого не пришлось будить среди ночи. Паттерн, который к этому приводит, скучен и надёжен: один OpenAI-совместимый клиент, ранжированный список моделей, правила роутинга, предпочитающие дешёвых, но здоровых провайдеров, и жёсткие лимиты цен.
Что вы соберёте в этом туториале:
-
Единый клиент, который вызывает GPT, Claude, Gemini, DeepSeek и другие модели заменой одной строки
-
Автоматические фолбэки — если основная модель падает с ошибкой или таймаутом, запрос повторяется на следующей модели из вашего списка
-
Контроль расходов — роутинг «сначала самое дешёвое» и лимиты
max_price, чтобы всплеск трафика не смог сжечь ваш бюджет -
Прозрачность трат — учёт стоимости каждого запроса, который можно логировать и вешать на алерты
Всё ниже использует OpenRouter как слой роутинга; та же архитектура работает с любым OpenAI-совместимым шлюзом, включая APIMart, когда в том же приложении нужны модели изображений, видео или аудио.

Почему мультимодельность лучше одной модели
Отказы — вопрос «когда», а не «если»
У каждого крупного провайдера случаются заметные инциденты. Если приложение жёстко привязано к одному вендору, каждый из этих инцидентов — ваш инцидент. Цепочка фолбэков превращает «провайдер лежит» в короткий всплеск задержки.
У моделей разные сильные стороны
Дешёвые быстрые модели берут на себя классификацию и извлечение данных; фронтирные модели — генерацию с тяжёлым рассуждением. Смешивание уровней под задачу регулярно срезает счёт за инференс вдвое и больше.
Цены меняются каждый месяц
Цены на модели постоянно падают. Если смена модели — правка одной строки, вы можете гнаться за лучшим соотношением цены и качества каждый квартал без проекта миграции.
Шаг 1: один клиент, много моделей
Направьте официальный OpenAI SDK на шлюз — свой HTTP-код не нужен:
from openai import OpenAI
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="sk-or-..."
)
resp = client.chat.completions.create(
model="anthropic/claude-sonnet-4.5",
messages=[{"role": "user", "content": "Summarize this contract clause..."}],
)
print(resp.choices[0].message.content)
Переключение на deepseek/deepseek-chat или google/gemini-2.5-pro — это просто другая строка model. Держите имена моделей в конфиге, а не в коде.
Версия на TypeScript
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://openrouter.ai/api/v1",
apiKey: process.env.OPENROUTER_API_KEY,
});
const resp = await client.chat.completions.create({
model: "deepseek/deepseek-chat",
messages: [{ role: "user", content: "Classify this ticket: ..." }],
});
Реестр моделей вместо разбросанных строк
Централизуйте маппинг «задача → уровень модели» один раз:
{
"extract": "deepseek/deepseek-chat",
"chat": "anthropic/claude-sonnet-4.5",
"reason": "openai/gpt-5.2"
}
Шаг 2: фолбэки, срабатывающие автоматически
Массив models
OpenRouter повторяет запрос на стороне сервера по ранжированному списку, когда основная модель отдаёт ошибку, упирается в rate limit или таймаутит [1]:
{
"model": "openai/gpt-5.2",
"models": ["anthropic/claude-sonnet-4.5", "deepseek/deepseek-chat"],
"messages": [{ "role": "user", "content": "..." }]
}
Ответ сообщает, какая модель на самом деле обслужила запрос — логируйте это.
Фейловер на уровне провайдеров
Ниже фолбэков моделей каждая модель может обслуживаться несколькими провайдерами. Настройки роутинга закрепляют или исключают конкретные апстримы [2]:
{
"model": "meta-llama/llama-3.3-70b-instruct",
"provider": {
"order": ["deepinfra", "together"],
"allow_fallbacks": true
}
}
Последний рубеж на стороне клиента
Оберните вызов в один повтор к другому шлюзу (или к закэшированному ответу) на редкий случай, когда недоступен сам роутер. Только один повтор — ретрай-штормы это отказы, устроенные своими руками.
Шаг 3: контроль расходов, который нельзя обойти
Роутинг «сначала самое дешёвое»
Сортируйте провайдеров по цене, когда задержка второстепенна — либо на уровне запроса ("provider": {"sort": "price"}), либо через суффикс модели :floor для батч-задач.
Жёсткие лимиты цен
max_price отклоняет любого провайдера с котировкой выше вашего потолка (в долларах за 1M токенов):
{
"model": "openai/gpt-5.2",
"max_price": { "prompt": 1.5, "completion": 10 },
"messages": [{ "role": "user", "content": "..." }]
}
Это гарантия, а не пожелание — запросы, которые нельзя обслужить в пределах лимита, быстро падают вместо того, чтобы молча стоить дороже.
Считайте стоимость каждого запроса
Ответы содержат usage; умножьте его на тарифы обслужившей модели и отправляйте как метрику. Ставьте алерты на дрейф стоимости задачи, а не только на общие траты — именно дрейфом проявляется тихий фолбэк на более дорогую модель.
За пределами текста: тот же паттерн для изображений, видео и аудио
LLM-роутеры заканчиваются на языковых моделях. Реальные продукты генерируют ещё изображения, видео и речь — а жонглирование ещё пятью SDK вендоров возвращает ровно ту проблему, которую вы только что решили.
Один шлюз для всех модальностей
APIMart предоставляет 500+ моделей — чат плюс GPT-Image-2, Sora 2, Kling, Veo, Suno — за одним OpenAI-совместимым API и одним балансом.
Знакомая интеграция, цены со скидкой
Настройка клиента идентична Шагу 1, отличается только base URL, а цены на модели примерно на 20% ниже официального прайса — точные тарифы по моделям смотрите на странице цен.
Смешивать роутеры — нормально
Типичная продакшен-схема: OpenRouter или прямые API для текста, APIMart для генерации медиа — оба за одной абстракцией в вашем коде, оба заменяются через конфиг.
Чек-лист для продакшена
Выкатывайтесь со всеми пятью пунктами: реестр моделей в конфиге, серверная цепочка фолбэков, роутинг «сначала самое дешёвое» там, где позволяет задержка, лимиты max_price на каждом вызове и метрики стоимости запросов с алертами на дрейф. Именно эта комбинация позволяет команде из двух человек держать мультимодельное приложение без выделенного дежурства опсов.
Выберите нужную модель в маркетплейсе моделей
Попробуйте чат, изображения и видео в маркетплейсе APIMart и быстро оцените возможности моделей через единый API.