<overview> LangChain, LangGraph et Deep Agents sont en couches, non pas des choix concurrents. Chacun s'appuie sur celui en dessous :
┌─────────────────────────────────────────┐
│ Deep Agents │ ← niveau le plus élevé : batterie incluse
│ (planning, memory, skills, files) │
├─────────────────────────────────────────┤
│ LangGraph │ ← orchestration : graphes, boucles, état
│ (nodes, edges, state, persistence) │
├─────────────────────────────────────────┤
│ LangChain │ ← fondation : modèles, outils, chaînes
│ (models, tools, prompts, RAG) │
└─────────────────────────────────────────┘
Choisir une couche supérieure ne vous coupe pas des couches inférieures — vous pouvez utiliser des graphes LangGraph dans Deep Agents, et les primitives LangChain dans les deux.
Cette skill doit être chargée au début de tout projet avant de sélectionner d'autres skills ou d'écrire du code agent. Le framework que vous choisissez détermine quelles autres skills invoquer ensuite. </overview>
Guide de décision
<decision-table>
Répondez à ces questions dans l'ordre :
| Question | Oui → | Non → |
|---|---|---|
| La tâche nécessite-t-elle de diviser le travail en sous-tâches, gérer des fichiers sur une longue session, une mémoire persistante, ou charger des skills à la demande ? | Deep Agents | ↓ |
| La tâche nécessite-t-elle un flux de contrôle complexe — boucles, embranchements dynamiques, workers parallèles, humain dans la boucle, ou état personnalisé ? | LangGraph | ↓ |
| S'agit-il d'un agent à usage unique qui prend une entrée, exécute des outils et retourne un résultat ? | LangChain (create_agent) |
↓ |
| S'agit-il d'un appel de modèle pur, d'une chaîne, ou d'un pipeline de récupération sans boucle agent ? | LangChain (chain) | — |
</decision-table>
Profils de framework
<langchain-profile>
LangChain — Utilisez quand la tâche est ciblée et autonome
Idéal pour :
- Les agents à usage unique qui utilisent un ensemble fixe d'outils
- Les pipelines RAG et les Q&A sur documents
- Les appels de modèles, les templates de prompts, l'analyse de résultats
- Les prototypes rapides où la logique de l'agent est simple
Pas idéal quand :
- L'agent doit planifier sur de nombreuses étapes
- L'état doit persister sur plusieurs sessions
- Le flux de contrôle est conditionnel ou itératif
Skills à invoquer ensuite : langchain-models, langchain-rag, langchain-middleware
</langchain-profile>
<langgraph-profile>
LangGraph — Utilisez quand vous devez maîtriser le flux de contrôle
Idéal pour :
- Les agents avec logique d'embranchement ou boucles (par ex. retry-until-correct, reflection)
- Les workflows multi-étapes où différents chemins dépendent des résultats intermédiaires
- L'approbation humaine à des étapes spécifiques
- Le fan-out parallèle / fan-in (patterns map-reduce)
- L'état persistant entre les appels d'une même session
Pas idéal quand :
- Vous voulez que la planification, la gestion des fichiers et la délégation de sous-agents soient gérées pour vous (utilisez Deep Agents à la place)
- Le workflow est assez simple pour un agent simple
Skills à invoquer ensuite : langgraph-fundamentals, langgraph-human-in-the-loop, langgraph-persistence
</langgraph-profile>
<deep-agents-profile>
Deep Agents — Utilisez quand la tâche est ouverte et multi-dimensionnelle
Idéal pour :
- Les tâches longues qui nécessitent de diviser le travail en liste de tâches
- Les agents qui doivent lire, écrire et gérer des fichiers sur une session
- Déléguer des sous-tâches à des sous-agents spécialisés
- Charger les skills spécifiques à un domaine à la demande
- La mémoire persistante qui persiste entre plusieurs sessions
Pas idéal quand :
- La tâche est assez simple pour un agent à usage unique
- Vous avez besoin d'un contrôle précis et manuel de chaque arête du graphe (utilisez LangGraph directement)
Middleware — intégré et extensible :
Deep Agents est fourni avec une couche middleware intégrée d'emblée — vous la configurez, vous ne l'implémentez pas. Les éléments suivants sont pré-câblés ; vous pouvez aussi ajouter les vôtres par-dessus :
| Middleware | Ce qu'il fournit | Toujours actif ? |
|---|---|---|
TodoListMiddleware |
outil write_todos — l'agent planifie et suit les tâches multi-étapes |
✓ |
FilesystemMiddleware |
outils ls, read_file, write_file, edit_file, glob, grep |
✓ |
SubAgentMiddleware |
outil task — déléguer le travail aux sous-agents nommés |
✓ |
SkillsMiddleware |
Charger les fichiers SKILL.md à la demande depuis un répertoire de skills | Opt-in |
MemoryMiddleware |
Mémoire à long terme entre sessions via une instance Store |
Opt-in |
HumanInTheLoopMiddleware |
Interrompre et demander l'approbation humaine avant les appels d'outils sensibles | Opt-in |
Skills à invoquer ensuite : deep-agents-core, deep-agents-memory, deep-agents-orchestration
</deep-agents-profile>
Mélanger les couches
<mixing-layers> Comme les frameworks sont en couches, ils peuvent être combinés dans le même projet. Le pattern le plus courant est d'utiliser Deep Agents comme orchestrateur de haut niveau tout en descendant vers LangGraph pour les sous-agents spécialisés.
Quand mélanger
| Scénario | Pattern recommandé |
|---|---|
| L'agent principal a besoin de planification + mémoire, mais une sous-tâche nécessite un contrôle de graphe précis | Orchestrateur Deep Agents → sous-agent LangGraph |
| Un pipeline spécialisé (par ex. RAG, boucle de reflection) est appelé par un agent plus large | Graphe LangGraph enrobé comme un outil ou un sous-agent |
| Coordination de haut niveau mais graphe de bas niveau pour un domaine spécifique | Deep Agents + graphe compilé LangGraph comme sous-agent |
Comment cela fonctionne en pratique
Un graphe compilé LangGraph peut être enregistré comme un sous-agent dans Deep Agents. Cela signifie que vous pouvez construire un workflow LangGraph étroitement contrôlé (par ex. une boucle retrieval-and-verify) et le confier à l'outil task de Deep Agents en tant que sous-agent nommé — l'orchestrateur Deep Agents le délègue sans se soucier de sa structure interne de graphe.
Les outils LangChain, chaînes et retrievers peuvent être utilisés librement dans les nœuds LangGraph et les outils Deep Agents — ce sont les blocs de construction partagés à chaque niveau.
</mixing-layers>
Référence rapide
<quick-reference>
| LangChain | LangGraph | Deep Agents | |
|---|---|---|---|
| Flux de contrôle | Fixe (boucle d'outils) | Personnalisé (graphe) | Géré (middleware) |
| Couche middleware | Callbacks seulement | ✗ Aucun | ✓ Explicite, configurable |
| Planification | ✗ | Manuel | ✓ TodoListMiddleware |
| Gestion des fichiers | ✗ | Manuel | ✓ FilesystemMiddleware |
| Mémoire persistante | ✗ | Avec checkpointer | ✓ MemoryMiddleware |
| Délégation de sous-agents | ✗ | Manuel | ✓ SubAgentMiddleware |
| Skills à la demande | ✗ | ✗ | ✓ SkillsMiddleware |
| Humain dans la boucle | ✗ | Interruption manuelle | ✓ HumanInTheLoopMiddleware |
| Arêtes de graphe personnalisées | ✗ | ✓ Contrôle complet | Limité |
| Complexité de configuration | Basse | Moyenne | Basse |
| Flexibilité | Moyenne | Haute | Moyenne |
Le middleware est un concept spécifique à LangChain (callbacks) et Deep Agents (couche middleware explicite). LangGraph n'a pas de middleware — vous câblez le comportement directement dans les nœuds et arêtes.
</quick-reference> </source_en>