Single-agent vs multi-agent avec Claude : quand utiliser orchestrator-worker

Huitième article de la série « Production Engineering, Evals & Security avec Claude ».

Ajouter plusieurs agents à une application Claude peut réduire le temps d’exécution de certaines tâches.

Cela peut aussi multiplier fortement le coût, la complexité et les points de défaillance sans améliorer réellement la qualité.

Le module Production Engineering, Evals & Security présente le pattern orchestrator-worker comme un tradeoff délibéré : il est pertinent lorsque le travail peut réellement être découpé en sous-tâches indépendantes exécutables en parallèle. Il est beaucoup moins adapté lorsque chaque étape dépend fortement de la précédente.


Le principe du pattern orchestrator-worker

L’architecture comporte généralement trois phases :

1. Planning
2. Parallel fan-out
3. Synthesis

Un agent principal, le lead agent, décompose la tâche.

Plusieurs workers exécutent ensuite les sous-tâches en parallèle.

Enfin, le lead compile leurs résultats.

                  User task
                      │
                      ↓
                 Lead agent
                   PLAN
                      │
          ┌───────────┼───────────┐
          ↓           ↓           ↓
       Worker 1    Worker 2    Worker 3
          │           │           │
          ↓           ↓           ↓
       Result 1    Result 2    Result 3
          └───────────┼───────────┘
                      ↓
                 Lead agent
                 SYNTHESIS
                      │
                      ↓
                 Final answer

Le document donne une structure conceptuelle proche de :

async def orchestrate(task):
    plan = await lead.plan(task)

    results = await gather(*[
        worker.run(subtask)
        for subtask in plan.subtasks
    ])

    return await lead.synthesize(results)

Chaque worker dispose de son propre context window et génère sa propre sortie.


Pourquoi utiliser plusieurs agents ?

La principale raison est le parallélisme.

Supposons une recherche nécessitant l’étude de cinq sources complètement indépendantes.

Avec un agent unique :

source A
   ↓
source B
   ↓
source C
   ↓
source D
   ↓
source E
   ↓
synthesis

Le travail est essentiellement séquentiel.

Avec plusieurs workers :

       ┌─ source A
       ├─ source B
lead ──┼─ source C
       ├─ source D
       └─ source E
              ↓
          synthesis

Les recherches peuvent être effectuées simultanément.

Le module donne précisément comme bon candidat une recherche large portant sur plusieurs sources séparées.


L’analogie des chercheurs

Le document propose une analogie utile.

Imaginez devoir réaliser une vaste enquête documentaire.

Avec une seule personne :

1 researcher
→ reads everything sequentially

Avec cinq :

5 researchers
→ explore separate areas simultaneously

Vous pouvez terminer plus rapidement.

Mais vous payez aussi cinq personnes.

C’est exactement le tradeoff du multi-agent :

Le parallélisme achète du temps et de la capacité d’exploration en échange d’une consommation supplémentaire de ressources.


Chaque subagent possède son propre coût

C’est le point central.

Un worker ne partage pas gratuitement le raisonnement du lead.

Chaque subagent consomme :

its own input tokens
+
its own output tokens
+
its own context

Puis le lead doit encore lire les résultats et effectuer la synthèse.

Architecture de coût :

Lead planning
+
Worker 1 context/output
+
Worker 2 context/output
+
Worker 3 context/output
+
Worker 4 context/output
+
Lead synthesis

Le fan-out multiplie donc rapidement les tokens consommés.


Le fameux « 15× » : comment l’interpréter correctement

Le module cite un résultat provenant des travaux de recherche d’Anthropic : dans un système de recherche multi-agent étudié par Anthropic, l’architecture utilisait environ 15 fois plus de tokens qu’une interaction chat normale.

Important :

15×
≠
règle universelle du multi-agent

Ce n’est pas :

« Tout système orchestrator-worker coûte exactement quinze fois plus cher. »

Il faut comprendre :

Anthropic a observé cet ordre de grandeur dans le système étudié.

