The Claude Bible
Accueil / Orchestration multi-agents
Niveau: Expert · 11 lecons

Orchestration multi-agents

Fan-out, pipelines, vérification adversariale, jury d'agents. Mettre des flottes d'agents au travail.

Ouvrir le cours interactif212 lecons, quiz, exercices, 3 langues, gratuit.

Fan-out parallèle vs pipeline

Orchestrer plusieurs agents, c'est choisir une topologie. Les deux primitives :

Le piège classique : poser une barrière (parallèle) là où un pipeline suffirait, juste parce que le code semble plus propre. Une barrière n'est justifiée que si l'étape N a besoin du résultat complet de l'étape N-1 (fusion, déduplication, arrêt précoce si zéro). Sinon, pipeline.

Application concrète chez Pierre : ses audits SEO multi-langues (Eskimoz en 4 langues) sont des fan-outs ; un agent par langue, agrégation à la fin. Sa règle de modèle s'applique : Haiku/Sonnet pour les agents de masse, Opus pour la synthèse.

Points cles
  • Parallèle/fan-out : N agents en même temps + barrière, quand on veut tout ensemble
  • Pipeline : chaque élément traverse les étapes sans barrière (défaut pour le multi-étapes)
  • Barrière justifiée seulement si l'étape N a besoin du résultat complet de N-1
  • Agents de masse en Haiku/Sonnet, synthèse en Opus

Vérification adversariale et panels de juges

Un agent qui détecte des bugs ou des résultats produit des sorties plausibles mais fausses (hallucination, encore). Le correctif d'orchestration : faire vérifier chaque résultat par d'autres agents avant de le conserver.

Patterns de qualité :

Principe directeur : la confiance naît de perspectives indépendantes qui se contredisent, non d'un agent seul et sûr de lui. C'est exactement l'esprit du réflexe de Pierre "reproduire via Playwright avant de corriger" : vérifier avant de croire, appliqué à l'échelle des agents.

Points cles
  • Vérifier chaque résultat avec d'autres agents avant de le conserver
  • Adversarial : N sceptiques réfutent ; conserver si la majorité échoue à réfuter
  • Multi-perspectives : angles différents ; panel de juges : N solutions notées
  • Boucle jusqu'au tarissement pour les recherches de taille inconnue ; vérifier avant de croire

Workflows : orchestration déterministe

