La boucle outil-réponse enchaîne les échanges : le modèle demande un outil, l'application l'exécute et renvoie le résultat, puis le modèle répond ou demande un autre outil. Elle s'arrête quand le modèle produit une réponse finale ou qu'une limite d'étapes est atteinte.
Exemple
while step < MAX_STEPS:
rep = model(messages)
if not rep.tool_calls: break