6 — Les protocoles d’interaction
Vous savez maintenant envoyer et recevoir des messages individuels. Mais dans la réalité, les agents ne s’envoient pas des messages isolés — ils ont des conversations structurées qui suivent des règles précises. C’est ce qu’on appelle un protocole.
Qu’est-ce qu’un protocole ?
Un protocole est un scénario de conversation convenu à l’avance entre plusieurs agents. Il définit :
Qui parle en premier et avec quelle performative
Quelles réponses sont attendues à chaque étape
Comment la conversation se termine (succès, refus, timeout…)
Pensez à un protocole comme à un formulaire administratif : tout le monde sait dans quel ordre remplir les cases, ce que signifie chaque case, et quand le formulaire est complet. Sans ce cadre commun, chaque échange serait à réinventer de zéro.
Sans protocole — deux agents doivent inventer leur propre langage :
Alice → Bob : "calcule 6 * 7"
Bob → Alice : "42"
Alice → Bob : "c'est quoi 42 ?" ← ambiguïté : est-ce la réponse ?
Avec un protocole — le déroulement est prévisible pour tout le monde :
Alice → Bob : REQUEST "calcule 6 * 7" ← demande formelle
Bob → Alice : INFORM "42" ← réponse formelle
→ les deux agents savent exactement ce que signifie chaque message
Pourquoi les protocoles existent-ils ?
Dans un système avec de nombreux agents qui ne se connaissent pas forcément, les protocoles garantissent l”interopérabilité : un agent conçu par une équipe peut parler à un agent conçu par une autre équipe, du moment qu’ils respectent le même protocole.
C’est la même logique qu’un standard de communication humain : quand vous appelez un médecin, la consultation suit un protocole implicite (symptômes → diagnostic → ordonnance). Chacun sait ce qui vient ensuite.
Les protocoles disponibles dans gAgent
gAgent implémente trois protocoles standardisés par FIPA. Chacun est fourni sous forme de behaviours prêts à l’emploi — vous n’avez pas à gérer les échanges de messages manuellement.
Protocole |
Cas d’usage typique |
Behaviours disponibles |
|---|---|---|
Request |
Demander à un agent d’effectuer une action et attendre sa réponse |
|
Contract Net |
Confier une tâche au meilleur candidat parmi plusieurs agents |
|
Subscribe-Notify |
Recevoir des notifications automatiques à chaque changement d’état |
|
Comment gAgent simplifie les protocoles
Sans framework, implémenter un protocole demande de gérer soi-même l’envoi de chaque message, les timeouts, les cas d’erreur, le suivi des conversations… C’est long et source de bugs.
Avec gAgent, chaque protocole est encapsulé dans un behaviour. Vous n’implémentez que la logique métier — ce qui est spécifique à votre application — et le framework gère le reste :
┌─────────────────────────────────────────────────┐ │ Votre logique métier │ │ (que proposer ? comment choisir ? quoi faire ?)│ └───────────────┬─────────────────────────────────┘ │ vous implémentez uniquement ces méthodes ┌───────────────▼─────────────────────────────────┐ │ Behaviour gAgent (ContractNetInitiator, etc.) │ │ (envoi des CFP, attente des réponses, │ │ gestion des timeouts, accept/reject...) │ └─────────────────────────────────────────────────┘Les trois tutoriels suivants présentent chaque protocole en détail.