Le pattern multi-agents : collaborer pour réussir

IA
Agents
LLM
Patterns
Découvrez comment construire un framework multi-agents minimaliste pour faire collaborer plusieurs agents spécialisés sur une tâche commune.
Date de publication

4 juin 2025

Bienvenue dans la dernière leçon de la série Agentic Patterns ! À ce stade, vous êtes déjà familiarisé avec l’Agent de Réflexion, les Outils, et la Technique ReAct. Mais vous êtes probablement curieux de connaître les frameworks comme CrewAI, AutoGen, ou OpenAI Swarm — ces outils géniaux pour construire des applications multi-agents.

Ces frameworks ne sont que des variantes du Multiagent Pattern, où les tâches sont décomposées en sous-tâches plus petites et traitées par des agents ayant des rôles spécifiques — comme un ingénieur logiciel, un chef de projet, etc.

Dans cette leçon, nous passons au niveau supérieur en construisant un framework multi-agents minimaliste de zéro.

C’est parti ! 🚀

Le Pattern Multi-agents

Le Pattern Multi-agents

Ceci est la quatrième leçon du cours Agentic Patterns from Scratch. Cette leçon s’appuie sur la théorie et le code abordés dans les précédentes, alors assurez-vous de les consulter si ce n’est pas déjà fait !


Un framework multi-agents minimaliste

Le framework que nous allons développer s’inspire de deux concepts fondamentaux de CrewAI : la Crew (l’équipage) et l’Agent.

Dans CrewAI, une Crew représente un groupe collaboratif d’agents travaillant à l’unisson pour accomplir un ensemble de tâches. Un Agent, quant à lui, représente l’unité autonome responsable de l’exécution de tâches spécifiques.

Concept de Crew dans CrewAI Introduction - CrewAI

Je me suis également inspiré de la philosophie de design d’Apache Airflow, particulièrement l’utilisation des opérateurs >> et << pour établir des dépendances entre les agents. Dans ce micro-framework CrewAI, les agents sont analogues aux Airflow Tasks, tandis que la Crew correspond à un Airflow DAG.

DAGs dans la documentation Airflow DAGs — Airflow Documentation

Commençons par la classe Agent 👇


La classe Agent

Tout d’abord, nous avons besoin d’une Classe Agent. Cette classe représentera un agent, intégrant la technique ReAct en interne (consultez la Leçon 3 pour voir cette technique en détail !).

Créons un exemple d’agent pour démontrer son fonctionnement.

Définition d’un agent simple

Définition d’un agent simple

Vous pouvez également équiper l’agent d’outils, comme nous l’avons fait dans la Leçon 2. Par exemple, construisons un outil qui écrit du texte dans un fichier CSV.

Équiper un agent d’outils

Équiper un agent d’outils

Comme vous pouvez l’imaginer, l’exécution de ce Tool Agent créera un nouveau fichier nommé tool_agent_example.txt dans le répertoire courant, contenant le texte “This is a Tool Agent”.

Maintenant que nous savons comment fonctionne la classe Agent, voyons comment définir les dépendances entre agents.


Définition des dépendances entre agents

Supposons que nous voulions définir deux agents, où le second dépend du premier.

Définition de deux agents

Définition de deux agents

Nous pouvons définir les dépendances en utilisant l’opérateur >>.

agent_1 >> agent_2

Cela signifie que agent_2 dépend de agent_1. On peut alors vérifier les dépendances de chaque agent.

Vérification des dépendances

Vérification des dépendances

Désormais, si nous lançons agent_1, ses résultats seront ajoutés au contexte de agent_2. Ensuite, quand nous lancerons agent_2, il utilisera le contexte reçu de agent_1 pour générer sa sortie.

Propagation du contexte

Propagation du contexte

La Crew

Une fois les agents et leurs dépendances définis, la dernière pièce manquante est la Crew, c’est-à-dire l’objet session qui nous permettra d’orchestrer les agents.

Notre Crew s’occupera de lancer les agents dans le bon ordre, en appliquant un algorithme appelé Topological Sorting. Elle permet également de visualiser le graphe des dépendances.

Voyons la Crew en action :

Définition de la Crew

Définition de la Crew

Si nous voulons voir le graphe de dépendances, nous pouvons simplement lancer crew.plot(). Cette commande générera un diagramme comme celui-ci :

Visualisation du graphe

Visualisation du graphe

Ensuite, nous n’avons plus qu’à lancer la crew et attendre les résultats !

crew.run()

Vous devriez voir une sortie comme celle-ci, où le Poet Agent génère un poème sur la vie, le Poem Translator Agent le traduit en espagnol, et enfin le Writer Agent écrit le poème traduit dans un fichier poem.txt !

Exécution de la Crew

Exécution de la Crew

Et voilà ! Nous avons réussi à mettre en place un framework multi-agents opérationnel ! Ça mérite bien un petit meme… 🤣

Multi-agents meme

Multi-agents meme

Pourquoi ça marche si bien ?

  • Spécialisation : Chaque agent peut être “expert” dans une tâche très précise.
  • Collaboration : Les agents partagent leur contexte pour construire une solution globale.
  • Orchestration : La Crew gère la complexité de l’ordre d’exécution pour vous.

Ressources

Retour au sommet