Agent Routing

Маршрутизация — направлять 80% запросов на дешёвую модель, эскалируя сложные на дорогую, сохраняя 95%+ качества. Это «архитектурное решение, а не оптимизация»: меняет unit-экономику агента (экономия 45–85%).

Суть

Типичная ошибка — одна (самая мощная) модель на всё: «который час?» и «напиши алгоритм» стоят одинаково дорого. Роутер оценивает сложность запроса и выбирает модель.

Зачем это нужно

Разница цены Tier 1 vs Tier 3 — 17–19×, а на простых задачах (классификация/FAQ) gap качества < 2%. Без роутинга платишь флагман-цену за тривиальное.

Как работает (3 способа + cascade)

  • Rule-based — ключевые слова/длина/тип задачи → cheap/expensive. Просто, предсказуемо, негибко.
  • Classifier-based — мини-модель оценивает simple/complex/ambiguous. Гибко, нужны данные. ⚠️ Оговорка для security: классификатор, годный для роутинга по сложности, не годен для безопасности как есть. Конкретно PromptGuard-2 (Meta ~100M) даёт F1 ~0.35 — но причина не в размере, а в калибровке: recall у него близок к 1.0 при FPR 96% на доброкачественном агентном трафике. Специализированный энкодер на 184M выигрывает все injection-бенчмарки у 8B-модели, а универсальная 30B проигрывает ему на этой оси. Выбирать детектор нужно по паре «recall на своей атаке / FPR на своём нормальном трафике», а не по размеру — разбор в Injection Detection.
  • Cascade (самый популярный в проде): cheap-модель → возвращает ответ + confidence score (0.0–1.0) → если ≥ порога отдаём, иначе эскалируем на дорогую. Разбор целиком — Cascade Routing: там четыре типа гейта (эвристики, logprobs, LLM-верификатор, фидбэк) в порядке возрастания цены, четырёхрубежный пайплайн и способы сломать каскад слишком мягким или слишком строгим порогом. Само-репортируемый confidence, описанный здесь, — только один из этих гейтов и не самый надёжный.
  • Порог (старт 0.85) калибруется экспериментом на 100–200 реальных запросах (LLM-judge), не «на глаз». Это порог само-репортируемой уверенности отвечающей модели, и с порогом 0.7 из LangGraph Intent Router он не сравним: там величину выдаёт эмбеддинг-классификатор намерения, у которого своя шкала и своя калибровка. Переносить число между ними нельзя — как и порог семантического кэша, который живёт на третьей шкале (Semantic Cache).
  • Confidence получают через structured output (JSON: {answer, confidence, reason}). Триггеры эскалации на дорогую модель: confidence < 0.85, агент запросил tool >3 раз, ответ содержит «I'm not sure» (подход «trust or escalate»).
  • Готовые semantic-router'ы: vLLM Semantic Router (прослойка на Rust между фронтом и LLM: смотрит на запрос → дешёвая 8B или SOTA) даёт −48% токенов, −47% задержки, +10% точности; альтернативы — musistudio/claude-code-router, lm-sys/RouteLLM.
  • Budget-aware (см. Agent CostControl): при остатке бюджета <30% — форсим cheap + уведомляем; <10% — только простые запросы.
  • Реализация в LangGraph: роутинг = условное ребро (add_conditional_edges), где функция-маршрутизатор возвращает имя следующего узла; решением может быть и выбор LLM. Практический intent-router двухуровневый (intent → ветка, затем внутри ветки — следующее решение) — см. LangGraph Intent Router, LangGraph Nodes and Edges.

Альтернативный взгляд: роутер намерения вместо роутера цены

В основной линии заметки роутер — про экономику (cascade по confidence, 80% на дешёвую модель). В прикладной оптике роутер — это Intent / Task Router: лёгкая классификация запроса («объясни термин», «дай план», «сделай отчёт», «найди в документах», «диагностика») → выбор сценария ответа, шаблона и источника контекста, а не модели. Плюс роутер работает как guardrail: отсекает вредные запросы и prompt-injection ещё до «мозга» (policy before reasoning, см. Guardrails). Цена ошибки: ошибся роутер → ассистент «делает не то» (вместо отчёта выдаёт теорию).

Связано с

  • Cascade Routing — каскад по уверенности как отдельный паттерн: гейты, пороги, режимы отказа
  • Model Selection — роутинг оперирует выбором моделей
  • Reasoning Effort — модель + усилие = рычаги цены/качества
  • Agent CostControl — роутер и бюджет работают вместе
  • LangGraph Intent Router — роутинг как условные рёбра графа