Comment faire communiquer deux agents IA avec le protocole A2A ?
Le développement des agents IA pose la question de la communication entre eux. A côté du MCP, pour Model Context Protocol, de l’AP2, pour Agent Payments Protocol, de l’ACP, le protocole de paiement OpenAI / Stripe ou du Trusted Agent Protocol, l’A2A, pour agent to agent, semble particulièrement prometteur. Cette spécification open source conçue par Google vise à standardiser la communication entre agents IA. Elle fournit un "langage commun". Celui-ci leur permet de découvrir les capacités des autres, d'échanger des informations et de collaborer pour accomplir des tâches complexes qu'un seul agent ne pourrait réaliser seul.
Concrètement, A2A simplifie ce qui était jusqu'alors un casse-tête. Par exemple, un agent de gestion des stocks, opérant sur une infrastructure Microsoft Azure, peut désormais interroger directement un agent fournisseur hébergé sur Amazon Web Services pour vérifier la disponibilité d'un produit, déclenchant automatiquement une commande via un troisième agent de facturation. Tout cela sans passer par des intégrations difficiles.
Une "carte de visite" et un langage en JSON
Le fonctionnement d'A2A est relativement simple. Chaque agent possède une "carte de visite". Elle dit qui est l’agent, ses capacités et la façon de le contacter. Chacun d’eux peut recevoir des demandes. Ils communiquent en JSON. Lorsque l’utilisateur humain effectue une demande, le coordinateur interroge en JSON les différents agents via les "agents cards", pour savoir qui peut l’aider à répondre. Il combine leur réponse afin de fournir une réponse à la requête de l’utilisateur.
Les cas pratiques sont nombreux. Par exemple, un agent coordinateur peut être chargé de trouver le bon médecin au bon moment. Il interroge dans ce but un agent "Médecin", qui connaît les différents types de praticiens disponibles, et un agent "calendrier", qui gère les créneaux disponibles.
On peut aussi imaginer un système de réservation de voyage. Quatre "experts" y tiendraient place : l’agent Vols pour la recherche de vols, l’agent Hôtels pour la recherche d'hébergement, l’agent Météo pour les prévisions météo et l’agent Coordinateur. L’utilisateur pourrait effectuer une requête comme : "Je veux partir à Rome le week-end prochain"
Installation de l’environnement
Pour ce tutoriel, nous allons construire un système composé de trois agents. Mais, avant de commencer à les utiliser, assurons-nous que l’environnement est prêt. Pour cela, nous vérifions que Python et pip, le gestionnaire de paquets, sont installés et configurés dans le PATH de notre système. Pour examiner cela, nous ouvrons un terminal PowerShell ou CMD sur Windows et tapons :
python –version pip --version
Au cas où Python n’est pas installé, on peut télécharger une version 3.7 ou supérieure depuis python.org.
Nous installons ensuite les dépendances, avec Flask et Requests. Le premier est un outil pour créer des serveurs web en Python. Dans notre cas, c'est ce qui permet aux agents d'écouter et de répondre aux requêtes. Le second permet d’envoyer des requêtes web en Python. Dans notre exemple, c'est ce qui permet au coordinateur de parler aux autres agents.
Dans le terminal, nous tapons :
pip install flask requests
Un fichier à télécharger et des commandes à écrire
Pour utiliser les agents, il suffit de charger le dossier "tutoriel_a2a_simple". Nous le décompressons dans le répertoire de notre choix. Celui-ci contient les différents agents dans les fichiers principaux.
L’agent Restaurant est un petit programme qui peut effectuer des recherches sur les restaurants en fonction de différents critères comme la ville. L’agent Météo fournit des prévisions météorologiques pour un lieu et une date donnés. L’agent Coordinateur est le "chef d'orchestre”. Il reçoit la requête de l'utilisateur et lui fournit une recommandation. Tous tournent sur l’ordinateur comme un mini-serveur web. Enfin, le fichier client_test permet de tester les agents via une interface en ligne de commande.
Pour lancer ces agents, nous ouvrons 4 terminaux différents. Pour le terminal 1 de l’agent Restaurant, nous tapons :
cd chemin/vers/tutoriel_a2a_simple/agent_restaurant python agent_restaurant.py
Le lancement est réussi. On voit la "carte de visite" de l'agent et l'adresse de son serveur.
Pour le terminal 2 correspondant à l’agent Météo, nous écrivons dans un nouveau terminal :
cd chemin/vers/tutoriel_a2a_simple/agent_meteo python agent_meteo.py
Le nouvel agent se présente également :
Pour le terminal 3 de l’agent coordinateur, nous mentionnons :
cd chemin/vers/tutoriel_a2a_simple/agent_coordinateur python agent_coordinateur.py
Cet agent gère bien les deux autres :
Indiquons qu’afin de vérifier que les agents fonctionnent, il est possible de mentionner dans le navigateur : http://localhost:10000/.well-known/agent.json pour le Restaurant, http://localhost:10001/.well-known/agent.json pour la Météo et http://localhost:10002/.well-known/agent.json pour le Coordinateur.
Fonctionnement de l’ensemble via A2A
Pour tester le fonctionnement de l’ensemble via A2A, nous ouvrons un quatrième terminal :
cd chemin/vers/tutoriel_a2a_simple/client_test python client_test.py
Cela doit permettre d’écrire une requête en langage naturel. Dans notre cas : "Je souhaiterais aller dans un bouchon lyonnais mercredi prochain à midi". On voit que les agents Météo et Restaurant sollicités fournissent une réponse.
Puis le coordinateur agrège les résultats et donne son retour :
Signalons que l’agent coordinateur n’a pas toujours répondu de façon satisfaisante lors de nos différents tests. Le protocole A2A doit tout de même donner une base solide pour créer un système où plusieurs agents "experts" collaborent. Ce cas d’usage simple peut en amener d’autres, plus ambitieux. Vous pouvez par exemple vous connecter à de vraies API au lieu de données simulées, ajouter une base de données, créer une interface web, utiliser un LLM pour comprendre les requêtes et déployer cela en ligne.




