Formation

Orchestrer des sous-agents : planification, isolation, budgets

Un harness où un planificateur découpe un dossier de veille en sous-tâches, lance des sous-agents isolés et budgétés en parallèle, tranche leurs contradictions et trace toute la trajectoire. Écrit deux fois, à la main puis avec ADK Workflow, et mesuré.

Expert 7 leçons 6h
Commencer la formation
Progression 0% · 0/7

Nordelec Réseaux, gestionnaire fictif d'un réseau de distribution électrique, doit choisir le serveur d'inférence qui hébergera l'assistant de ses 600 techniciens d'astreinte. Le comité d'architecture se réunit le 20 octobre. Le corpus à dépouiller : 40 documents internes (bancs d'essai, devis, bulletins de sécurité, comptes rendus, billets de blog), dont une dizaine sans rapport et quatre paires qui se contredisent. Un agent unique qui lit tout dans un seul contexte mélange les chiffres, oublie la moitié des sources et coûte de plus en plus cher à chaque tour. Ce projet construit l'alternative : un planificateur qui découpe, des sous-agents qui ne voient que leur part, un budget strict par sous-agent, une synthèse qui tranche les contradictions, et un journal qui montre où sont passés le temps et l'argent.

Trajectoire réelle d'une exécution du 2026-10-15 : planificateur, cinq sous-agents en parallèle dont un en panne puis repris, synthèse

Ce que vous livrez

LivrableContenu
Harness « à la main »asyncio + google-genai : planification structurée, boucle d'outils, budgets, reprise, synthèse
Harness ADKle même pipeline sur google.adk.workflow (ADK 2.10), sans les agents dépréciés
Journal de trajectoirejournal.jsonl + page HTML autonome : arbre des tâches, frise, tokens et coût par nœud
Grille de qualité12 faits attendus, 4 contradictions plantées, validité des citations, bruit cité
Mesuresséquentiel contre parallèle, à la main contre ADK, sur le vrai modèle
Tests21 tests sans clé ni réseau, qui exercent les deux versions avec le même faux modèle

Architecture

flowchart LR
  D["Demande du comité"] --> P["Planificateur<br/>(voit le catalogue, pas le contenu)"]
  P --> V["Validation du plan<br/>(code, pas modèle)"]
  V --> S1["Sous-agent st-1<br/>périmètre + budget"]
  V --> S2["Sous-agent st-2<br/>périmètre + budget"]
  V --> S3["Sous-agent st-n<br/>périmètre + budget"]
  S1 --> A["Dossier de preuves<br/>(métadonnées des sources)"]
  S2 --> A
  S3 --> A
  A --> Y["Synthèse<br/>arbitrage des contradictions"]
  Y --> C["Contrôles déterministes<br/>citations, arbitrages"]
  C --> R["dossier.md + trajectoire.html"]

Stack et coût

  • Python 3.10 ou plus, google-genai, google-adk==2.10.0, pydantic, pytest. Aucune ressource Google Cloud : une clé Gemini API suffit.
  • Sous-agents : gemini-3.5-flash-lite (0,30 /2,50/ 2,50 par million de tokens en entrée / sortie). Planificateur et synthèse : gemini-3.8-flash (0,75 /3,75/ 3,75 jusqu'au 31 décembre 2026, le double ensuite). Tarifs relevés le 2026-10-15 sur la page officielle.
  • Coût mesuré le 2026-10-15 : 0,03 à 0,04 pardossier;‘makee2e‘(quatredossiers):0,15par dossier ; `make e2e` (quatre dossiers) : 0,15.

Prérequis

  • Avoir écrit une boucle d'appel d'outils (function calling) et une sortie structurée avec Gemini.
  • Être à l'aise avec asyncio (gather, Semaphore, wait_for) et pydantic.
  • Une clé Gemini API (Google AI Studio).

Programme

#LeçonÀ la fin, cette commande marche
1Le problème et l'architecturemake setup && make test
2Le planificateur : décomposer sans tout lirepytest -k plan
3Sous-agents isolés et budgetspytest -k "isolation or budget"
4Parallélisme, reprise sur échec, journalmake run
5Agrégation et contradictionsmake run affiche la note de la grille
6La même chose avec ADK Workflowmake run IMPL=adk
7Mesurer et décidermake e2e

Le code complet est dans files/ : clonez-le, puis make setup, make test, make run. Nettoyage : make clean (aucune ressource cloud n'est créée).

Ressources

Tout télécharger (.zip)

Références