C’est la panne la plus courante d’un agent, et elle a des causes identifiables. La réponse attendue est un diagnostic, pas « j’augmente la limite de tours ».
Il faut la trace tour par tour : quel outil a été appelé, avec quels arguments, ce qui a été renvoyé. Sans elle, on ne diagnostique rien — et si elle n’existe pas, c’est le premier correctif à apporter.
La question à se poser en la lisant : qu’est-ce que l’agent a appris à ce tour ? Une boucle signifie qu’il n’apprend rien. Il faut trouver pourquoi.
L’observation ne porte pas d’information. Un outil qui renvoie une liste vide, un null, ou un message technique incompréhensible. L’agent ne sait pas si sa requête était mauvaise ou si le résultat est réellement vide, alors il réessaie. C’est de loin la cause première.
Le correctif est dans l’outil : renvoyer « aucun client trouvé avec ce nom, essayez une recherche partielle » plutôt que []. On informe la décision suivante au lieu de la laisser sans appui.
L’erreur d’outil est opaque. Une trace de pile Python renvoyée brute n’aide pas. Un message explicite — « le paramètre date doit être au format ISO, reçu 14/03/2026 » — se corrige au tour suivant.
L’objectif est inatteignable et l’agent n’a pas le droit d’abandonner. L’information demandée n’existe pas dans le système. Sans issue déclarée, l’agent persévère indéfiniment. Il faut lui donner un moyen explicite de conclure à l’échec, et le valoriser dans l’invite.
Le critère de réussite est absent. L’agent a en réalité terminé mais ne le sait pas, alors il vérifie, revérifie, reformule. Il faut dire dans l’invite ce qui constitue une réponse complète.
Deux outils se renvoient la balle. L’agent alterne entre chercher et lire sans jamais progresser, souvent parce que les deux descriptions se chevauchent.
Le contexte a saturé et l’agent a perdu de vue ce qu’il avait déjà essayé. Il refait au tour douze ce qu’il a fait au tour trois. C’est un problème de gestion de contexte, pas de raisonnement.
Elles ne corrigent pas la cause, elles bornent le dégât — et il faut le dire ainsi.
Augmenter la limite de tours. C’est le réflexe, et il transforme un échec rapide en échec coûteux.
Ajouter « ne tourne pas en boucle » dans l’invite. L’agent ne boucle pas par choix : il boucle parce que rien dans ce qu’il reçoit ne lui indique d’autre voie.
Une boucle est presque toujours le symptôme d’un outil qui communique mal, pas d’un modèle défaillant. C’est une bonne nouvelle : le correctif est dans du code que vous contrôlez.