Table of Contents

🇬🇧 English version

Guide comparatif des ProcessTypes

Prérequis : Vue d'ensemble et YAML et Builders


Vue d'ensemble

Orkeon propose 6 stratégies d'orchestration via le value object ProcessType (Domain layer). Chaque stratégie définit comment les agents se coordonnent pour exécuter les tùches d'une Crew. Le choix du ProcessType est le levier architectural le plus impactant sur le comportement d'un systÚme multi-agents.

// Orkeon.Domain.SharedKernel.ValueObjects.ProcessType (sealed record)
ProcessType.Sequential    // Pipeline linéaire
ProcessType.Hierarchical  // Manager + workers
ProcessType.Parallel      // Exécution concurrente
ProcessType.Consensual    // Vote et consensus
ProcessType.Graph         // Graphe d'états avec cycles contrÎlés
ProcessType.Autonomous    // Auto-organisation avec budget

Architecture d'implémentation

ProcessType (Domain — Value Object)
     │
     ▌
IProcessStrategy (Domain — Interface)
     │
     ▌
ProcessStrategyFactory (Infrastructure)
     │
     ├── SequentialProcessStrategy
     ├── HierarchicalProcessStrategy
     ├── ParallelProcessStrategy
     ├── ConsensualProcessStrategy      ← IConsensualProcessStrategy
     ├── GraphProcessStrategy
     └── AutonomousProcessStrategy

Le ProcessStrategyFactory résout la stratégie appropriée via un switch sur ProcessType.Value, injecté par DI.


Matrice de comparaison rapide

CritĂšre Sequential Hierarchical Parallel Consensual Graph Autonomous
ModÚle d'exécution Linéaire Linéaire + revue Concurrent ParallÚle + vote Machine à états Auto-organisé
Coordination Round-robin Manager LLM Round-robin Consensus LLM Round-robin + routing LLM + canal A2A
Dépendances entre tùches Oui (chaßnées) Oui (via manager) Oui (vagues) Non Oui (edges) Oui (délégation)
Circuit breaker — — — — ✅ 4 mĂ©canismes —
Budget d'exĂ©cution — — — — — ✅ 5 dimensions
Retry automatique — RĂ©visions (max 3) — Rounds de vote ✅ configurable Via dĂ©lĂ©gation
Spawn dynamique — — — — — ✅ SpawnAgentTool
Complexité ⭐ ⭐⭐ ⭐ ⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐
CoĂ»t LLM relatif Bas Moyen Bas ÉlevĂ© Moyen Variable
Cas d'usage principal Pipelines ETL QA, revue de code Tùches indépendantes Décisions critiques Workflows complexes Exploration, R&D

1. Sequential — Pipeline linĂ©aire

Principe

Les tùches s'exécutent une par une, dans l'ordre défini par l'ExecutionPlan. Chaque tùche reçoit en contexte les résultats des tùches précédentes. L'assignation agent se fait en round-robin (sauf assignation explicite via task.AssignedAgent).

