framework-selection

Par langchain-ai · langchain-skills

Invoquer cette skill AU DÉBUT de tout projet LangChain/LangGraph/Deep Agents, avant d'écrire le moindre code d'agent. Détermine quelle couche de framework convient à la tâche : LangChain, LangGraph, Deep Agents, ou une combinaison. Doit être consultée avant les autres agent skills.

npx skills add https://github.com/langchain-ai/langchain-skills --skill framework-selection

<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>

Skills similaires