Un deck qu'on m'a envoyé récemment décrivait un AI agent pour l'administration de base de données. Diagrammes propres, boucle d'appel d'outils, seuil de confiance, escalade humaine. Les slides étaient bonnes. Le pattern, c'était ReAct, publié par Yao et al. en octobre 2022. Le deck ne le disait juste pas.
C'est la partie du cycle de hype IA que je trouve épuisante. Un pattern académique connu reçoit un nouveau nom, un logo de fournisseur, un cas d'usage, et d'un coup c'est une innovation. L'exemple DBA dans ces slides était une illustration correcte. Le pattern lui-même était plus vieux que la majorité des boîtes qui le vendent comme pointe de la technologie.
Ce qu'est réellement ReAct
ReAct signifie Reasoning + Acting. C'est une boucle. Le LLM produit une pensée sur ce qu'il faut faire ensuite, choisit une action dans une whitelist d'outils, l'action s'exécute, le résultat revient sous forme d'observation, et cette observation alimente la pensée suivante. On rince et on répète jusqu'à ce que le modèle décide que la tâche est terminée.
Thought: I need to check if the orders table is locked.
Action: run_sql("SELECT pid FROM pg_locks WHERE relation = 'orders'::regclass")
Observation: [{"pid": 3421}]
Thought: There is a lock held by pid 3421. I should check what query is running.
Action: run_sql("SELECT query FROM pg_stat_activity WHERE pid = 3421")
Observation: [{"query": "UPDATE orders SET ... WHERE created_at < ..."}]
Thought: Long-running update. I should escalate before killing it.
Action: notify_slack("DBA: long UPDATE on orders, pid 3421, need decision")
Observation: Message delivered to #oncall
Thought: Done. Writeback the incident.C'est tout. Le pattern entier. Tout le reste dans les slides, les triggers, la whitelist d'outils, l'échappatoire basée sur la confiance, c'est de l'échafaudage autour de cette boucle. De l'échafaudage important, mais de l'échafaudage.
Pourquoi le repackaging fonctionne
La raison pour laquelle ReAct n'arrête pas d'être redécouvert, c'est que le papier original était académique. Des exemples de prompts, quelques tâches de benchmark, aucune histoire de guerre en production. Les fournisseurs et consultants prennent ce noyau académique, l'emballent dans un domaine (DBA, security ops, support client, IT interne), ajoutent leur boîte à outils, et le livrent comme produit.
Je ne suis pas contre. Transformer un papier en produit utilisable, c'est du vrai travail. Le problème, c'est quand le wrapper de domaine est vendu comme l'innovation, et vous finissez par payer pour une boucle ReAct enveloppée autour d'une whitelist d'outils que votre équipe aurait pu construire en une semaine.
Ce que les présentations d'agent niveau débutant omettent habituellement
Si vous regardez un pitch ou une talk sur les agents et qu'ils couvrent uniquement la boucle, les outils et l'échappatoire, voici ce sur quoi je les poussé. Ce sont les parties qui séparent une démo qui marche d'un agent qui survit en production.
La mémoire manque souvent
La boucle a un scratchpad. Ce scratchpad, c'est la mémoire court terme de la session. D'accord. Mais qu'est-ce qui se passe demain quand un incident similaire tombe ? Si l'agent ne lit pas et n'écrit pas dans un store persistant, il est réactif, il n'apprend pas. La plupart des decks intro sautent ça entièrement. J'ai un post séparé sur l'architecture de mémoire parce que ce n'est pas une seule chose, c'est cinq couches.
Le contexte grossit à chaque itération
Chaque pensée, action et observation retourne dans le prompt de l'itération suivante. Dix boucles plus tard, vous payez pour un prompt avec dix pensées, dix appels d'outils et dix observations. Vingt boucles plus tard, vous tapez le plafond de votre fenêtre de contexte ou de votre budget. Les decks ne montrent jamais le coût en tokens par exécution. Demandez-le.
L'évaluation est balayée d'un revers de main
Les systèmes non déterministes ont besoin de harnais d'évaluation. Comment savez-vous qu'un changement dans le system prompt n'a pas régressé le comportement sur un ensemble d'incidents connus ? Si le pitch n'a pas de replay de golden-set ou un moyen de comparer les décisions entre versions, c'est un prototype habillé en produit.
Comment évaluer un pitch d'agent sans être cette personne-là
Je ne suggère pas d'entrer dans chaque réunion fournisseur en criant à propos du papier de Yao. Le pattern est utile, la productisation a une vraie valeur, et les développeurs grognons qui disent « c'est juste ReAct » sont la raison pour laquelle on arrête de nous inviter aux réunions. Mais il y a quatre questions qui révèlent si l'équipe qui vous vend l'agent sait ce qu'elle fait.
- Qu'arrive-t-il au contexte à la boucle 20 ? S'ils n'ont pas de stratégie de résumé ou de troncature, l'agent meurt ou brûle de l'argent dans les longues sessions.
- Où vit la mémoire ? Session-only convient aux agents simples. Pour tout ce qui est opérationnel, je veux voir un store long terme et un chemin de synchronisation vers celui-ci.
- Comment empêchez-vous une action confidemment fausse ? Whitelist plus dry-run plus seuil de confiance, c'est un minimum. Sans ça, l'agent fera quelque chose que vous ne pourrez pas annuler.
- Comment évaluez-vous les changements ? Un changement de system prompt, c'est un changement de comportement. Sans un harnais de régression, vous livrez au feeling.
Le pattern date de 2022. Le hype date de mardi dernier. Évaluez l'implémentation, pas la brochure.
Ce que ça veut réellement dire pour vous
Si vous évaluez un produit d'agent, vous connaissez maintenant la baseline. Si vous en construisez un, vous savez maintenant où sont les problèmes intéressants. La boucle n'est pas la partie difficile. Les parties difficiles sont la mémoire, l'évaluation, le contrôle des coûts et la récupération après de mauvaises décisions. Quiconque vous dit le contraire vous vend l'échafaudage en l'appelant la maison.
Références
- ReAct: Synergizing Reasoning and Acting in Language Models, Yao et al., 2022: https://arxiv.org/abs/2210.03629
- Prompt Engineering Guide, section ReAct: https://www.promptingguide.ai/techniques/react
- Concepts d'agent de LangGraph: https://langchain-ai.github.io/langgraph/concepts/agentic_concepts/