Le multiplicateur réel dépend notamment :

number of workers
context size
task complexity
tool use
worker outputs
synthesis size

Le chiffre sert surtout à rappeler que le fan-out peut coûter très cher.


Exemple de coût

Le document donne un ordre de grandeur concret.

Supposons qu’un agent unique traite une recherche avec environ :

10 000 tokens

Une architecture :

1 lead
+
4 workers
+
final synthesis

peut, dans le cas de référence cité, approcher :

150 000 tokens

si l’on applique l’ordre de grandeur de 15× rapporté dans cette étude.

Encore une fois, ce n’est pas une formule générale.

Mais cela illustre le risque :

a little latency saved
+
almost no quality gain
+
massive token increase

Quand ce coût est-il justifié ?

Lorsque les workers accomplissent réellement du travail indépendant.

Exemple :

« Analyse cinq marchés régionaux indépendamment puis compare-les. »

On peut découper :

Worker 1 → Europe
Worker 2 → North America
Worker 3 → Asia
Worker 4 → Africa
Worker 5 → South America

Aucun worker n’a besoin d’attendre la réponse des autres pour commencer.

C’est donc un bon candidat.


Le test fondamental : les sous-tâches peuvent-elles être exécutées indépendamment ?

Avant d’utiliser orchestrator-worker, posez cette question :

Chaque worker peut-il faire son travail sans avoir besoin du résultat des autres workers ?

Si oui :

parallelism may help

Si non :

single-agent is probably better

C’est probablement le critère le plus important à retenir.


Mauvais candidat : tâche fortement séquentielle

Supposons une refactorisation de code :

1. comprendre l'architecture
2. modifier le modèle de données
3. adapter les appels
4. modifier les tests
5. corriger les erreurs

L’étape 3 dépend de l’étape 2.

L’étape 4 dépend du nouveau code.

L’étape 5 dépend de l’exécution des tests.

On a donc :

A
↓
B
↓
C
↓
D
↓
E

et non :

A B C D E
↓ ↓ ↓ ↓ ↓
parallel

Le document cite justement le coding tightly coupled comme cas où le multi-agent est moins efficace.


Pourquoi le multi-agent marche mal sur une tâche séquentielle

Imaginez quatre workers :

Worker A → architecture
Worker B → database changes
Worker C → API changes
Worker D → tests

Mais :

Worker B
needs A

Worker C
needs B

Worker D
needs C

Vous n’avez créé aucun parallélisme réel.

Vous avez seulement créé :

more agents
+
more contexts
+
more coordination
+
more tokens

Le document décrit précisément un cas où le coût avait fortement augmenté alors que la latence n’avait diminué que légèrement et que la qualité avait peu évolué.


Le fan-out n’est donc pas un objectif en soi

Un anti-pattern fréquent serait :

task is slow
→ add agents

Ce raisonnement est incomplet.

La vraie question est :

task is slow
      ↓
can it be decomposed
into independent work?

Si oui :

parallel workers

peuvent être utiles.

Sinon :

optimize single agent

est souvent préférable.


Single-agent reste le choix par défaut

Le document formule une recommandation forte :

Un single agent avec un bon contexte gère la plupart des tâches pour une fraction du coût.

C’est cohérent avec un principe général d’architecture :

use the simplest architecture
that meets the requirements

Il ne faut donc pas démarrer avec :

multi-agent

simplement parce que l’architecture paraît plus sophistiquée.

On commence par :

single agent

puis on mesure.


Workflow déterministe, single-agent ou multi-agent ?

Il faut distinguer trois architectures.

1. Workflow déterministe

L’application connaît déjà les étapes.

parse
→ retrieve
→ call model
→ validate
→ save

Le LLM n’a pas besoin de décider quoi faire ensuite.

C’est le choix le plus simple lorsque le processus est connu.


2. Single-agent

Claude décide dynamiquement des actions :

observe
→ decide
→ tool
→ observe
→ decide

C’est utile lorsque le chemin de résolution ne peut pas être totalement prédéfini.


