Leçon 1 — Fondations : agents, workflows et état

Du LlmAgent au workflow

5 min de lecture

Du LlmAgent au workflow

Deux façons de confier une tâche à l'IA

Un LlmAgent (alias Agent) est un agent piloté par un modèle de langage : il reçoit une instruction, des outils, et décide lui-même quoi faire à chaque tour. Parfait pour une conversation ouverte. Mais une due diligence fournisseur suit toujours les mêmes étapes : collecter, scorer, analyser, rédiger, relire. Laisser le modèle choisir l'ordre, c'est accepter qu'il en saute une.

Un agent de workflow n'appelle aucun modèle : c'est du code d'orchestration qui exécute des sous-agents selon un schéma fixe.

BriqueRôleAppelle un LLM ?
LlmAgentraisonne, appelle des outils, écritoui
SequentialAgentexécute ses sous-agents l'un après l'autrenon
ParallelAgentexécute ses sous-agents en même tempsnon
LoopAgentrépète ses sous-agents jusqu'à un signal d'arrêt ou max_iterationsnon
BaseAgent (sous-classe)votre propre logique en Pythonseulement si vous le décidez
flowchart TB
  subgraph A["Agent autonome"]
    M["LLM"] -->|"choisit"| T1["outil 1"]
    M -->|"choisit"| T2["outil 2"]
    M -->|"choisit"| T3["outil 3"]
  end
  subgraph W["Workflow"]
    E1["étape 1"] --> E2["étape 2"] --> E3["étape 3"]
  end

Combien d'appels au modèle fait un SequentialAgent pour décider de l'ordre de ses sous-agents ?

Le pipeline du lab en une vue

files/agent.py (extrait)
return SequentialAgent(
    name="due_diligence",
    description="Due diligence fournisseur : recherche, score, analyse, rapport relu.",
    sub_agents=[recherche, ScoreurRisque(name="scoreur"), analyste, boucle],
)

recherche est un ParallelAgent de trois LlmAgent, ScoreurRisque un BaseAgent sans IA, analyste un LlmAgent, boucle un LoopAgent (rédacteur + relecteur). Le code complet : agent.py.

Structure d'un projet ADK

ADK attend un dossier par application contenant __init__.py (qui fait from . import agent) et agent.py qui définit root_agent :

mon_projet/
└── due_diligence/          ← nom de l'application
    ├── __init__.py
    ├── agent.py            ← root_agent = construire_pipeline()
    ├── fournisseurs.json
    └── .env                ← copié depuis .env.example
terminal
cd mon_projet
pip install -r due_diligence/requirements.txt
cp due_diligence/.env.example due_diligence/.env   # puis renseignez la clé
adk run due_diligence "Due diligence du fournisseur : Composants Arvenne"
adk web --port 8000        # interface de développement sur http://127.0.0.1:8000

adk run <dossier> [requête] exécute une requête unique (ou ouvre un mode interactif sans requête). adk web [dossier_des_agents] lance une interface web qui liste les applications, montre chaque événement, l'état de session et les traces.

Exercice : dessiner avant de coder

Un service RH veut automatiser la présélection de candidatures : extraire les informations du CV, vérifier en parallèle diplômes et expériences, calculer un score selon une grille fixe, puis rédiger un avis relu par un second agent. Indiquez la brique ADK pour chaque étape.

Voir la solution
  • SequentialAgent en racine.
  • Extraction du CV : LlmAgent (langage non structuré → champs).
  • Vérifications diplômes / expériences : ParallelAgent de deux LlmAgent (indépendantes l'une de l'autre).
  • Score selon une grille fixe : BaseAgent personnalisé, sans LLM (règles auditables).
  • Avis + relecture : LoopAgent avec max_iterations, le relecteur arrêtant la boucle par un outil.

Point de vigilance : une grille RH doit être auditable et non discriminante ; c'est une raison de plus pour la coder en Python plutôt que de la confier au modèle.

Quel fichier ADK cherche-t-il dans le dossier passé à adk run ?

Résultat obtenu

Serveur adk web --port 8791 lancé le 2026-10-15 sur le dossier du lab, interrogé avec curl :

$ curl -s localhost:8791/list-apps
["due_diligence"]
$ curl -s -o /dev/null -w "dev-ui %{http_code}\n" -L localhost:8791/dev-ui/
dev-ui 200
$ curl -s -X POST localhost:8791/apps/due_diligence/users/u/sessions -d '{}' -H 'content-type: application/json'
{"id":"b528905d-…","appName":"due_diligence","userId":"u","state":{},"events":[],…}

Je sais faire

  • Expliquer quand préférer un workflow à un agent autonome
  • Citer les quatre briques d'ADK et dire lesquelles appellent un LLM
  • Organiser un dossier d'application ADK avec root_agent
  • Lancer un agent avec adk run et l'inspecter avec adk web
Suivant