Суть патерна
Routing Agent - це патерн, у якому агент обирає, який інший агент або інструмент має виконати задачу.
Коли потрібен: коли спочатку треба вибрати найкращого виконавця або інструмент для конкретної задачі.
Замість того, щоб виконувати все самостійно, він:
- аналізує задачу
- визначає, хто може її виконати
- передає її відповідному агенту

Проблема
Уяви, що в системі є кілька спеціалістів:
UI Agentдля frontend-задачFinance Agentдля фінансових розрахунківCode Agentдля технічних змін
Користувач надсилає різні запити, але без кроку маршрутизації вони потрапляють не за спеціалізацією, а у "випадкового" виконавця.
Проблема не в тому, що агенти слабкі, а в тому, що система не вміє стабільно обрати правильного виконавця.
У результаті:
- профільний запит іде не тому агенту
- якість падає через втрату спеціалізації
- час зростає через зайві спроби "не в своїй темі"
- маршрут стає непередбачуваним
У цьому й проблема: без керованого маршрутизаційного кроку навіть проста задача може виконуватись "не тим" агентом і давати слабкий результат.
Рішення
Routing додає окремий етап вибору виконавця перед виконанням.
Аналогія: це як диспетчер у сервісному центрі. Диспетчер не ремонтує сам, а визначає, до якого спеціаліста направити заявку. Саме це зменшує помилки і зайві переадресації.
Ключовий принцип: спочатку правильний вибір виконавця, потім передача задачі.
Router не виконує роботу сам. Його роль - керувати маршрутом:
- Аналіз: класифікувати запит
- Вибір: обрати агента за
routing-rules - Делегування: передати задачу виконавцю
- Перемаршрутизація (Fallback, за потреби): змінити виконавця при
mismatchабо помилці
На схемі нижче показаний базовий маршрут: вибір одного виконавця і передача задачі йому.
Це дає:
- вищу точність через спеціалізацію
- менше зайвих кроків і нижча затримка
- прозорий маршрут для дебагу та контролю
- нижчий ризик помилки вибору виконавця
Працює добре, якщо:
- є чіткі правила класифікації
- ролі агентів не перекриваються хаотично
- визначено резервний маршрут
- крок маршрутизації (маршрутизатор) не обходиться напряму користувачем або логікою виконавця
Навіть якщо модель "хоче" віддати задачу першому доступному агенту, саме routing-policy фіксує, хто має виконувати її фактично.
Як працює
Router не виконує задачу сам.
Він лише передає її спеціалізованому агенту, який виконує підзадачу через власний цикл: Міркування -> Дія -> Спостереження.
Опис повного флоу: Analyze → Decide → Delegate
Аналіз
Router визначає тип задачі, домен і потрібну спеціалізацію.
Рішення
Система обирає найвідповіднішого виконавця за routing-policy і confidence.
Делегування
Задача передається обраному агенту, а Router контролює маршрут у разі mismatch/error.
У коді це виглядає так
agent = route(goal) # Router класифікує goal і обирає профільного виконавця.
result = agent.run(goal) # Виконання робить обраний агент, не Router.
return result
Як це виглядає під час виконання
Goal: "Скільки податків потрібно сплатити з фриланс доходу?"
Analyze: фінансова задача
Decide: обрати Finance Agent
Route confidence: 0.92 (finance)
Delegate: система передає задачу Finance Agent
Observe: Finance Agent повертає розрахунок
Goal: "Зміни колір кнопки на лендингу"
Analyze: frontend задача
Decide: обрати UI Agent
Route confidence: 0.89 (ui)
Delegate: система передає задачу UI Agent
Observe: UI Agent повертає оновлений компонент
Router лише обирає виконавця і передає задачу.
Якість результату залежить від правильності цього вибору.
Повний приклад Routing агента
Коли підходить — і коли ні
Підходить
| Ситуація | Чому цей патерн підходить | |
|---|---|---|
| ✅ | Задачі відрізняються за типом або складністю | Router обирає виконавця під конкретний тип задачі, а не відправляє все одному агенту. |
| ✅ | Є спеціалізовані агенти під різні задачі | Маршрутизація дає змогу використати сильні сторони кожного агента. |
| ✅ | Важлива точність виконання | Правильний вибір виконавця зменшує кількість помилок і повторних запусків. |
Не підходить
| Ситуація | Чому цей патерн не підходить | |
|---|---|---|
| ❌ | Усі задачі однотипні | Додатковий крок вибору маршруту не дає користі, якщо виконавець завжди один і той самий. |
| ❌ | У системі лише один агент | Маршрутизація дублює прямий виклик і лише ускладнює пайплайн. |
| ❌ | Маршрутизація не впливає на результат | Якщо якість результату не змінюється від вибору виконавця, цей шар зайвий. |
Бо Routing додає додатковий крок обробки. Якщо задачі не відрізняються, він лише уповільнює виконання.
Коли використовувати Routing (vs інші патерни)
Використовуйте Routing, коли головне - правильно вибрати, кому передати запит.
Короткий тест:
- якщо потрібно "визначити найкращого виконавця" -> Routing
- якщо потрібно "провести задачу через чіткі кроки" -> Orchestrator Agent
Порівняння з іншими патернами та приклади
Швидка шпаргалка:
| Якщо задача виглядає так... | Використовуйте |
|---|---|
| Треба вибрати одного найкращого виконавця | Routing Agent |
| Є послідовність кроків і важливий порядок | Orchestrator Agent |
| Потрібен policy-check перед результатом | Supervisor Agent |
| Кілька агентів мають дійти одного висновку | Multi-Agent Collaboration |
Приклади:
Routing: "Клієнт просить повернення - відправ у Billing, не в Sales".
Orchestrator: "Підготуй реліз: спочатку changelog, потім QA, потім деплой".
Supervisor: "Перед відправкою листа перевір політики, комплаєнс і заборонені обіцянки".
Multi-Agent Collaboration: "Маркетинг, Legal і Product мають узгодити один фінальний текст акції".
Як комбінувати з іншими патернами
- Routing + Task Decomposition - спочатку задачу ділять на частини, а потім Routing направляє кожну частину потрібному агенту.
- Routing + Orchestrator - Routing обирає виконавця, а Orchestrator координує паралельні задачі і їх залежності.
- Routing + Supervisor - Supervisor перевіряє, чи вибір виконавця відповідає політикам і рівню ризику.
Коротко
Routing Agent:
- Аналізує задачу
- Обирає відповідного агента
- Передає її на виконання
Переваги та Недоліки
Переваги
швидко направляє задачу потрібному агенту
прибирає зайві кроки
покращує час відповіді
легко додавати нові маршрути
Недоліки
помилка маршрутизації веде не туди
правила роутингу треба підтримувати
складні кейси потребують винятків
FAQ
Q: Чи може Router виконувати задачу сам?
A: Ні. Він лише визначає, хто має її виконати.
Q: Чи потрібен Routing, якщо агент лише один?
A: Ні. У такому випадку він додає зайвий крок.
Q: Чи можна змінити маршрут під час виконання?
A: Так. Якщо обраний агент не може виконати задачу або повертає помилку, Router може передати її іншому агенту.
Що далі
Routing дозволяє обрати відповідного агента.
Але що робити, якщо задачі потрібно виконувати паралельно?