3. Multi-agent

Un agent distribue le travail entre plusieurs agents.

lead
→ decompose
→ parallel workers
→ aggregate

C’est justifié lorsque :

dynamic reasoning
+
large task
+
independent subtasks

sont réellement nécessaires.


Arbre de décision

Can the workflow be predefined?
          │
     ┌────┴─────┐
    Yes         No
     │           │
     ↓           ↓
Deterministic   Need agentic
 workflow       decisions?
                    │
                    ↓
        Does work split into
        independent parallel parts?
              ┌─────┴─────┐
             No           Yes
              │             │
              ↓             ↓
        Single agent   Orchestrator-worker

Pour l’examen, cette logique est plus importante que de mémoriser un pattern.


Le coût de coordination

Le multi-agent n’ajoute pas uniquement le coût des workers.

Il ajoute également :

planning
+
dispatch
+
waiting
+
synthesis

Le lead doit :

  1. comprendre la tâche ;
  2. créer le plan ;
  3. distribuer les sous-tâches ;
  4. attendre les résultats ;
  5. résoudre éventuellement les contradictions ;
  6. compiler la réponse finale.

Le document note donc que des workers parallèles peuvent réduire le wall-clock time sur des travaux indépendants, tout en ajoutant une coordination latency pour la planification et la compilation.


Plus d’agents = plus de points de défaillance

Le coût n’est pas le seul problème.

Supposons :

Lead
+
5 workers

Il existe maintenant plusieurs appels susceptibles de rencontrer :

429
529
timeout
tool failure
invalid result

Le document insiste sur le fait que chaque subagent nécessite sa propre discipline de failure handling.

Chaque worker doit gérer :

retriable vs terminal
backoff
retry budget
fallback

Le multi-agent ne remplace pas la résilience.

Il multiplie les endroits où elle doit être appliquée.


Exemple : un worker bloque toute la synthèse

Supposons :

Worker 1 → success
Worker 2 → success
Worker 3 → rate limited
Worker 4 → success

Si Worker 3 n’a pas de bonne politique de retry :

Lead
→ waits for worker 3
→ synthesis blocked

Un seul worker peut donc ralentir l’ensemble du workflow.

Le document utilise précisément ce type de scénario pour rappeler que chaque subagent doit appliquer les mêmes stratégies retry/backoff/fallback qu’un agent unique.


Il faut instrumenter chaque agent

Le tracing doit permettre de voir :

request
│
├── lead planning
│
├── worker 1
│    ├── tokens
│    ├── latency
│    └── status
│
├── worker 2
│    ├── tokens
│    ├── latency
│    └── status
│
├── worker 3
│    └── ...
│
└── lead synthesis

Sinon vous voyez seulement :

request = expensive

sans savoir pourquoi.

Le module recommande de mesurer au minimum :

token cost
latency
error rate

par appel, puis de les agréger par requête et par flow.


Le worker le plus lent peut fixer la latence finale

Supposons :

Worker A = 1 s
Worker B = 1.2 s
Worker C = 6 s
Worker D = 900 ms

Si la synthèse nécessite tous les résultats :

parallel phase
≈ 6 seconds

et non :

≈ 1 second

C’est le problème classique du straggler.

Le parallélisme réduit la somme des durées, mais la latence dépend souvent du worker critique le plus lent, plus le temps de coordination.


Le lead n’a pas forcément besoin d’être le même modèle que les workers

Le document propose un levier d’optimisation intéressant :

more capable lead
+
cheaper workers

Pourquoi ?

Le lead doit généralement :

decompose correctly
coordinate
synthesize
resolve conflicts

Les workers peuvent parfois effectuer des tâches plus ciblées.

Architecture conceptuelle :

          capable lead
               │
      ┌────────┼────────┐
      ↓        ↓        ↓
  cheaper   cheaper   cheaper
  worker    worker    worker
      └────────┼────────┘
               ↓
          capable lead

Cela peut réduire le coût par rapport à l’utilisation du modèle le plus coûteux sur chaque worker.


