Skip to content

02Reactloop

mmorge edited this page Oct 9, 2026 · 2 revisions

Mise en œuvre de la boucle ReAct

Dans cette partie, vous allez implémenter une boucle ReAct (Reasoning + Acting), un schéma central en IA agentique.

La boucle ReAct consiste à itérer les étapes suivantes :

  1. raisonnement. Le modèle analyse l’état courant, interprète la requête de l’utilisateur et détermine la prochaine action à effectuer. Cette étape est entièrement déléguée au LLM ;
  2. action. Le système appelle un outil externe (appel d’API, exécution de code, etc.) en lui fournissant les paramètres appropriés ;
  3. observation. Le résultat de l’action est récupéré puis injecté dans le contexte, afin d’enrichir la prochaine phase de raisonnement.

Ce cycle est répété de manière itérative jusqu’à ce que le modèle produise une réponse finale explicite, généralement sous la forme Final Answer.

Implémenter les outils

Tout d’abord, vous devez spécifier les actions qui peuvent être réalisées par un agent dans l’environnement durant la phase action. Ces opérations, appelées des outils (tools), sont implémentées dans le fichier tools.py. Elles permettent de réaliser une recherche web (search_web), d’obtenir un article Wikipédia (fetch_wikipedia) ou de réaliser un calcul (calculate). Le fichier contient également un outil execute_python, qui ne sera utilisé que dans la dernière partie du tutoriel.

Tester les outils

Testez les trois premiers outils à l’aide du script test_tools.py pour répondre aux questions suivantes :

  • Quelle est la taille de population du Japon en 2024 ?
  • Dans quel établissement Alan Turing a-t-il obtenu son doctorat ?
  • Combien vaut 294 / 7 ?

Implémenter la boucle ReAct

Afin de définir la boucle ReAct, les instructions prompt.md (prompt) transmises au LLM pour la phase de raisonnement précisent :

  • le format des réponses attendues, afin d’analyser ces réponses et d’appeler les outils ;
  • les règles à suivre dans la construction de la chaîne de pensée (thought).

Dans le fichier agent.py,

  • la fonction parse_thought(text: str) extrait la chaîne de pensée de la réponse du LLM ;
  • la fonction parse_action(text: str) extrait le nom de l’outil et l’argument de la réponse.

Dans le fichier agent.py, la fonction react_agent(question: str, max_steps: int = 6) implémente la boucle ReAct en alternant, à chaque étape, un appel au LLM pour raisonner sur la question et un appel à un outil externe pour collecter une observation, jusqu’à obtenir une réponse finale ou atteindre le nombre maximum d’étapes.

Tester la boucle ReAct

En exécutant le script test_react_Tokyo.py testez votre agent avec la question suivante : What is the population of Tokyo in 2024 and how many times bigger is it compared to the population of Paris?

Les systèmes agentiques sont non déterministes. Même à température nulle, le modèle peut produire des réponses différentes d’une exécution à l’autre en raison du parallélisme matériel et de la phase de réflexion interne. De plus, les outils externes tels que la recherche web ne garantissent pas des résultats identiques dans le temps.

En exécutant le script test_react_NewYork.py testez votre agent avec la question suivante : What is the average height of the tallest 10 buildings in New York City?

La plupart des LLM modernes ont internalisé le pattern ReAct durant la phase de fine-tuning et tendent naturellement à enchaîner plusieurs Thought-Action en une seule génération. C’est pourquoi le prompt doit explicitement leur interdire de produire plus d’une paire Thought-Action par réponse.

Les LLM peuvent aussi court-circuiter certains outils. Par exemple, un modèle capable d’arithmétique peut calculer directement sans appeler calculate. C’est pourquoi la règle 6 du prompt impose le passage par l’outil : You must never compute numerical results yourself — any arithmetic (…) MUST be delegated to the calculate tool via an Action. Retirez temporairement cette règle et observez la différence.

En exécutant le script test_react_weather.py testez votre agent avec la question suivante : What are the top 3 most visited cities in the world according to recent rankings, and what is the current temperature in each of them?

Aucun outil météorologique n’est fourni à l’agent : observez comment il s’adapte. Selon les exécutions, il contourne la limite en cherchant les températures sur le web avec search_web (au risque de relever des valeurs obsolètes), ou il reconnaît qu’il ne peut pas répondre à cette partie de la question. Ce test illustre que les capacités d’un agent sont bornées par les outils mis à sa disposition.

De même, fetch_wikipedia attend un titre d’article exact (e.g. “Alan Turing”) et non une phrase. Le prompt doit préciser ce format attendu. Au lieu de décrire les outils dans le prompt en texte libre, les architectures modernes utilisent des serveurs MCP (Model Context Protocol), qui exposent les outils sous un schéma JSON structuré que le LLM peut invoquer directement via le protocole.

Clone this wiki locally