BAA 101 · Chapitre 02
La boucle d'agent et ses sorties
Le principe
Un AgentUn programme qui utilise un modèle de langage pour décider quoi faire (chercher, appeler un outil, répondre, refuser), en boucle, avec des règles d'arrêt.Voir dans le glossaire → est une boucle : le modèle lit le message, choisit de répondre ou d’appeler un outil, lit le résultat, puis recommence. Une boucle se conçoit d’abord par ses sorties : on écrit comment elle s’arrête avant d’écrire ce qu’elle fait.
Pourquoi c’est important
Une boucle sans sorties tourne à vide, dépense sans limite, ou plante sur la première erreur d’outil. Et sans règles sur ce qui peut suivre quoi, un agent qui a décidé de refuser peut finir par répondre quand même.
Le mécanisme
- La boucle : message → modèle → Appel d'outilLa demande du modèle d'exécuter un outil avec des arguments précis. C'est lui qu'on lit dans la trace, pas la réponse finale.Voir dans le glossaire → → résultat → modèle → … → réponse. Un framework peut la faire tourner pour vous, ou vous l’écrivez ; dans les deux cas, ses sorties sont à vous.
- Les sorties d’abord : une réponse, un appel identique au précédent, un BudgetLe nombre maximal d'appels qu'une boucle d'agent peut faire, vérifié avant chaque appel, jamais après.Voir dans le glossaire → atteint, une erreur d’outil.
- Le budget se compte avant l’appel, jamais après : il n’y a jamais un appel de trop.
- Chaque arrêt dit pourquoi, en une phrase lisible.
- Les transitions sont déclarées : une table « état + événement → état suivant ». Ce qui n’y figure pas est refusé, et l’état ne bouge pas.
- La forme se choisit en comptant : une chaîne fixe coûte un appel au modèle, une boucle un appel plus un éventuel réessai, une réflexion deux à trois.
Sur le terrain
- AWS Scholars, chapitre 2 : l’agent choisit un outil, le framework l’exécute, le résultat revient au modèle, jusqu’à la réponse finale. Un outil absent ne fait pas planter la boucle : il manque, tout simplement.
- Dev3Pack, Session 5 : une boucle à quatre sorties. Le premier essai du bot plantait sur un outil inconnu au lieu de le refuser.
- Dev3Pack, Session 8 : aucune flèche ne mène de « refuser » à « répondre », donc un RefusUne réponse explicite « je ne peux pas répondre » : pas de citation, confiance nulle, relecture humaine. Un état, pas un crash.Voir dans le glossaire → ne devient jamais une réponse.
La question à se poser
Comment cette boucle s’arrête-t-elle, et que lit-on quand elle s’arrête ?