Essence du pattern
Agent Routing est un pattern dans lequel un agent choisit quel autre agent ou outil doit exécuter une tâche.
Quand l'utiliser : quand il faut d'abord choisir le meilleur exécutant ou outil pour une tâche précise.
Au lieu de tout exécuter lui-même, il :
- analyse la tâche
- détermine qui peut l'exécuter
- la délègue à l'agent approprié

Problème
Imagine qu'il y ait plusieurs spécialistes dans le système :
UI Agentpour les tâches frontendFinance Agentpour les calculs financiersCode Agentpour les changements techniques
L'utilisateur envoie des requêtes différentes, mais sans étape de routing, elles sont envoyées non pas selon la spécialisation, mais à un exécutant "au hasard".
Le problème n'est pas que les agents sont faibles, mais que le système ne sait pas choisir le bon exécutant de façon stable.
Résultat :
- une requête spécialisée part vers le mauvais agent
- la qualité baisse à cause de la perte de spécialisation
- le temps augmente à cause d'essais supplémentaires "hors domaine"
- le chemin devient imprévisible
Voilà le problème : sans étape de routing contrôlée, même une tâche simple peut être exécutée par le "mauvais" agent et produire un résultat faible.
Solution
Routing ajoute une étape séparée de sélection de l'exécutant avant l'exécution.
Analogie : c'est comme un dispatch dans un centre de service. Le dispatch ne répare pas lui-même, il décide vers quel spécialiste envoyer la demande. C'est exactement ce qui réduit les erreurs et les réaffectations inutiles.
Principe clé : d'abord le bon choix d'exécutant, ensuite la délégation de la tâche.
Le Router ne fait pas le travail lui-même. Son rôle est de contrôler la route :
- Analyse (Analyze) : classifier la requête
- Décision (Decide) : choisir l'agent selon
routing-rules - Délégation (Delegate) : transmettre la tâche à l'exécutant
- Re-routage (Fallback, si nécessaire) : changer d'exécutant en cas de
mismatchou d'erreur
Le schéma ci-dessous montre la route de base : sélection d'un seul exécutant et transmission de la tâche.
Cela donne :
- une meilleure précision grâce à la spécialisation
- moins d'étapes inutiles et une latence plus faible
- une route transparente pour le debug et le contrôle
- un risque plus faible d'erreur de choix d'exécutant
Fonctionne bien si :
- des règles de classification claires existent
- les rôles des agents ne se chevauchent pas de façon chaotique
- une route de secours (fallback) est définie
- l'étape de routing (router) n'est pas contournée directement par l'utilisateur ou la logique du worker
Même si le modèle "veut" déléguer la tâche au premier agent disponible, c'est la routing-policy qui fixe qui doit réellement l'exécuter.
Comment ça fonctionne
Le Router n'exécute pas la tâche lui-même.
Il la délègue seulement à un agent spécialisé, qui exécute la sous-tâche via son propre cycle : Raisonnement (Think) -> Action (Act) -> Observation (Observe).
Description du flow complet : Analyze → Decide → Delegate
Analyse (Analyze)
Le Router identifie le type de tâche, le domaine et la spécialisation nécessaire.
Décision (Decide)
Le système choisit l'exécutant le plus adapté selon routing-policy et la confidence.
Délégation (Delegate)
La tâche est transmise à l'agent sélectionné, et le Router contrôle la route en cas de mismatch/error.
En code, cela ressemble à ça
agent = route(goal) # Le Router classe le goal et choisit un exécutant spécialisé.
result = agent.run(goal) # L'exécution est faite par l'agent sélectionné, pas par le Router.
return result
À quoi cela ressemble pendant l'exécution
Goal: "Combien d'impôts faut-il payer sur des revenus freelance ?"
Analyze: tâche financière
Decide: choisir Finance Agent
Route confidence: 0.92 (finance)
Delegate: le système transmet la tâche à Finance Agent
Observe: Finance Agent renvoie le calcul
Goal: "Change la couleur du bouton sur la landing page"
Analyze: tâche frontend
Decide: choisir UI Agent
Route confidence: 0.89 (ui)
Delegate: le système transmet la tâche à UI Agent
Observe: UI Agent renvoie le composant mis à jour
Le Router choisit uniquement l'exécutant et délègue la tâche.
La qualité du résultat dépend de la justesse de ce choix.
Exemple complet d'agent Routing
Quand c'est adapté - et quand ça ne l'est pas
Adapté
| Situation | Pourquoi ce pattern est adapté | |
|---|---|---|
| ✅ | Les tâches diffèrent par type ou complexité | Le Router choisit un exécutant selon le type de tâche au lieu d'envoyer tout à un seul agent. |
| ✅ | Il existe des agents spécialisés pour des tâches différentes | Le routing permet d'utiliser les points forts de chaque agent. |
| ✅ | La précision d'exécution est importante | Le bon choix d'exécutant réduit les erreurs et les relances. |
Non adapté
| Situation | Pourquoi ce pattern n'est pas adapté | |
|---|---|---|
| ❌ | Toutes les tâches sont du même type | Une étape supplémentaire de sélection de route n'apporte rien si l'exécutant est toujours le même. |
| ❌ | Le système n'a qu'un seul agent | Le routing duplique un appel direct et ne fait que complexifier le pipeline. |
| ❌ | Le routing n'influence pas le résultat | Si la qualité du résultat ne change pas selon le choix d'exécutant, cette couche est inutile. |
Parce que Routing ajoute une étape de traitement supplémentaire. Si les tâches ne diffèrent pas, il ne fait que ralentir l'exécution.
Quand utiliser Routing (vs autres patterns)
Utilisez Routing quand l'essentiel est de bien choisir à qui déléguer la requête.
Test rapide :
- si vous devez "identifier le meilleur exécutant" -> Routing
- si vous devez "faire passer la tâche par des étapes claires" -> Orchestrator Agent
Comparaison avec d'autres patterns et exemples
Aide-mémoire rapide :
| Si la tâche ressemble à ça... | Utilisez |
|---|---|
| Il faut choisir un unique meilleur exécutant | Agent Routing |
| Il y a une séquence d'étapes et l'ordre est important | Orchestrator Agent |
| Un policy-check est nécessaire avant le résultat | Supervisor Agent |
| Plusieurs agents doivent converger vers une seule conclusion | Multi-Agent Collaboration |
Exemples :
Routing : "Le client demande un remboursement - envoyer à Billing, pas à Sales".
Orchestrator : "Prépare la release : d'abord changelog, puis QA, puis déploiement".
Supervisor : "Avant d'envoyer un e-mail, vérifie les politiques, la conformité et les promesses interdites".
Multi-Agent Collaboration : "Marketing, Legal et Product doivent valider un seul texte final de promotion".
Comment combiner avec d'autres patterns
- Routing + Task Decomposition - d'abord la tâche est découpée en parties, puis Routing envoie chaque partie à l'agent approprié.
- Routing + Orchestrator - Routing choisit l'exécutant, et Orchestrator coordonne les tâches parallèles et leurs dépendances.
- Routing + Supervisor - Supervisor vérifie si le choix d'exécutant respecte les politiques et le niveau de risque.
En bref
Agent Routing :
- Analyse la tâche
- Choisit l'agent approprié
- La délègue pour exécution
Avantages et Inconvénients
Avantages
oriente rapidement la tâche vers le bon agent
supprime les étapes inutiles
améliore le temps de réponse
facilite l'ajout de nouvelles routes
Inconvénients
une erreur de routing envoie la tâche au mauvais endroit
les règles de routing doivent être maintenues
les cas complexes demandent des exceptions
FAQ
Q : Le Router peut-il exécuter la tâche lui-même ?
A : Non. Il détermine seulement qui doit l'exécuter.
Q : Faut-il du Routing s'il n'y a qu'un seul agent ?
A : Non. Dans ce cas, cela ajoute une étape inutile.
Q : Peut-on changer la route pendant l'exécution ?
A : Oui. Si l'agent sélectionné ne peut pas exécuter la tâche ou renvoie une erreur, le Router peut la transmettre à un autre agent.
Et ensuite
Routing permet de choisir l'agent approprié.
Mais que faire si les tâches doivent être exécutées en parallèle ?