Mais il faut toujours valider cette optimisation avec les evals

Remplacer les workers par un modèle moins coûteux n’est acceptable que si :

quality bar still holds

Le workflow devient :

current architecture
      ↓
baseline eval
      ↓
cheaper workers
      ↓
same eval
      ↓
quality acceptable?

Sinon, l’économie n’est pas valide.


Un exemple de bon orchestrator-worker

Question :

« Analyse les stratégies d’IA générative de dix entreprises différentes et identifie les tendances communes. »

Découpage possible :

Worker 1 → companies 1–2
Worker 2 → companies 3–4
Worker 3 → companies 5–6
Worker 4 → companies 7–8
Worker 5 → companies 9–10

Chaque worker peut travailler indépendamment.

Le lead synthétise ensuite :

common patterns
differences
recommendations

Ici, le fan-out est naturel.


Exemple de mauvais orchestrator-worker

Question :

« Corrige ce bug complexe dans un repository, adapte l’architecture, modifie les tests et vérifie que tout fonctionne. »

Le travail est probablement :

explore
→ understand
→ modify
→ test
→ inspect failure
→ modify again

Les étapes sont fortement liées.

Une architecture :

Worker 1 → architecture
Worker 2 → code
Worker 3 → tests

peut créer des incohérences car les workers raisonnent sur des états différents du code.

Le document recommande dans ce type de tâche un single agent avec un bon contexte plutôt qu’un fan-out artificiel.


Multi-agent et context windows

Chaque worker possède son propre contexte.

Cela offre un avantage :

Worker A
→ only needs sources A

Worker B
→ only needs sources B

Le contexte peut être spécialisé.

Mais cela implique également une duplication.

Par exemple, si chaque worker reçoit :

system prompt
tools
task description
shared background

ces tokens peuvent être consommés plusieurs fois.

Ainsi :

5 workers

ne signifie pas seulement cinq sorties.

Cela signifie plusieurs context windows distinctes à alimenter.

C’est une des raisons principales du multiplicateur de tokens décrit dans le document.


Limiter ce que reçoit chaque worker

Une conséquence logique du pattern présenté dans le cours est de ne transmettre à chaque worker que ce dont il a besoin.

Mauvais :

Worker 1
→ entire 200-page corpus

Worker 2
→ same entire corpus

Worker 3
→ same entire corpus

Meilleur :

Worker 1
→ relevant slice A

Worker 2
→ relevant slice B

Worker 3
→ relevant slice C

Le document source ne présente pas cette formulation comme une règle séparée, mais elle découle directement de son observation selon laquelle chaque worker paie les tokens de son propre contexte.


Ne pas utiliser un multi-agent pour un simple lookup

Question :

« Quel est le délai de remboursement dans cette documentation ? »

Mauvaise architecture :

Lead
├── Worker 1 search docs
├── Worker 2 search docs
├── Worker 3 search docs
└── Worker 4 search docs

La tâche nécessite probablement :

fetch once
→ answer

Le module oppose précisément :

single-fact lookup
→ single_agent + fetch_once

à :

broad research
→ orchestrator_worker

Ne pas confondre agentic search et multi-agent

Les deux ne sont pas synonymes.

Agentic search

Un seul agent peut :

search
→ read
→ refine query
→ search again

Il est agentique parce qu’il décide dynamiquement des prochaines recherches.

Multi-agent

Plusieurs agents travaillent :

worker 1
worker 2
worker 3

potentiellement en parallèle.

Donc :

agentic
≠
multi-agent

Une recherche complexe peut être :

single-agent + iterative search

sans orchestrator-worker.


La reliability floor s’applique aussi au multi-agent

Le document introduit un principe important :

Définir d’abord le niveau minimal acceptable de fiabilité, puis optimiser le coût sans passer sous cette limite.

Supposons :

latency ceiling = 4 s
retry budget = 3
eval baseline = X

Votre optimisation multi-agent doit respecter ces contraintes.

