Un agent unique avec vingt outils finit par mal choisir. ADK permet de composer plusieurs agents spécialisés sous un coordinateur.
Les briques d'ADK
mindmap
root((ADK))
Agents LLM
Agent
Délégation via sub_agents
AgentTool
Agents de workflow
SequentialAgent
ParallelAgent
LoopAgent
Outils
Fonctions Python
MCPToolset
Outils intégrés
Exécution
Runner
Sessions
State partagé
L'architecture testée
flowchart TD
U["Utilisateur"] --> C{"Coordinateur"}
C -->|question documentaire| R["Agent RAG"]
C -->|données chiffrées| S["Agent Sheets (MCP)"]
C -->|rapport complet| P["SequentialAgent"]
P --> P1["Collecte (ParallelAgent)"]
P1 --> R
P1 --> S
P --> P2["Rédacteur"]
P2 --> V["Relecteur (LoopAgent, 3 tours max)"]
V --> U
Le code
from google.adk.agents import Agent, ParallelAgent, SequentialAgent
rag_agent = Agent(name="rag", model="gemini-2.5-flash",
description="Répond à partir de la documentation interne.",
output_key="doc")
sheets_agent = Agent(name="sheets", model="gemini-2.5-flash",
description="Lit les données de coûts dans Google Sheets.",
output_key="chiffres")
collecte = ParallelAgent(name="collecte", sub_agents=[rag_agent, sheets_agent])
redacteur = Agent(name="redacteur", model="gemini-2.5-pro",
instruction="Rédige un rapport à partir de {doc} et {chiffres}.")
rapport = SequentialAgent(name="rapport", sub_agents=[collecte, redacteur])
root_agent = Agent(
name="coordinateur",
model="gemini-2.5-flash",
instruction="Délègue à l'agent le plus adapté. Pour un rapport, utilise 'rapport'.",
sub_agents=[rapport],
)Observations
- Les
output_keyqui écrivent dans le state de session sont le moyen le plus simple de faire circuler les résultats. - Les descriptions des sous-agents pèsent plus que les instructions du coordinateur dans la décision de délégation.
- Le
ParallelAgentdivise la latence de collecte par deux sur ce cas.