Ordre d'exĂ©cution sans plan (planning: false, le dĂ©faut) : les tĂąches s'exĂ©cutent dans un ordre topologique stable sur leurs dependencies dĂ©clarĂ©es — une tĂąche s'exĂ©cute aprĂšs chaque tĂąche dont elle dĂ©pend, et partout oĂč les dĂ©pendances le permettent l'ordre dĂ©clarĂ© est conservĂ©, si bien qu'une crew sans aucune dĂ©pendance s'exĂ©cute exactement comme elle est Ă©crite. Cela vaut dans tous les layouts : le layout multi-fichiers (tasks/*.yaml) liste les tĂąches dans l'ordre ordinal de leurs noms de fichiers, donc sans ce tri consolider.yaml s'exĂ©cutait avant l'extraire.yaml dont il dĂ©pend. Une dĂ©pendance qui nomme un id de tĂąche inconnu est ignorĂ©e ; un cycle ne fait jamais Ă©chouer la crew — l'ordre dĂ©clarĂ© est conservĂ© pour les tĂąches prises dans le cycle et un avertissement les nomme. La mĂȘme rĂšgle ordonne les modes hiĂ©rarchique, consensuel, graphe et autonome, qui distribuent eux aussi leurs tĂąches une par une ; le mode parallĂšle garde sa propre sĂ©mantique (des vagues de dĂ©pendances, et un cycle est refusĂ©). Avec planning: true, l'ordre du planificateur est pris tel quel. Une tĂąche dont une dĂ©pendance dĂ©clarĂ©e n'a pas abouti — Ă©chouĂ©e, ou ignorĂ©e Ă  son tour — est ignorĂ©e, jamais exĂ©cutĂ©e sur un contexte qui dit Task failed: 
 Ă  la place de l'entrĂ©e qu'elle attendait : elle apparaĂźt en ⊘ skipped dans AUTO_SUMMARY.md et comme Ă©vĂ©nement task.completed avec skipped: true, les tĂąches qui n'en dĂ©pendent pas s'exĂ©cutent quand mĂȘme, et la crew Ă©choue en nommant chaque tĂąche Ă©chouĂ©e et ignorĂ©e (LLM-11).

Mécanisme interne

Task 1 → Agent A → output₁
                      ↓ (contexte enrichi)
Task 2 → Agent B → output₂
                      ↓
Task 3 → Agent C → output₃ → rĂ©sultat final

Classes clés : SequentialProcessStrategy, ExecutionPlan, AgentDelegationToolsProvider

Configuration YAML

# Racine plate — il n'existe pas de clĂ© enveloppe crew:, et agents:/tasks: sont
# des mappings indexés par id (un fichier enveloppé de crew: se charge
# SILENCIEUSEMENT comme une crew vide).
name: "pipeline"
goal: "Démo séquentielle"
process: sequential
tasks:
  collecte:
    description: "Collecter les données"
    expectedOutput: "Données brutes"
  analyse:
    description: "Analyser les données"
    expectedOutput: "Rapport d'analyse"
    dependencies: [collecte]
  recommandations:
    description: "Générer les recommandations"
    expectedOutput: "Plan d'action"
    dependencies: [analyse]

Configuration Fluent Builder

var crew = new CrewBuilder()
    .Sequential()
    .WithAgent(a => a.Role("Collector").Goal("Gather data"))
    .WithAgent(a => a.Role("Analyst").Goal("Analyze data"))
    .WithTask(t => t.Description("Collect").ExpectedOutput("Raw data"))
    .WithTask(t => t.Description("Analyze").ExpectedOutput("Report"))
    .Build();

Avantages

  • SimplicitĂ© maximale : aucune configuration complexe, comportement prĂ©visible
  • TraçabilitĂ© : chaque Ă©tape est clairement identifiable dans les logs
  • Contexte cumulatif : chaque tĂąche bĂ©nĂ©ficie des rĂ©sultats prĂ©cĂ©dents
  • DĂ©terminisme : mĂȘme entrĂ©e → mĂȘme parcours d'exĂ©cution

Inconvénients

  • Pas de parallĂ©lisme : le temps total est la somme de toutes les tĂąches
  • Point de dĂ©faillance unique : un Ă©chec bloque la suite de la chaĂźne — ses dĂ©pendantes sont ignorĂ©es, seules les tĂąches indĂ©pendantes s'exĂ©cutent encore
  • Pas de retry : aucune reprise automatique en cas d'erreur
  • Rigide : l'ordre est fixe, pas de branchement conditionnel

Quand l'utiliser

  • Pipelines ETL (extraction → transformation → chargement)
  • RĂ©daction sĂ©quentielle (recherche → rĂ©daction → relecture)
  • Workflows oĂč chaque Ă©tape dĂ©pend strictement de la prĂ©cĂ©dente
  • Prototypage rapide et POC

Quand ne pas l'utiliser

  • TĂąches indĂ©pendantes pouvant s'exĂ©cuter en parallĂšle
  • Workflows nĂ©cessitant des branches conditionnelles
  • ScĂ©narios exigeant de la rĂ©silience (retry, fallback)

2. Hierarchical — Manager + Workers

Principe

Un agent manager (piloté par LLM) coordonne une équipe de workers. Pour chaque tùche, le manager sélectionne l'agent le plus approprié via AssignTaskAsync(), puis revoit la sortie et peut demander jusqu'à 3 révisions.

Mécanisme interne

                  ┌─── Manager Agent ───┐
                  │   AssignTask()      │
                  │   ReviewOutput()    │
                  └────────┬────────────┘
                           │
            ┌──────────────┌──────────────┐
            ▌              ▌              ▌
        Agent A        Agent B        Agent C
        (choisi)       (en attente)   (en attente)
            │
            ▌
        Output → Review → OK? → oui → tñche suivante
                           → non → rĂ©vision (max 3)

Classes clés : HierarchicalProcessStrategy, IManagerAgent, LlmBasedManager, TaskAssignment

Interface IManagerAgent :

  • AssignTaskAsync(task, agents, context) → TaskAssignment (agent sĂ©lectionnĂ© + justification)
  • ReviewOutputAsync(output, task) → bool (approuvĂ© ou non)

Configuration YAML

name: "delivery-team"
goal: "Démo hiérarchique"
process: hierarchical
managerAgent: lead          # l'id de l'agent manager (il n'existe pas de clé manager_llm)
llm:                        # LLM par défaut de la crew, appliqué aux agents sans le leur
  model: gpt-4o
agents:
  lead:
    role: "Tech Lead"
    goal: "Coordonner la livraison"
  dev:
    role: "Senior Developer"
    goal: "Écrire le code de production"
  qa:
    role: "QA Engineer"
    goal: "Tester et valider"

Avantages

  • Allocation intelligente : le manager choisit l'agent le plus adaptĂ© Ă  chaque tĂąche
  • ContrĂŽle qualitĂ© intĂ©grĂ© : boucle de rĂ©vision automatique
  • FlexibilitĂ© : le manager peut adapter la stratĂ©gie en cours d'exĂ©cution
  • TraçabilitĂ© : chaque assignation est justifiĂ©e

Inconvénients

  • CoĂ»t LLM supplĂ©mentaire : le manager consomme des tokens pour chaque dĂ©cision + revue
  • Goulot d'Ă©tranglement : tout passe par le manager (pas de parallĂ©lisme)
  • RĂ©visions limitĂ©es : max 3 rĂ©visions (hardcodĂ©), pas de retry structurel
  • DĂ©pendance Ă  la qualitĂ© du manager : un mauvais prompt manager dĂ©grade tout le workflow

Quand l'utiliser

  • Revue de code (le manager assigne le reviewer le plus compĂ©tent)
  • Projets avec des spĂ©cialistes hĂ©tĂ©rogĂšnes (dev, QA, design, rĂ©daction)
  • Workflows nĂ©cessitant une validation humaine simulĂ©e
  • Situations oĂč la qualitĂ© prime sur la vitesse

Quand ne pas l'utiliser

  • TĂąches homogĂšnes (round-robin suffit)
  • Contraintes de coĂ»t LLM strictes
  • Workflows Ă  haute frĂ©quence (le manager est un goulot)

3. Parallel — ExĂ©cution concurrente

Principe

Toutes les tùches s'exécutent simultanément via Task.WhenAll(). Chaque tùche dispose d'un contexte d'exécution indépendant (pas de résultats partagés entre tùches). Les résultats sont agrégés à la fin.

Mécanisme interne

        ┌── Task 1 → Agent A → output₁ ──┐
        │                                  │
Start ──┌── Task 2 → Agent B → output₂ ──┌── AgrĂ©gation → RĂ©sultat
        │                                  │
        └── Task 3 → Agent C → output₃ ──┘

Classes clés : ParallelProcessStrategy

Configuration YAML

name: "market-scan"
goal: "Démo parallÚle"
process: parallel
tasks:
  france:
    description: "Analyser le marché français"
    expectedOutput: "Rapport France"
  allemagne:
    description: "Analyser le marché allemand"
    expectedOutput: "Rapport Allemagne"
  espagne:
    description: "Analyser le marché espagnol"
    expectedOutput: "Rapport Espagne"

Avantages

  • Vitesse maximale : temps total = durĂ©e de la tĂąche la plus longue
  • SimplicitĂ© : pas de coordination complexe
  • ScalabilitĂ© : ajout de tĂąches sans impact sur le temps total
  • Isolation : un Ă©chec d'une tĂąche n'impacte pas ses sƓurs de vague

Inconvénients

  • Ordonnancement grossier : les dĂ©pendances sont honorĂ©es par vagues, pas tĂąche par tĂąche — une tĂąche attend toute sa vague, pas seulement ce qu'elle a dĂ©clarĂ©
  • Consommation API en pic : toutes les requĂȘtes LLM partent en mĂȘme temps (rate limiting)
  • AgrĂ©gation basique : les rĂ©sultats sont simplement concatĂ©nĂ©s
  • Pas de retry : aucune reprise automatique

Quand l'utiliser

  • Analyses multi-marchĂ©s ou multi-sources indĂ©pendantes
  • GĂ©nĂ©ration de contenu en batch (un article par marchĂ©, par langue)
  • TĂąches de classification parallĂšles
  • Un fan-out suivi d'une synthĂšse : les collecteurs tournent ensemble, la synthĂšse les lit

Quand ne pas l'utiliser

  • Routage conditionnel ou cycles entre tĂąches (utiliser Graph)
  • APIs avec rate limiting strict (les appels simultanĂ©s peuvent ĂȘtre throttled)
  • ScĂ©narios nĂ©cessitant une synthĂšse progressive

4. Consensual — Vote et consensus

Principe

Pour chaque tùche, tous les agents l'exécutent indépendamment, puis un vote détermine le meilleur résultat. Si aucun consensus n'est atteint, des rounds de discussion permettent aux agents de reconsidérer leur position en voyant les résultats des autres. Un mécanisme de fallback tranche en dernier recours.

Mécanisme interne

Task N ──┬── Agent A → rĂ©sultat A ──┐
         ├── Agent B → rĂ©sultat B ──┌── Vote ── Consensus? ── oui → AcceptĂ©
         └── Agent C → rĂ©sultat C ──┘              │
                                                   non
                                                    ↓
                                          Discussion (round 2)
                                          Agents voient les autres résultats
                                                    ↓
                                                  Re-vote
                                                    ↓
                                          Échec → Fallback

Classes clés : ConsensualProcessStrategy, IVotingStrategy, IVotingStrategyFactory, Vote, VoteResult, VotingOptions, ConsensualProcessOptions

Types de consensus disponibles

Le mécanisme de vote est sélectionnable par configuration : la valeur de Orkeon:Consensus:VotingOptions:ConsensusType (section .NET appsettings.json) choisit la stratégie dédiée via IVotingStrategyFactory. Sans configuration, le défaut reste Majority (rétro-compatible).

Type Stratégie résolue Description Seuil par défaut
Majority MajorityVotingStrategy Plus de 50% des votes 50%
SuperMajority SuperMajorityVotingStrategy Seuil configurable (défaut 2/3) 66.7%
Unanimity UnanimityVotingStrategy Tous les agents doivent s'accorder 100%
WeightedConsensus WeightedConsensusStrategy Votes pondérés par rÎle (RoleWeights) Configurable
BordaCount BordaCountStrategy Classement par score Borda N/A

Configuration (.NET, section Orkeon:Consensus)

{
  "Orkeon": {
    "Consensus": {
      "MaxVotingRounds": 3,
      "VotingOptions": {
        "ConsensusType": "SuperMajority",
        "ConsensusThreshold": 75,
        "QuorumPercent": 60,
        "UseWeightedVotes": true,
        "AllowAbstention": false
      },
      "EnableDiscussion": true,
      "FallbackStrategy": "AcceptBestScore",
      "RoleWeights": {
        "Senior Analyst": 2.0,
        "Junior Analyst": 1.0
      }
    }
  }
}

Note : ConsensusThreshold et QuorumPercent s'expriment en pourcentage (0–100), pas en fraction. Un seuil de super-majoritĂ© de 75 % s'Ă©crit 75.

Avantages

  • Robustesse : rĂ©duit les hallucinations et biais individuels
  • QualitĂ© : la "sagesse collective" produit souvent de meilleurs rĂ©sultats
  • FlexibilitĂ© du vote : 5 stratĂ©gies de consensus, pondĂ©ration par rĂŽle
  • Discussion : les agents peuvent s'amĂ©liorer mutuellement entre les rounds
  • Fallback : 3 stratĂ©gies de repli (meilleur score, Ă©chec, dĂ©cision manager)

Inconvénients

  • CoĂ»t LLM Ă©levĂ© : chaque tĂąche est exĂ©cutĂ©e N fois (N = nombre d'agents) × rounds
  • Lenteur : multiplication des appels LLM, surtout avec discussion activĂ©e
  • ComplexitĂ© de configuration : nombreux paramĂštres (seuil, quorum, pondĂ©ration, rounds)
  • RĂ©sultat incertain : le fallback peut produire un rĂ©sultat insatisfaisant

Quand l'utiliser

  • DĂ©cisions critiques (diagnostic mĂ©dical, Ă©valuation de risque, audit)
  • Situations oĂč la fiabilitĂ© prime sur le coĂ»t
  • Évaluations subjectives nĂ©cessitant plusieurs perspectives
  • ScĂ©narios de "red team" (plusieurs agents tentent de trouver des failles)

Quand ne pas l'utiliser

  • TĂąches factuelles avec une seule rĂ©ponse correcte
  • Contraintes de budget LLM (multiplication par N agents × R rounds)
  • Workflows Ă  haute frĂ©quence (trop lent)

5. Graph — Graphe d'Ă©tats avec cycles contrĂŽlĂ©s

Principe

Les tĂąches sont organisĂ©es dans un graphe d'Ă©tats typĂ© inspirĂ© de LangGraph. Le graphe supporte des edges conditionnels (routing dynamique) et des cycles contrĂŽlĂ©s (retry automatique). Un circuit breaker Ă  4 mĂ©canismes empĂȘche les boucles infinies.

Mécanisme interne

START ──→ execute_task ──→ route ──┬── succùs ──→ execute_task (suivante)
                                   │                      ↓
                                   │               ... (loop) ...
                                   │                      ↓
                                   ├── Ă©chec ──→ execute_task (retry)
                                   │
                                   └── terminĂ© ──→ END

Classes clés :

  • StateGraph<TState> — DĂ©finition du graphe (nodes + edges)
  • GraphRunner<TState> — Moteur d'exĂ©cution
  • GraphProcessStrategy — ImplĂ©mentation IProcessStrategy
  • CircuitBreakerPolicy — Protection anti-boucle
  • CrewGraphState — État typĂ© circulant dans le graphe

CrewGraphState — PropriĂ©tĂ©s de l'Ă©tat

Propriété Type Description
PendingTaskIds Queue<TaskId> Tùches restantes à exécuter
FailedTaskIds Queue<TaskId> Tùches éligibles au retry
RetryCounts Dict<string, int> Compteur de retries par tĂąche
MaxRetryCycles int Nombre max de retries (défaut: 2)
ApplicationOutputs IReadOnlyList<ApplicationTaskOutput> Sorties accumulées
TotalTokensUsed int Compteur de tokens consommés (propagé aux métadonnées du CrewOutput sous totalTokens)
PromptTokensUsed int Compteur de tokens cÎté prompt (0 si le provider ne fournit pas le split)
CompletionTokensUsed int Compteur de tokens cÎté completion (0 si le provider ne fournit pas le split)

Circuit Breaker — 4 mĂ©canismes de protection

Mécanisme Strict Default Permissive
MaxTransitions 50 100 1000
StateTimeout 2 min 5 min 30 min
MaxStateVisits 5 10 50
MaxTotalDuration 10 min 30 min 2 h

Configuration YAML

name: "review-loop"
goal: "Démo graphe"
process: graph
graphConfig:
  circuitBreakerPreset: "strict"   # ou "default", "permissive"
  maxRetryCycles: 3
  # Surcharges individuelles possibles :
  maxTransitions: 75
  maxStateVisits: 10
  maxTotalDurationSeconds: 180

Avantages

  • Branchement conditionnel : routing dynamique selon le rĂ©sultat de chaque nƓud
  • Retry intĂ©grĂ© : les tĂąches Ă©chouĂ©es sont automatiquement re-tentĂ©es
  • SĂ©curitĂ© : circuit breaker Ă  4 niveaux empĂȘche les exĂ©cutions infinies
  • ObservabilitĂ© : Ă©vĂ©nements OnNodeCompleted, OnCircuitBroken
  • Cycles utiles : boucle feedback → correction → validation
  • Presets : Strict (production) vs Permissive (dĂ©veloppement)

Inconvénients

  • ComplexitĂ© de conception : dĂ©finir un graphe correct demande de la rĂ©flexion
  • Debugging : tracer un parcours dans un graphe cyclique est plus difficile
  • Overhead : le moteur de graphe ajoute une couche de complexitĂ©
  • Circuit breaker : peut couper l'exĂ©cution prĂ©maturĂ©ment si mal configurĂ©

Quand l'utiliser

  • Workflows avec branchements conditionnels (validation → OK/KO → chemins diffĂ©rents)
  • Pipelines nĂ©cessitant du retry avec backoff
  • ScĂ©narios de correction itĂ©rative (rĂ©daction → revue → correction → re-revue)
  • Workflows rĂ©glementaires avec des chemins d'exception

Quand ne pas l'utiliser

  • Pipelines linĂ©aires simples (Sequential suffit)
  • TĂąches indĂ©pendantes (Parallel suffit)
  • Équipes qui ne sont pas Ă  l'aise avec la modĂ©lisation par graphe

Voir aussi : Orchestration FSM pour le détail complet.


6. Autonomous — Auto-organisation avec budget

Principe

Les agents s'auto-organisent : ils revendiquent des tùches, délÚguent récursivement à leurs pairs, et peuvent spawner dynamiquement de nouveaux agents. Un budget multi-dimensionnel (5 axes) garantit la terminaison. La communication inter-agents se fait via un canal bidirectionnel (IAgentChannel).

Mécanisme interne

                    ┌─── Budget (5 dimensions) ───┐
                    │  tool calls · depth · time   │
                    │  tokens · spawned agents      │
                    └──────────────┬────────────────┘
                                   │
Manager (LLM) ── assigne ──→ Agent A
                                   │
                    ┌──────────────┌──────────────┐
                    ▌              ▌              ▌
              DelegateWork   SpawnAgent      Exécution
              (child budget)  (via factory)   directe
                    │              │
                    ▌              ▌
                Agent B       Agent D (nouveau)
                    │              │
                    ▌              ▌
              RĂ©sultat ←── canal A2A ──→ RĂ©sultat

Classes clés :

  • AutonomousProcessStrategy — StratĂ©gie d'orchestration
  • AgentExecutionBudget — Budget multi-dimensionnel (Domain)
  • IAgentChannel / InMemoryAgentChannel — Communication A2A (lock-free)
  • SpawnAgentTool — CrĂ©ation dynamique d'agents
  • DelegateWorkTool — DĂ©lĂ©gation avec budget hĂ©ritĂ©
  • BudgetExhaustedException — Exception levĂ©e quand un axe est Ă©puisĂ©

Budget multi-dimensionnel — 5 axes

Dimension Strict Default Permissive Description
MaxToolCalls 8 15 50 Nombre max d'appels d'outils
MaxDelegationDepth 1 2 4 Profondeur de dĂ©lĂ©gation (A→B→C = 2)
MaxTokensConsumed 8 000 16 000 64 000 Tokens LLM consommés
MaxSpawnedAgents 1 3 10 Agents créés dynamiquement
MaxWallTime 2 min 5 min 15 min Durée maximale d'exécution

Child budgets : quand un agent délÚgue, il crée un budget enfant dérivé de ses propres ressources restantes (via CreateChildBudget()). Le budget enfant est toujours inférieur ou égal au budget parent restant.

Communication A2A

// Request/Response
var request = AgentChannelRequest.Create(
    from: analyst.Id,
    to: researcher.Id,
    intent: "find_data",
    payload: "Statistiques marché 2025");

var response = await channel.RequestAsync(request, timeout);

// Broadcast (fire-and-forget)
await channel.BroadcastAsync(analyst.Id, crew.Id, "Résultats disponibles", ct);

Configuration YAML

name: "research-team"
goal: "Démo autonome"
process: autonomous
# Il n'existe AUCUNE clé de budget autonome en YAML : une crew autonome YAML
# tourne toujours sous AgentExecutionBudget.Permissive (50 appels d'outils,
# profondeur 4, 15 min, 64 000 tokens, 10 spawns). Le budget ne se configure
# que par l'API C# — voir le guide Autonomous et yaml-schema.md.

Avantages

  • AdaptabilitĂ© maximale : les agents rĂ©agissent au contexte en temps rĂ©el
  • Spawn dynamique : capacitĂ© Ă  crĂ©er des spĂ©cialistes Ă  la demande
  • Terminaison garantie : budget multi-dimensionnel empĂȘche les exĂ©cutions infinies
  • Communication riche : A2A request/response avec corrĂ©lation
  • Presets : configuration rapide (Strict/Default/Permissive)
  • ScalabilitĂ© : les agents se rĂ©partissent le travail organiquement

Inconvénients

  • ComplexitĂ© Ă©levĂ©e : mode le plus difficile Ă  configurer et dĂ©bugger
  • CoĂ»t imprĂ©visible : la consommation de tokens dĂ©pend des dĂ©cisions des agents
  • Non-dĂ©terministe : deux exĂ©cutions identiques peuvent suivre des chemins diffĂ©rents
  • Budget trop strict : peut couper l'exĂ©cution avant d'obtenir un rĂ©sultat complet
  • ObservabilitĂ© : nĂ©cessite un bon logging (BudgetSnapshot) pour comprendre le comportement

Quand l'utiliser

  • Exploration (recherche, R&D, analyse exploratoire)
  • ProblĂšmes mal dĂ©finis oĂč la stratĂ©gie optimale n'est pas connue Ă  l'avance
  • SystĂšmes nĂ©cessitant de l'auto-rĂ©paration (un agent dĂ©tecte un problĂšme → dĂ©lĂšgue la correction)
  • ScĂ©narios multi-Ă©tapes oĂč chaque Ă©tape peut rĂ©vĂ©ler de nouvelles sous-tĂąches

Quand ne pas l'utiliser

  • Workflows dĂ©terministes et bien dĂ©finis (Sequential ou Graph)
  • Environnements Ă  budget LLM contraint sans marge
  • ScĂ©narios rĂ©glementaires nĂ©cessitant une traçabilitĂ© complĂšte du parcours

Voir aussi : Orchestration Autonome pour le détail complet.


Arbre de décision

Tes tùches ont-elles des dépendances entre elles ?
│
├── NON
│   └── As-tu besoin de fiabilitĂ© maximale (multi-perspectives) ?
│       ├── OUI → Consensual
│       └── NON → Parallel
│
└── OUI
    └── Le workflow a-t-il des branches conditionnelles ou des boucles ?
        │
        ├── NON
        │   └── As-tu besoin de contrĂŽle qualitĂ© (revue manager) ?
        │       ├── OUI → Hierarchical
        │       └── NON → Sequential
        │
        └── OUI
            └── La stratĂ©gie optimale est-elle connue Ă  l'avance ?
                ├── OUI → Graph (workflow modĂ©lisable)
                └── NON → Autonomous (exploration)

Combinaisons et complémentarité

Les ProcessTypes ne sont pas mutuellement exclusifs à l'échelle d'un systÚme. Il est courant de combiner plusieurs stratégies :

Graph + FSM : Le Graph orchestre la Crew (niveau inter-tĂąches), tandis que la FSM gĂšre l'exĂ©cution interne de chaque tĂąche (niveau intra-tĂąche). Les deux utilisent CircuitBreakerPolicy avec les mĂȘmes presets.

Sequential + Hierarchical : Une Crew séquentielle peut contenir des tùches dont les agents utilisent DelegateWorkTool pour simuler un comportement hiérarchique local.

Autonomous + Graph : Un agent autonome peut décider de créer un sous-workflow Graph pour structurer une sous-tùche complexe qu'il a découverte dynamiquement.


Résumé des coûts et performances

ProcessType Appels LLM (N tùches, M agents) Latence Prévisibilité
Sequential N Σ(durées) ⭐⭐⭐⭐⭐
Hierarchical N × (1 assign + 1-3 reviews) ÎŁ(durĂ©es) × 1.5-3 ⭐⭐⭐⭐
Parallel N max(durées) ⭐⭐⭐⭐
Consensual N × M × rounds ÎŁ(max(durĂ©es) × rounds) ⭐⭐⭐
Graph N × (1 + retries) Variable ⭐⭐⭐
Autonomous Imprévisible (budget-bounded) Variable (wall-time bounded) ⭐⭐

Références croisées

Sujet Document
Architecture et concepts de base Vue d'ensemble
Fonctionnalités détaillées YAML et Builders
Orchestration FSM (intra-tĂąche) ./fsm.md
Orchestration Graph (inter-tĂąches) ./graph.md
Orchestration Autonomous ./autonomous.md
Blueprint pour nouveau ProcessType ../../guides/blueprint.md