Si réduire les workers ou utiliser un modèle moins cher fait chuter l’eval sous le baseline :

optimization rejected

Le coût n’est donc jamais le seul critère.


Une architecture multi-agent doit gagner son surcoût

La comparaison doit porter sur :

quality
latency
cost
reliability

Par exemple :

ArchitectureQualityLatencyTokens
Single-agent8.712 s10k
Multi-agent8.89 s80k

Ici, le gain est faible.

Le multi-agent est difficile à justifier.

Autre cas :

ArchitectureQualityLatencyTokens
Single-agent6.940 s20k
Multi-agent9.112 s150k

Selon la valeur métier de la tâche, le surcoût peut cette fois être acceptable.

Les chiffres sont illustratifs ; le principe, lui, est celui du cours : mesurer le tradeoff plutôt que supposer que plusieurs agents sont meilleurs.


Architecture minimale avant multi-agent

Une démarche raisonnable est :

1. deterministic workflow if sufficient
          ↓
2. single agent if dynamic reasoning needed
          ↓
3. measure quality/latency
          ↓
4. identify independent bottlenecks
          ↓
5. introduce parallel workers only there

Cette progression limite la complexité inutile.


Tableau de décision

TâcheArchitecture
Lookup simple dans un corpus stableSingle-agent / fetch_once
Workflow entièrement connuWorkflow déterministe
Recherche itérativeSingle-agent avec agentic search
Recherche large sur sources indépendantesOrchestrator-worker
Refactorisation fortement dépendanteSingle-agent
Plusieurs analyses indépendantesOrchestrator-worker
User-facing réponse rapide simpleSingle-agent + streaming
Gros job offline répétitifSingle-agent + Batch/cache

Ce mapping reprend directement les scénarios du module pour distinguer les leviers appropriés.


Ce qu’il faut retenir pour la certification

1. Pattern orchestrator-worker

lead plans
→ workers execute independently
→ lead synthesizes

2. Son avantage principal

parallel exploration

sur des sous-tâches réellement indépendantes.


3. Son coût principal

Chaque worker possède :

own context
+
own input tokens
+
own output tokens

Le coût total augmente donc fortement avec le fan-out.


4. Le « 15× » n’est pas une constante universelle

C’est un ordre de grandeur rapporté pour un système multi-agent de recherche Anthropic spécifique.

Pour l’examen :

Ne concluez jamais que « multi-agent = exactement 15× ».

Retenez plutôt :

multi-agent
→ potentially large token multiplier

5. Bon candidat

independent subtasks
+
parallel exploration

Exemple :

research across independent sources

6. Mauvais candidat

tightly coupled
+
sequential dependencies

Exemple cité :

coding

7. Chaque worker nécessite sa propre résilience

retry
backoff
fallback
error handling

Le multi-agent multiplie aussi les failure points.


8. Modèles différents possibles

Le document suggère :

more capable lead
+
cheaper workers

comme levier possible de coût, à condition que les evals valident la qualité.


Pièges d’examen

Scénario : une recherche nécessite l’analyse parallèle de 20 sources indépendantes.

Orchestrator-worker peut être approprié.


Scénario : une tâche de coding contient des étapes où chaque modification dépend du résultat de la précédente.

→ Préférer un single-agent avec bon contexte.


Scénario : le système est lent, donc vous ajoutez cinq agents.

→ Mauvais raisonnement si vous n’avez pas établi que les sous-tâches sont parallélisables.


Scénario : les workers sont exécutés en parallèle mais chacun reçoit le même contexte volumineux.

→ Le coût en tokens peut fortement augmenter car chaque worker possède son propre contexte.


Scénario : quatre workers réussissent mais un worker reste bloqué sur un 429.

→ Le workflow global peut être bloqué. Chaque worker nécessite son propre retry/backoff/fallback.


Scénario : un single-agent obtient la même qualité qu’un multi-agent avec un coût bien inférieur.

→ Garder le single-agent.


Scénario : une question nécessite une seule information dans un corpus stable.

