Aller au contenu principal
ReAct vs Plan-and-Execute vs LATS : 3 patterns, 1 bench
Retour au blog
IA

ReAct vs Plan-and-Execute vs LATS : 3 patterns, 1 bench

Patrice Huetz11 avril 20266 min

Trois patterns d'agents dominent le paysage des agents LLM depuis 2024 : ReAct, Plan-and-Execute et LATS (Language Agent Tree Search). Chaque pattern a ses fans, ses benchmarks officiels, et ses haters. Moi, je voulais savoir lequel tient vraiment la route quand on les pose sur les mêmes 4 tâches avec le même modèle sous-jacent. Verdict après 80 runs et 37 $ de facture : le résultat est beaucoup moins clair que les tutoriels veulent bien le dire. Voici mon benchmark complet.

Les 3 patterns en 30 secondes chacun

🔒

Soutenez mon travail sur Patreon

Accès anticipé aux articles, contenu exclusif, et la satisfaction de soutenir un auteur indépendant.

Rejoindre — à partir de 3€/mois

ReAct (Reason + Act) : l'agent alterne « réfléchis » / « agis ». Pattern le plus simple, le plus ancien, le plus utilisé. Chaque tour = une pensée + une action + une observation. Boucle jusqu'à stop.

Plan-and-Execute : l'agent commence par produire un plan complet (5-10 étapes) avant d'agir. Puis il exécute chaque étape. Si une étape échoue, il replanifie.

LATS : variation tree search sur ReAct. L'agent explore plusieurs branches d'actions en parallèle, évalue chaque branche avec un scoring, et choisit la meilleure. Théoriquement supérieur, pratiquement coûteux.

Les 4 tâches test

TâcheTypeTool calls attendusComplexité
T1 — Debug un test qui échoueCoding4-8Faible
T2 — Ajouter un endpoint REST completCoding8-15Moyenne
T3 — Analyser un CSV et produire un rapportData6-12Moyenne
T4 — Refactorer un module de 500 lignesCoding15-30Élevée

Chaque tâche est lancée 20 fois par pattern avec le même modèle (Claude Sonnet 4.5, température 0,3). Budget max 3 $ par run.

Les résultats bruts

ReAct vs Plan-and-Execute vs LATS — résultats
ReAct vs Plan-and-Execute vs LATS — résultats

Taux de succès (task complete + tests verts)

TâcheReActPlan-and-ExecuteLATS
T1 — Debug test95%85%90%
T2 — Endpoint REST70%85%75%
T3 — Analyse CSV80%90%85%
T4 — Refactor module55%70%80%
Moyenne75%82,5%82,5%

Coût moyen par run (USD)

TâcheReActPlan-and-ExecuteLATS
T10,140,190,38
T20,420,511,24
T30,310,380,96
T41,180,952,87
Moyenne0,510,511,36

Latence moyenne (secondes)

PatternT1T2T3T4Moyenne
ReAct18523414863
Plan-and-Execute24614211861
LATS4713488312145

Les 3 enseignements contre-intuitifs

Enseignement 1 : ReAct gagne sur les tâches simples

Sur T1 (debug test), ReAct a un taux de succès de 95% — meilleur que les deux autres. Pourquoi ? Parce qu'un debug simple est un aller-retour rapide avec l'environnement : lance le test, lis l'erreur, fix, relance. Plan-and-Execute perd du temps à produire un plan que le premier tool call rend obsolète. LATS perd du temps à explorer des branches inutiles.

Leçon : sur les tâches courtes (< 10 tool calls), la simplicité de ReAct bat les patterns plus sophistiqués.

Enseignement 2 : Plan-and-Execute brille sur les tâches cadrées

Sur T2 (endpoint REST) et T3 (CSV), Plan-and-Execute gagne. Ces deux tâches ont une structure claire : il y a un « bon » plan qu'on peut produire à l'avance, puis il suffit de l'exécuter. ReAct, qui improvise, rate souvent une étape (oublie d'ajouter la validation, oublie de tester les cas d'erreur). LATS explore trop.

Leçon : sur les tâches structurées où un plan est devinable à l'avance, Plan-and-Execute bat ReAct de 10-15 points.

Enseignement 3 : LATS ne vaut le coup que sur les tâches très dures

Sur T4 (refactor d'un module complexe), LATS gagne nettement — 80% vs 70% (PaE) vs 55% (ReAct). Mais au prix de 2,87 $ par run contre 0,95-1,18 $ pour les autres. Soit un surcoût de 2,4× pour +10 points de succès.

Leçon : LATS ne se justifie que si tu es prêt à payer 3× pour gagner 10 points, et seulement sur des tâches très complexes (>15 tool calls).

Ma matrice de décision

Après 80 runs, voici ma règle simple :

Complexité tâchePattern recommandéRaison
Triviale (1-5 tool calls)ReActOverhead des autres > gain
Standard (5-15 tool calls)Plan-and-ExecuteStructure + exécution = sweet spot
Complexe et critique (>15 tool calls)LATSLe surcoût vaut le taux de succès
Exploratoire / vagueReActImprovisation > plan rigide

Un pattern hybride qui marche encore mieux

Pendant mes tests, j'ai essayé une combinaison : produire un plan rapide (3 étapes max, via Plan-and-Execute), puis exécuter chaque étape en mode ReAct. Sur mes 4 tâches, ce hybride a donné un taux de succès moyen de 87%, meilleur que n'importe quel pattern seul, pour un coût équivalent à Plan-and-Execute.

python
def hybrid_agent(task):
    plan = produce_plan(task, max_steps=3)  # une seule fois
    for step in plan:
        react_loop(step, max_iterations=10)

C'est devenu mon défaut depuis 2 mois.

💡
Commence toujours par un plan court (2-3 étapes max). Les longs plans générés d'avance deviennent obsolètes dès la première action.
⚠️
LATS est sexy sur le papier, mais en prod tu payeras 2-3× plus cher pour un gain marginal sur la plupart des workloads.

Ce qu'il faut retenir

  1. 1.Aucun pattern n'est universellement meilleur — chaque tâche a son sweet spot.
  2. 2.ReAct gagne sur les tâches courtes, Plan-and-Execute sur les tâches structurées, LATS sur les tâches complexes critiques.
  3. 3.LATS coûte 2-3× plus cher pour des gains marginaux sauf sur les tâches très longues.
  4. 4.Un hybride Plan (court) + ReAct est souvent meilleur que n'importe lequel des 3 purs.

Pour aller plus loin sur l'architecture de chacun de ces patterns et leur implémentation en Python avec LangGraph, j'ai écrit un guide complet :

Agents LLM en Python
Agents LLM en Python

Des agents qui marchent. En Python.

Découvrir →
🔒

Soutenez mon travail sur Patreon

Accès anticipé aux articles, contenu exclusif, et la satisfaction de soutenir un auteur indépendant.

Rejoindre — à partir de 3€/mois

Commentaires

Chargement des commentaires...

Laisser un commentaire