ReAct, abréviation de « reasoning and acting » (raisonner et agir), est un schéma de prompting dans lequel un modèle alterne entre réfléchir à ce qu’il faut faire et le faire avec un outil. Il a été introduit par Yao et ses collègues en 2022, et c’est la boucle de base de la plupart des agents IA actuels.
La boucle
Un agent ReAct répète trois étapes jusqu’à pouvoir répondre.
- Pensée. Le modèle raisonne sur ce qu’il sait et sur ce dont il a besoin ensuite.
- Action. Il choisit un outil et les arguments avec lesquels l’appeler.
- Observation. L’application exécute l’outil et renvoie le résultat au modèle.
Puis le cycle recommence, l’observation faisant désormais partie du contexte.
Question: Is order 8841 eligible for a refund?
Thought: I need the order date and the refund window.
Action: get_order(order_id="8841")
Observation: {"date": "2026-09-02", "status": "delivered", "custom": false}
Thought: Delivered and not custom. I need the policy window.
Action: get_policy(topic="refunds")
Observation: "Refunds within 30 days of delivery, excluding custom items."
Thought: 36 days have passed, so it is outside the window.
Answer: No. The 30-day refund window ended on 2 October 2026.
Raisonner sans agir ne permet pas d’atteindre des faits extérieurs au modèle. Agir sans raisonner revient à appeler les outils à l’aveugle. Les entrelacer permet à chaque observation d’orienter la décision suivante.
ReAct avec l’appel d’outils moderne
La technique d’origine utilisait un format texte que l’application analysait. Les API actuelles des modèles intègrent l’appel d’outils : vous décrivez chaque outil par un nom, une description et un JSON Schema de ses paramètres, et le modèle renvoie une demande structurée d’appel d’un outil. La boucle est la même ; la plomberie est prise en charge par l’API.
L’ingénierie de prompts se déplace ainsi vers trois endroits.
1. Le prompt système
Décrivez l’objectif, les limites et le moment de s’arrêter.
You are an order support agent. Use the tools to answer questions
about a customer's orders.
- Look up facts with tools. Do not guess order details.
- Call a tool only when its result is needed for the answer.
- If a tool returns an error, try once more with corrected arguments,
then tell the customer what could not be checked.
- Never issue a refund above $200. Escalate instead.
- Stop and answer as soon as you have enough information.
2. Les descriptions d’outils
Un modèle choisit les outils uniquement d’après leurs descriptions. Traitez chaque description comme un prompt.
- Faible :
get_order: gets an order - Mieux :
get_order: Returns date, status, items, and total for one order. Use when the customer mentions an order number. Does not include payment details.
Dites ce que l’outil renvoie, quand l’utiliser et ce qu’il ne fait pas. Nommez clairement les paramètres et décrivez leurs formats.
3. Les résultats des outils
Les observations retournent dans le contexte, leur forme compte donc. Renvoyez des données compactes et étiquetées, pas une page HTML brute. Incluez un message d’erreur explicite sur lequel le modèle peut agir : « No order with that ID » est utile, une trace de pile ne l’est pas.
Modes de défaillance
Boucles. L’agent répète le même appel. Fixez un nombre maximal d’étapes et dites au modèle quoi faire quand il atteint la limite.
Abus d’outils. Il appelle des outils pour des choses qu’il connaît déjà. Indiquez quand ne pas appeler.
Mauvais arguments. Il invente un identifiant ou un format. Resserrez le schéma des paramètres et renvoyez des erreurs qui expliquent le format attendu.
Croissance du contexte. Chaque observation est relue à chaque étape, donc le coût croît avec le carré du nombre d’étapes. Élaguez ou résumez les anciennes observations. Voir l’optimisation des tokens.
Injection par les observations. Une page web ou un document renvoyé par un outil peut contenir des instructions. Le modèle peut les suivre. C’est de l’injection de prompt indirecte, et c’est le principal risque de sécurité des agents. Marquez les résultats d’outils comme des données, limitez ce que les outils peuvent faire et exigez une approbation pour les actions irréversibles.
Réponses prématurées. Il répond avant de vérifier. Exigez que les affirmations factuelles proviennent d’un résultat d’outil.
Quand utiliser ReAct
| Situation | Utilisez |
|---|---|
| Les étapes sont connues à l’avance | Une chaîne de prompts : moins chère et prévisible |
| Le chemin dépend de ce qui est trouvé | ReAct |
| La tâche exige des données en direct ou privées | ReAct avec des outils de recherche |
| La tâche agit dans d’autres systèmes | ReAct, avec approbation pour les actions risquées |
| Une seule recherche, puis une réponse | Une étape de recherche, pas une boucle |
Un agent est l’option la plus flexible et la plus difficile à rendre fiable. Utilisez-en un quand cette flexibilité est nécessaire.
Donner des outils aux agents avec MCP
Le Model Context Protocol est une façon standard d’offrir des outils à un agent, de sorte qu’un seul serveur d’outils fonctionne avec de nombreuses applications d’IA. Le serveur MCP PromptFlowEngine expose l’analyse, la restructuration et l’assainissement de prompts sous forme d’outils en lecture seule. Un agent peut les utiliser dans sa propre boucle, par exemple pour assainir le contexte avant de le transmettre, ou pour transformer une tâche vague en spécification avant de démarrer.
Pour la conception plus large des instructions d’agents, poursuivez avec les prompts pour agents IA.