Как построить AI model router API для стоимости, скорости и отказоустойчивости

OdiRouter Team
Архитектура AI Model Router API для маршрутизации нескольких LLM

AI model router API принимает запрос, определяет его класс и выбирает модель по заранее заданным ограничениям: качеству, цене, latency, доступности и политике данных. Хороший router не угадывает «лучшую модель» магически. Он принимает объяснимое решение, записывает причину выбора и умеет безопасно остановиться.

Первая версия AI-продукта обычно подключена к одной модели. Это разумно: меньше кода, проще отладка. Затем появляются противоречивые требования. Маркетингу нужен хороший русский, поддержке — низкая задержка, финансам — строгий JSON, разработчикам — сильный coding Agent, CFO — меньший счёт.

Добавить пять Model ID несложно. Сложно не превратить систему в набор случайных if, который никто не решается менять.

Router начинается не с модели, а с класса задачи

Класс

Пример

Ограничение

Предпочтительный профиль

Extraction

Достать ИНН и сумму из документа

Строгая схема, минимум выдумок

Дешёвая модель с проверенным JSON

Customer chat

Ответ о доставке

p95 до 2 секунд, русский язык

Быстрая Chat-модель

Complex reasoning

Разобрать спорный возврат

Качество выше цены

Сильная reasoning-модель

Agent action

Изменить CRM через Tool

Контроль прав и идемпотентность

Модель с устойчивым Tool Calling

Multimodal

Проверить фото товара

Vision и допустимая цена изображения

Специализированная multimodal-модель

Если запрос нельзя отнести к классу с приемлемой уверенностью, router должен выбрать безопасный default, а не самый дешёвый route.

Минимальная архитектура

application
  -> policy layer
  -> task classifier
  -> model registry
  -> router
  -> gateway/provider
  -> validator
  -> telemetry

model registry stores:
capabilities, price tiers, context limits,
data policy, timeout, eval score, health

Model registry важнее красивого алгоритма. Без актуальных данных router будет принимать точные решения на основе устаревшей реальности. Цены, лимиты и capabilities должны версионироваться, а изменения — проходить review.

Почему «дешёвая модель для простых запросов» — слабое правило

Сложность запроса нельзя надёжно определить по длине. «Верни сумму НДС» выглядит просто, но ошибка может стоить дорого. Длинная просьба переписать рекламный текст может быть безопасной и дешёвой.

Вместо одного score используйте ограничения:

· risk: есть ли деньги, персональные данные или внешнее действие;

· contract: нужен ли JSON Schema, Vision или Tools;

· latency budget: сколько времени осталось до SLA;

· quality floor: минимальный Eval score для класса;

· cost ceiling: максимально допустимая ожидаемая стоимость;

· data policy: разрешённые provider и регионы.

Пример объяснимого решения

{
  "task_class": "support_refund_complex",
  "risk": "medium",
  "required": ["ru", "json_schema"],
  "latency_budget_ms": 8000,
  "selected_model": "strong-model-a",
  "reason": "cheap-model-b below quality floor",
  "fallback": "strong-model-c",
  "policy_version": "2026-08-11.3"
}

Такой лог помогает разбирать счёт, инциденты и жалобы. Запись полного Prompt не всегда нужна и может нарушать требования к данным; для аналитики часто достаточно хеша, класса и обезличенных метрик.

Три стратегии маршрутизации

Стратегия

Плюс

Минус

Где применять

Правила

Предсказуемость и простой audit

Много ручной настройки

Финансы, Tools, регулируемые процессы

Классификатор

Гибко распределяет разнообразный трафик

Сам может ошибаться и добавляет latency

Поддержка, контент, корпоративный поиск

Каскад

Сначала дешёвый ответ, затем escalation

Нужен надёжный evaluator

Большой поток задач разной сложности

В production часто работает гибрид: правила отсекают запрещённые routes, классификатор выбирает класс, каскад повышает модель при низкой уверенности.

Каскад без самообмана

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

Надёжнее использовать проверяемые сигналы: прошёл ли JSON Schema, найдена ли цитата в RAG-контексте, выполнились ли тесты, совпала ли сумма с детерминированным расчётом. LLM-as-a-judge полезен как один сигнал, но не как единственный судья.

Стоимость маршрута

Ожидаемая стоимость включает больше, чем Token:
expected_cost = model_cost
              + retry_probability  retry_cost
              + escalation_probability  strong_model_cost
              + validation_cost
              + failure_probability * business_loss

Последний член часто игнорируют. Для генерации описания чашки кофе ошибка дёшева. Для финансового отчёта или изменения платёжного статуса — нет. Поэтому один и тот же Prompt может законно идти в разные модели в разных продуктах.

Fallback — это часть бизнес-логики

Fallback запускается не только после 5xx. Причиной может стать Rate Limit, превышение latency budget, невалидный JSON или низкая уверенность. Но повтор нельзя выполнять после необратимого Tool Call без idempotency.

Сбой

Безопасная реакция

Provider timeout до начала ответа

Повторить через совместимый route

Streaming оборвался после части текста

Не склеивать ответы разных моделей; перезапустить или сообщить об ошибке

Невалидный JSON

Один repair step, затем escalation

Tool мог выполниться

Проверить состояние по idempotency key перед retry

Gateway и router — не одно и то же

Gateway унифицирует транспорт, ключи и наблюдаемость. Router решает, куда отправить конкретный запрос. OpenRouter и OdiRouter могут дать готовый каталог моделей; LiteLLM или Portkey — слой управления над вашими provider accounts. Но правила задачи всё равно принадлежат продуктовой команде.

OdiRouter можно использовать как OpenAI-compatible gateway под собственным router: приложение выбирает Model ID, а единый endpoint сокращает число интеграций. Это удобная граница ответственности — если не переносить в gateway бизнес-логику, которую потом невозможно объяснить.

Как внедрять без риска

1. Соберите статистику текущей одной модели: качество, Token, latency, ошибки.

2. Выделите два самых массовых класса запросов.

3. Добавьте одну альтернативную модель и shadow traffic.

4. Сформулируйте quality floor и cost ceiling.

5. Включите route для 5% безопасного трафика.

6. Добавьте fallback только после тестов ошибок и идемпотентности.

7. Пересматривайте registry и Eval после обновления моделей.

Частые вопросы

Что такое AI model router API?

Это API-слой, который выбирает модель для каждого запроса на основе типа задачи, capabilities, цены, latency, политики данных и текущей доступности.

Чем LLM router отличается от API aggregator?

Агрегатор предоставляет доступ к моделям и единый биллинг. Router принимает решение о выборе модели. Они могут использоваться вместе.

Нужна ли отдельная модель-классификатор?

Не всегда. Небольшой набор правил надёжнее на старте. Классификатор полезен, когда классов и формулировок становится много.

Как измерить пользу router?

Сравните cost per successful task, p95 latency, completion rate, долю escalations и число инцидентов с базовой системой на одной модели.

Вывод

Зрелый AI model router не ищет одну идеальную модель. Он превращает выбор в управляемое решение: фиксирует ограничения, объясняет route, проверяет результат и безопасно обрабатывает сбой. Именно это снижает стоимость без скрытого ухудшения качества.

#AI gateway#AI model router API#LLM cost optimization#LLM router API#OpenAI compatible API gateway#model fallback#маршрутизация LLM