fetch_once, pas orchestrator-worker.


Scénario : vous utilisez un lead puissant et des workers moins coûteux.

→ Architecture potentiellement pertinente pour réduire le coût, mais elle doit être validée par les evals.


À retenir en une phrase

Utilisez orchestrator-worker uniquement lorsque la tâche se décompose réellement en sous-tâches indépendantes qui bénéficient du parallélisme ; sinon, vous payez le coût du fan-out, multipliez les failure points et la consommation de tokens sans obtenir de gain proportionnel.

Le phare info – Média indépendant & critique
Sélectionne, organise, contextualise et partage des contenus pertinents autour d’un thème ou d’une problématique, dans une logique de veille, de transmission et de mise en sens.
Pour cet article, l’intelligence artificielle a été utilisée comme un outil d’aide à l’exploration, à la structuration et à la rédaction. Elle permet de confronter plusieurs angles, de repérer certains biais humains possibles et de faire émerger des points de vigilance. Le curateur humain observe aussi les biais possibles de l’IA, vérifie les éléments essentiels, nuance l’analyse, corrige les formulations fragiles et assume la publication.

Articles liés

Fiche de révision certification — Accelerators & IP Contribution

Cette fiche résume les notions essentielles du module Accelerators & IP Contribution. Le fil conducteur est simple : Un build Claude n’est pas terminé lorsqu’il fonctionne....

Étude de cas : corriger un accelerator Claude mal packagé, mal versionné et mal sécurisé

Un système Claude peut fonctionner parfaitement en démonstration et pourtant être impropre à la production. Le cas cumulatif du module illustre précisément cette situation. L’application : s’exécute...

Applications Claude multi-composants : trust boundaries, least privilege et sécurité

Une application Claude moderne n’est souvent pas constituée d’un seul appel API. Elle peut combiner : une API applicative ; Claude ; un agent ; Claude Code ; un MCP...

Comparer les plateformes Claude : latency, compliance, data residency et total cost

Lorsque plusieurs plateformes permettent d’exécuter Claude, comment choisir ? Une comparaison superficielle pourrait se limiter à : la plateforme la moins chère ; celle que l’équipe connaît...

Model versioning avec Claude : pin what ships, eval gates et rollback

Changer de modèle dans une application Claude peut sembler être une modification minime : model = "new-model" Pourtant, en production, ce changement peut modifier : la qualité...

Le sentier du savoir

De la curiosité à la transmission, explorez les étapes qui permettent de transformer l’information en compréhension durable.

Étape 1 — Construire une culture générale solide

Construire une base solide de connaissances pour comprendre le monde. Relier les faits, les disciplines et les repères essentiels.

Étape 2 — Maîtriser la pensée critique et l’analyse : apprendre à penser contre ses propres certitudes

Apprendre à analyser l’information, repérer les biais et questionner les évidences. Penser par soi-même dans un monde saturé de récits.

Étape 3 – Apprendre à argumenter et à convaincre

Structurer sa pensée pour convaincre sans manipuler. Savoir débattre, nuancer et formuler des idées claires.

Étape 4 – Approfondir un ou plusieurs domaines d’expertise

Explorer un ou plusieurs domaines en profondeur. Passer de la curiosité à la compréhension experte.

Etapes 5 : Devenir polyglotte : élargir sa pensée par les langues

Élargir ses horizons par le langage et les cultures. Penser autrement en changeant de langue.

Étape 6 — Comprendre la méthode scientifique et expérimenter

Comprendre la méthode scientifique et l’expérimentation. Distinguer savoirs établis, hypothèses et croyances.

Étape 7 – Écrire, transTransmission : écrire, transmettre, enseigner

Écrire, expliquer, partager ce que l’on a compris. Transformer le savoir en outil collectif.

Étape 8 — Cultiver l’équilibre corps-esprit pour soutenir l’érudition

Cultiver le corps et l’esprit pour soutenir l’érudition dans le temps. Le savoir durable repose aussi sur l’attention et l’équilibre personnel.