Le cadre ReAct : réfléchir, agir, observer
Comprenez la boucle ReAct : le modèle génère une Thought, choisit une Action, reçoit une Observation, puis recommence jusqu’à parvenir à une Final Answer.
Le cadre ReAct : réfléchir, agir, observer est une leçon AI Engineering Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Engineering Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Engineering Academy comprend 4 leçons au total.
Qu'est-ce que le framework ReAct ?
ReAct (raisonnement + action) est un framework de formulation d'invites qui alterne le raisonnement interne du modèle et les actions externes. Au lieu de produire immédiatement une réponse finale, le modèle génère une réflexion, choisit une action, reçoit une observation après l'exécution de cette action, puis répète le cycle jusqu'à pouvoir fournir une réponse finale.
La boucle Réfléchir-Agir-Observer
Chaque itération de la boucle ReAct comporte trois phases :
- Réflexion : le modèle raisonne sur ce qu'il sait et sur ce qu'il doit découvrir ensuite.
- Action : le modèle appelle un outil — par exemple une recherche sur le Web, une calculatrice ou une recherche dans une base de données.
- Observation : le résultat de l'appel de l'outil est renvoyé et ajouté au contexte du modèle.
La boucle continue jusqu'à ce que le modèle émette Final Answer: avec sa conclusion.
Exemple de trace ReAct
Voici la trace concrète d'un agent ReAct répondant à la question « Quelle est la population de Tokyo ? » à l'aide d'un outil de recherche. Remarquez comment chaque étape s'appuie sur l'observation précédente.
# ReAct trace (pseudocode showing the reasoning loop)
# Iteration 1
Thought_1 = 'I need to find the current population of Tokyo. I will search for it.'
Action_1 = 'search("Tokyo population 2024")'
Observation_1 = 'According to the 2023 census, Tokyo has approximately 13.96 million people in the city proper.'
# Iteration 2
Thought_2 = 'I have the population. I can now give a final answer.'
Final_Answer = 'The population of Tokyo is approximately 13.96 million people.'Pourquoi ReAct est plus performant que la formulation d'invites directe
La formulation d'invites directe demande au modèle de répondre à partir de sa mémoire, ce qui entraîne des hallucinations pour les questions factuelles. La formulation d'invites par chaîne de raisonnement améliore le raisonnement, mais ne permet toujours pas d'accéder à des informations externes. ReAct combine les deux : des traces de raisonnement explicites, comme avec la chaîne de raisonnement, et la possibilité de recueillir des informations récentes grâce aux appels d'outils.
Structure d'une invite ReAct
L'invite système ReAct enseigne au modèle le format exact à utiliser. Elle répertorie les outils disponibles avec leur description et montre des exemples du modèle Réflexion/Action/Observation/Réponse finale. Le modèle apprend à suivre précisément ce format à partir de l'invite.
REACT_SYSTEM_PROMPT = '''You are an AI assistant with access to these tools:
- search(query: str): Search the web for up-to-date information.
- calculator(expression: str): Evaluate a mathematical expression.
- lookup(topic: str): Look up a topic in the knowledge base.
Always follow this exact format:
Thought: [your reasoning about what to do next]
Action: tool_name(arguments)
Observation: [result of the action, provided by the system]
... (repeat as needed)
Final Answer: [your final response to the user]
Begin!'''Analyser la réflexion, l'action et l'observation
Le code de votre application joue le rôle de l'environnement d'exécution de la boucle ReAct. Après chaque réponse du modèle, analysez la sortie pour extraire le nom et les arguments de l'action, exécutez la fonction Python correspondante, formatez le résultat comme une observation, ajoutez-le à l'historique des messages, puis appelez à nouveau le modèle.
import re
def parse_react_output(text: str):
'''Extract action name and argument from a ReAct model output.'''
action_match = re.search(r'Action:\s*(\w+)\((.*)\)', text)
if action_match:
tool_name = action_match.group(1)
tool_input = action_match.group(2).strip('\"\' ')
return tool_name, tool_input
if 'Final Answer:' in text:
answer = text.split('Final Answer:')[-1].strip()
return 'final', answer
return None, NoneLa boucle d'exécution de l'agent
La boucle d'exécution appelle le LLM, analyse sa sortie, distribue l'outil, ajoute l'observation, puis recommence. Une protection max_iterations empêche les boucles infinies lorsque le modèle ne parvient pas à résoudre une tâche.
from openai import OpenAI
client = OpenAI()
def run_react_agent(user_query: str, tools: dict, max_iterations: int = 10) -> str:
messages = [
{'role': 'system', 'content': REACT_SYSTEM_PROMPT},
{'role': 'user', 'content': user_query}
]
for i in range(max_iterations):
resp = client.chat.completions.create(model='gpt-4o', messages=messages)
output = resp.choices[0].message.content
messages.append({'role': 'assistant', 'content': output})
tool_name, tool_input = parse_react_output(output)
if tool_name == 'final':
return tool_input
if tool_name and tool_name in tools:
observation = tools[tool_name](tool_input)
messages.append({'role': 'user', 'content': f'Observation: {observation}'})
else:
messages.append({'role': 'user', 'content': 'Observation: Tool not found.'})
return 'Max iterations reached without a final answer.'Enregistrer des outils simples
Les outils ne sont que des fonctions Python. Vous les enregistrez dans un dictionnaire associant le nom de l'outil à la fonction. Les fonctions reçoivent un argument chaîne et renvoient un résultat chaîne — cela maintient une interface simple et cohérente avec ce que le modèle s'attend à recevoir comme observations.
import math
def calculator_tool(expression: str) -> str:
try:
# Restrict to safe math expressions
allowed_names = {k: v for k, v in math.__dict__.items() if not k.startswith('_')}
result = eval(expression, {'__builtins__': {}}, allowed_names)
return str(result)
except Exception as e:
return f'Error: {e}'
def search_tool(query: str) -> str:
# Stub — replace with real web search API
return f'Top result for "{query}": [placeholder result]'
# Register tools
tools = {
'calculator': calculator_tool,
'search': search_tool
}Raisonnement à plusieurs étapes avec ReAct
ReAct est particulièrement efficace pour les questions à plusieurs étapes qui nécessitent d'enchaîner plusieurs informations. Par exemple : « Qui est le CEO de l'entreprise qui crée GPT-4, et en quelle année cette entreprise a-t-elle été fondée ? » L'agent commence par rechercher le CEO, puis utilise ce résultat pour trouver l'année de fondation de l'entreprise — deux appels d'outils distincts enchaînés par le raisonnement.
ReAct contre la chaîne de raisonnement seule
La chaîne de raisonnement (CoT) améliore le raisonnement en faisant réfléchir le modèle étape par étape, mais elle ne permet pas d'accéder à des informations externes. ReAct ajoute des actions à CoT, ce qui permet au modèle de récupérer des données réelles, d'effectuer des calculs et de vérifier des faits. En contrepartie, ReAct est plus lent (plusieurs appels d'API), mais bien plus précis pour les tâches nécessitant des connaissances récentes ou spécialisées.
Déboguer ReAct avec des traces
Lorsqu'un agent ReAct produit une réponse incorrecte, examinez la trace complète Réflexion/Action/Observation. Parmi les problèmes courants : le modèle invente une observation au lieu d'appeler l'outil, des erreurs d'analyse ignorent l'exécution de l'outil, ou un raisonnement incorrect lors de l'étape de réflexion entraîne un mauvais choix d'action.
- Consignez chaque message ajouté au contexte
- Vérifiez que la sortie de l'outil a bien été ajoutée avant l'appel suivant au modèle
- Vérifiez que l'expression régulière de l'action correspond au format de sortie du modèle
Vérification rapide
Testez votre compréhension du framework ReAct.
Récapitulatif de la leçon
Dans cette leçon, vous avez appris que : ReAct alterne Réflexion, Action et Observation dans une boucle, le code de votre application joue le rôle de l'environnement d'exécution qui exécute les outils et ajoute les observations, et les protections max_iterations empêchent les boucles infinies des agents. Nous allons maintenant apprendre à définir des outils personnalisés afin que votre agent puisse accomplir exactement ce dont votre application a besoin.
Apprends Python avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 30
- Leçons
- 120
Questions Fréquemment Posées
La leçon « Le cadre ReAct : réfléchir, agir, observer » est-elle gratuite ?
Oui — le texte complet de « Le cadre ReAct : réfléchir, agir, observer » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Engineering Academy, passe à CoddyKit PRO. Le cours AI Engineering Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Le cadre ReAct : réfléchir, agir, observer » ?
Comprenez la boucle ReAct : le modèle génère une Thought, choisit une Action, reçoit une Observation, puis recommence jusqu’à parvenir à une Final Answer. Tu pratiques AI Engineering Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer AI Engineering Academy ?
Aucune expérience préalable n'est requise. AI Engineering Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Le cadre ReAct : réfléchir, agir, observer » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon AI Engineering Academy ?
Oui. Chaque leçon AI Engineering Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Le cadre ReAct : réfléchir, agir, observer
- Définir des outils pour votre Agent
- Construire un Agent ReAct avec LangChain
- Gérer les échecs et les boucles des agents