Quand l'orchestration devient complexe (boucles, conditions, fan-out, budgets), on passe d'un agent improvisant à un workflow : un script qui orchestre les sous-agents de façon déterministe. Le flux de contrôle (qui s'exécute, quand, en parallèle ou en série) est codé, pas décidé par le modèle.

Blocs de construction typiques d'un moteur de workflow :

L'avantage par rapport à un seul grand agent : la structure (décomposer et couvrir en parallèle), la confiance (vérifier avant de conclure) et l'échelle (migrations ou audits qu'un contexte unique ne pourrait pas contenir). Vous restez dans la boucle : vous lisez chaque résultat avant de décider l'étape suivante. C'est le niveau le plus avancé, à réserver aux tâches qui le justifient vraiment, car il consomme beaucoup de tokens.

Points cles
  • Workflow = script qui orchestre les sous-agents de façon déterministe
  • Blocs : agent(schema), pipeline, parallel, boucles until-count/dry/budget
  • Pour : structure, confiance (vérifier), échelle (migrations/audits massifs)
  • Très consommateur de tokens : à réserver aux tâches qui le justifient

Barriere ou sans barriere

Dans un pipeline multi-agents (une chaîne d'agents IA où chaque agent effectue une tâche précise), vous devez décider à chaque transfert : l'étape suivante doit-elle attendre tous les résultats précédents, ou peut-elle démarrer dès qu'un seul résultat est disponible ? Cette décision s'appelle placer une barrière (ou non).

Une barrière est un point de synchronisation. Aucun agent en aval de la barrière ne démarre tant que tous les agents en amont n'ont pas terminé. C'est le bon choix quand l'étape suivante a réellement besoin d'une vue complète avant de pouvoir agir. Un fonctionnement sans barrière (également appelé streaming ou fan-in sans attente) laisse les résultats s'écouler un par un au fur et à mesure de leur arrivée, de sorte que le travail en aval commence immédiatement.

Posez-vous une seule question : "L'étape suivante peut-elle produire un résultat correct avec seulement des données partielles ?" Si oui, supprimez la barrière. Si non, ajoutez-en une. Une erreur dans un sens comme dans l'autre a un coût : une barrière inutile sérialise ce qui pourrait s'exécuter en parallèle, gaspillant du temps ; une barrière manquante corrompt les résultats car les agents en aval agissent sur des informations incomplètes.

Points cles
  • Une barrière retient tous les agents en aval jusqu'à ce que chaque agent en amont ait terminé.
  • Supprimez la barrière quand chaque résultat est utilisable indépendamment.
  • Les barrières inutiles sérialisent le travail parallèle et gaspillent du temps.
  • Les barrières de quorum (attendre N sur M) constituent un bon compromis.

Boucler jusqu'à épuisement

Certaines tâches ont une frontière inconnue : vous ne savez pas combien d'éléments existent avant d'avoir fini de les collecter. La pagination, les analyses récursives de répertoires et le parcours itératif du web partagent cette structure. Le bon patron est une boucle à sec : répéter un cycle de recherche ou de récupération, collecter les nouveaux résultats, et s'arrêter uniquement lorsqu'un cycle ne renvoie rien de nouveau.

Dans un contexte multi-agents (où plusieurs instances de Claude se transmettent du travail), l'agent orchestrateur exécute la boucle et confie chaque lot aux agents travailleurs. L'orchestrateur gère un ensemble déjà vu, une collection dédupliquée de tout ce qui a déjà été traité, et compare chaque nouveau cycle à cet ensemble. Lorsque l'ensemble cesse de croître, la boucle se termine.

Claude Code prend en charge ce patron grâce aux commandes shell enchaînées et aux appels de sous-agents. Une boucle minimale dans une tâche Claude Code ressemble à ceci :

  1. Exécuter une recherche ou un appel API et capturer la sortie.
  2. Comparer la sortie à l'ensemble déjà vu.
  3. Si la différence est non vide, ajouter les nouveaux éléments à l'ensemble déjà vu, envoyer le travail, puis revenir à l'étape 1.
  4. Si la différence est vide, s'arrêter et faire un compte rendu.

Deux protections sont obligatoires : un plafond de cycles (par exemple, 50 itérations) pour éviter les boucles infinies causées par des bugs ou des comportements imprévus de l'API, et des travailleurs idempotents (des travailleurs qui produisent le même résultat s'ils traitent accidentellement deux fois le même élément). Sans ces protections, une boucle à sec peut tourner indéfiniment ou corrompre les résultats.

Points cles
  • Boucle à sec : répéter jusqu'à ce qu'un cycle ne renvoie rien de nouveau
  • Ensemble déjà vu : enregistrement dédupliqué des éléments déjà traités
  • L'orchestrateur distribue le travail ; les travailleurs sont idempotents
  • Toujours plafonner le nombre de cycles pour éviter les boucles infinies

Worktrees pour les agents parallèles

Lorsque vous exécutez plusieurs agents Claude Code simultanément, ils opèrent tous par défaut sur les mêmes fichiers du dépôt. Si deux agents modifient le même fichier en même temps, l'un écrasera le travail de l'autre. Les Git worktrees résolvent ce problème : un worktree est un répertoire de travail supplémentaire lié au même dépôt, extrait sur sa propre branche, de sorte que chaque agent dispose de fichiers isolés sans aucun chevauchement.

Vous créez un worktree avec git worktree add. Chaque worktree possède sa propre branche et sa propre copie des fichiers de travail sur le disque. Les agents s'exécutent dans des répertoires séparés et ne touchent jamais aux fichiers des autres. Une fois leur travail terminé, vous fusionnez les branches normalement.

Claude Code prend en charge ce schéma directement. La commande /worktrees (ainsi que le flag --worktree lors du lancement d'un sous-agent) indique à un agent dans quel chemin de worktree il doit opérer. L'agent orchestrateur crée les worktrees, en attribue un à chaque sous-agent, puis attend que tous aient terminé avant de fusionner.

Points cles
  • git worktree add crée un répertoire de travail isolé sur une branche séparée
  • chaque agent parallèle est pointé vers un worktree pour que les fichiers n'entrent jamais en collision
  • l'orchestrateur fusionne les branches une fois que tous les agents ont terminé
  • git worktree remove effectue le nettoyage une fois le travail accompli

Dispatcher des agents en parallèle

Quand une tâche peut être découpée en morceaux indépendants, les exécuter l'un après l'autre fait perdre du temps. Le fan-out consiste à lancer plusieurs agents (ou sous-processus) au même moment, chacun traitant une portion distincte du travail, puis à rassembler tous les résultats une fois qu'ils ont terminé. Claude Code supporte ce schéma grâce à l'outil Agent, qui permet à un agent orchestrateur de créer des agents enfants.

La règle essentielle est l'indépendance : les tâches que l'on distribue en fan-out ne doivent pas dépendre du résultat des autres. Si la tâche B a besoin que la tâche A soit terminée en premier, ces deux tâches doivent rester séquentielles. Les bons candidats au fan-out incluent : l'audit de fichiers distincts, la traduction d'un même contenu dans plusieurs langues, l'exécution d'un même prompt sur des jeux de données différents, ou la récupération de plusieurs URLs en parallèle.

Un workflow fan-out typique comporte trois étapes :

  1. Décomposer : l'orchestrateur divise l'objectif en N sous-tâches indépendantes.
  2. Dispatcher : il appelle l'outil Agent N fois, un appel par sous-tâche, sans attendre entre les appels.
  3. Collecter : une fois que tous les agents ont répondu, l'orchestrateur fusionne ou résume les résultats.

Dans Claude Code, il est aussi possible de faire un fan-out au niveau du shell en utilisant --print (mode non interactif) et des processus en arrière-plan, puis de réunir les sorties. Cela fonctionne bien pour les tâches simples où vous contrôlez directement l'environnement shell.

Points cles
  • Fan-out : lancer des sous-tâches indépendantes simultanément plutôt que séquentiellement.
  • Orchestrateur : l'agent parent qui dispatche les agents enfants et collecte leurs résultats.
  • Vérification d'indépendance : le fan-out ne fonctionne que si les sous-tâches ne partagent aucune dépendance.
  • Phase de collecte : fusionner ou résumer les sorties de tous les agents après leur complétion.

Maîtriser le coût d'un fan-out à grande échelle

Un fan-out se produit quand un orchestrateur (l'agent coordinateur) lance plusieurs sous-agents en parallèle pour traiter différentes parties d'un problème simultanément. Chaque sous-agent consomme des tokens, donc le coût total d'un fan-out correspond à la somme des tokens en entrée et en sortie de chaque agent. Sans anticipation, les coûts s'envolent rapidement.

Le premier levier est la sélection du modèle par tâche. Chaque sous-agent n'a pas besoin du modèle le plus puissant. Réservez claude-opus-4-8 aux tâches qui exigent un raisonnement approfondi, comme les décisions d'architecture ou les analyses ambiguës. Utilisez claude-sonnet-4-6 pour les travaux de complexité moyenne, tels que la génération de code, et claude-haiku-4-5 pour les tâches simples et volumineuses comme la classification, la mise en forme ou l'extraction. Ce seul ajustement peut réduire le coût d'une exécution de 80 % ou plus.

Le deuxième levier est le réduction du contexte. L'entrée de chaque agent est facturée en totalité. Ne transmettez que la portion de contexte dont cet agent a réellement besoin : un fichier pertinent, un court résumé ou un objet structuré plutôt que l'intégralité de l'historique de conversation. Le prompt caching (réutilisation d'un préfixe commun entre agents) réduit davantage les frais liés au contexte répété lorsque plusieurs agents partagent un grand prompt système ou un document de référence.

Contrôles budgétaires pratiques à appliquer avant de lancer une flotte d'agents :

Points cles
  • Attribuez les modèles selon la complexité de la tâche, pas par habitude
  • Réduisez le contexte de chaque agent au strict nécessaire
  • Limitez max_tokens et le nombre d'agents avant le lancement
  • Utilisez le prompt caching pour les préfixes partagés entre agents

Schémas pour des données d'agent propres

Dans un pipeline multi-agent (une chaîne de modèles IA qui se transmettent des résultats), la sortie d'un agent devient l'entrée du suivant. Si cette sortie est du texte libre, l'agent récepteur doit deviner la structure, ce qui provoque des erreurs silencieuses. La solution est la sortie structurée : forcer le modèle à retourner les données dans un format strict et lisible par les machines, comme JSON.

Claude prend en charge la sortie structurée via l'utilisation d'outils. Vous définissez un JSON Schema (une description formelle des champs, des types et des propriétés requises attendus) et vous le passez comme définition d'outil. Claude remplit alors ce schéma au lieu d'écrire du texte. Le résultat est un objet JSON que votre code peut analyser et valider sans aucune manipulation de chaîne de caractères.

Principales raisons d'imposer des schémas dans les chaînes d'agents :

Dans Claude Code, l'API Claude (l'interface HTTP que votre agent appelle par programmation) vous permet de passer un tableau tools avec un outil dont l'input_schema définit exactement ce que vous voulez recevoir. Définir tool_choice à {"type":"tool","name":"votre_outil"} force Claude à appeler cet outil à chaque fois, garantissant une sortie structurée pour chaque requête.

Points cles
  • La sortie structurée élimine l'ambiguïté entre les agents
  • JSON Schema définit exactement les champs et les types que Claude doit retourner
  • tool_choice force un appel d'outil spécifique sur chaque requête
  • Validez le schéma immédiatement pour détecter les erreurs avant qu'elles ne se propagent

Reprendre et mettre en cache un workflow

Un workflow multi-agents (un pipeline où plusieurs sous-agents IA traitent différentes tâches en séquence) peut être coûteux à relancer entièrement à chaque modification d'une étape. La solution est la reprise partielle : relancer uniquement les étapes dont les entrées ont changé, et réutiliser les sorties de tout le reste.

Claude Code prend en charge cela via deux mécanismes complémentaires. La mise en cache des prompts (une fonctionnalité de l'API Anthropic) stocke le calcul au niveau des tokens pour un prompt système long et stable, ou pour un bloc de contexte, afin que le modèle évite de le retraiter lors de l'appel suivant. Cela réduit à la fois la latence et le coût. Les accès au cache sont facturés à environ 10 % du tarif normal des tokens d'entrée. Le cache est indexé par le texte exact du préfixe : même un seul caractère modifié dans le bloc mis en cache l'invalide.

Au niveau du workflow, vous contrôlez la reprise via des points de contrôle (checkpoints) : les sorties de chaque étape d'agent sont sauvegardées sur disque ou dans un store. Quand vous relancez le pipeline, chaque étape vérifie si son checkpoint est toujours valide (entrées inchangées) avant d'appeler le modèle. Les schémas courants incluent :

Dans Claude Code, vous pouvez écrire cette logique dans un orchestrateur shell ou Node qui appelle claude avec l'indicateur --print (non interactif, affiche la réponse et quitte) et écrit chaque sortie dans un fichier. Au lancement suivant, lisez d'abord le fichier et ignorez complètement l'appel claude si le checkpoint est frais.

Points cles
  • La mise en cache des prompts réduit les coûts en réutilisant le contexte stable entre les appels API
  • Les checkpoints sauvegardent la sortie de chaque étape pour que seules les étapes modifiées soient relancées
  • Hacher ou horodater les entrées permet de décider si un checkpoint est encore valide
  • Utiliser --print pour les appels claude non interactifs dans les scripts d'orchestration

Le critique de complétude

Dans un pipeline multi-agents (une chaîne d'agents IA dont chacun réalise une tâche précise), le dernier goulot d'étranglement est rarement du contenu erroné. C'est du contenu manquant. Un critique de complétude est un agent final dont l'unique rôle est de se demander : "Qu'est-ce qui devrait être ici et qui ne l'est pas ?" Il passe en revue la sortie de tous les agents précédents par rapport au cahier des charges initial et signale les lacunes avant que le résultat n'atteigne l'utilisateur.

Cet agent est délibérément ciblé. Il ne réécrit pas, n'améliore pas le ton et ne vérifie pas les faits. Il compare uniquement la portée du cahier des charges à la portée de la sortie et renvoie une liste structurée d'omissions. Ce rôle restreint le rend rapide, économique (un modèle Haiku suffit généralement), et facile à tester.

Exemples courants de ce qu'un critique de complétude détecte :

Le critique renvoie ses conclusions dans le pipeline sous forme de diff structuré (une liste de différences lisible par une machine). Un agent de second passage, ou l'orchestrateur lui-même (l'agent qui coordonne tous les autres agents), décide ensuite quelles lacunes combler, lesquelles accepter et lesquelles remonter à l'humain.

Points cles
  • Critique de complétude : agent qui détecte le contenu manquant, pas les erreurs
  • Diff de portée : comparer ce que le cahier des charges demandait et ce qui a été livré
  • Un rôle restreint rend le critique rapide et testable
  • La sortie est une liste structurée renvoyée à l'orchestrateur
Travailler avec moi

Maitrisez Claude, Claude Code et les LLM, de votre premier prompt a l orchestration multi-agents.

Ce cours vous plait ? Je l ai concu de bout en bout. Besoin d une web app, d une app mobile, d une automatisation IA ou de SEO/GEO ? Parlons-en.

Me contacter sur LinkedInVoir un site que j ai realise