LangChain vs LlamaIndex
Deux frameworks pionniers du développement d'applications LLM : LangChain, généraliste, face à LlamaIndex, spécialisé dans la connexion aux données. Lequel choisir pour le RAG et le développement d'agents IA ?
Runtime d'orchestration d'agents bas niveau, basé sur un graphe
Orchestration de production avec équipes d'agents basées sur les rôles + Flows event-driven
Il n'y a pas de gagnant absolu : c'est la forme de votre flux qui décide. Si votre architecture est cyclique/conditionnelle, LangGraph l'emporte, en particulier dans les flux soumis à régulation. Si vous voulez une « équipe de rôles » avec peu de code, CrewAI arrive plus vite au résultat ; si vous vous connectez fréquemment à MCP, le DSL dédié de CrewAI est un avantage. En 2026, il existe aussi une troisième option : pour une automatisation simple, un framework n'est peut-être pas nécessaire.
| Catégorie | LangGraph | CrewAI |
|---|---|---|
| Performance | 8/10 | 8/10 |
| Facilité d'apprentissage | 5/10 | 8/10 |
| Écosystème | 8/10 | 7/10 |
| Communauté | 8/10 | 8/10 |
| Marché de l'emploi | 7/10 | 6/10 |
| Pérennité | 9/10 | 8/10 |
# LangGraph — flux d'agent simple avec checkpoint et approbation humaine
from langgraph.graph import StateGraph, START, END
from langgraph.checkpoint.memory import InMemorySaver
from langgraph.types import interrupt, Command
from typing import TypedDict
class State(TypedDict):
input: str
approved: bool
result: str
def draft_step(state: State) -> dict:
return {"result": f"draft for: {state['input']}"}
def approval_step(state: State) -> dict:
decision = interrupt({"question": "Approve this draft?", "draft": state["result"]})
return {"approved": decision == "yes"}
graph = StateGraph(State)
graph.add_node("draft", draft_step)
graph.add_node("approval", approval_step)
graph.add_edge(START, "draft")
graph.add_edge("draft", "approval")
graph.add_edge("approval", END)
app = graph.compile(checkpointer=InMemorySaver())
config = {"configurable": {"thread_id": "run-1"}}
app.invoke({"input": "weekly report"}, config=config)
# reprend là où il s'est arrêté après l'approbation humaine :
app.invoke(Command(resume="yes"), config=config)# CrewAI — Flow + Crew, flux avec approbation humaine via @human_feedback (crewai >= 1.8.0)
from crewai import Agent, Crew, Task
from crewai.flow.flow import Flow, listen, start
from crewai.flow.human_feedback import HumanFeedbackResult, human_feedback
writer = Agent(
role="Content Writer",
goal="Draft a short weekly report",
backstory="You are a concise technical writer.",
)
draft_task = Task(
description="Write a one-paragraph weekly report about {topic}",
expected_output="A one-paragraph report",
agent=writer,
)
class ReportFlow(Flow):
@start()
def create_draft(self):
crew = Crew(agents=[writer], tasks=[draft_task])
return str(crew.kickoff(inputs={"topic": "deployment metrics"}))
# emit + llm : le feedback en texte libre est réduit à un seul résultat
@listen(create_draft)
@human_feedback(
message="Approve this draft, or say what needs changing:",
emit=["approved", "rejected"],
llm="gpt-4o-mini",
default_outcome="rejected",
)
def review_draft(self, draft):
return draft
# HumanFeedbackResult est transmis à l'écouteur (listener), pas à la méthode décorée
@listen("approved")
def publish(self, result: HumanFeedbackResult):
print(f"Published: {result.output}")
@listen("rejected")
def discard(self, result: HumanFeedbackResult):
print(f"Rejected: {result.feedback}")
flow = ReportFlow()
flow.kickoff()Il n'y a pas de gagnant absolu : c'est la forme de votre flux qui décide. Si votre architecture est cyclique/conditionnelle, LangGraph l'emporte, en particulier dans les flux soumis à régulation. Si vous voulez une « équipe de rôles » avec peu de code, CrewAI arrive plus vite au résultat ; si vous vous connectez fréquemment à MCP, le DSL dédié de CrewAI est un avantage. En 2026, il existe aussi une troisième option : pour une automatisation simple, un framework n'est peut-être pas nécessaire.
Obtenir une consultation gratuiteLes deux sont développés activement dans une optique de production. LangGraph, avec 42 222 étoiles GitHub, offre l'exécution durable et une frise de logos « trusted by » sur sa page produit avec Cisco, Nvidia, ServiceNow et Klarna ; CrewAI, avec 58 978 étoiles et sa recommandation officielle « production-ready application, start with a Flow », partage des études de cas PwC, IBM et AWS. Aucun des deux sites officiels n'affirme être « plus adapté » de façon définitive — la décision doit se baser sur l'intensité de branchement/cycles de votre flux.