Prerequisites
- Python 3.10+
- Installs:
pip install langchain langchain-openai,pip install langgraph,pip install crewai - An API key for your chosen model provider(s)
Same task for all three frameworks: an agent that answers a question using one search tool.
LangChain
from langchain.agents import create_agent
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search the web for a query."""
return f"results for {query}"
agent = create_agent(model="openai:gpt-4o-mini", tools=[search])
agent.invoke({"messages": [{"role": "user", "content": "Latest Mars rover news"}]})
LangGraph
from langgraph.graph import StateGraph, MessagesState, START, END
from langchain.chat_models import init_chat_model
model = init_chat_model("openai:gpt-4o-mini")
def call_model(state: MessagesState):
return {"messages": [model.invoke(state["messages"])]}
graph = StateGraph(MessagesState)
graph.add_node("agent", call_model)
graph.add_edge(START, "agent")
graph.add_edge("agent", END)
app = graph.compile()
app.invoke({"messages": [{"role": "user", "content": "Latest Mars rover news"}]})
CrewAI
from crewai import Agent, Task, Crew
researcher = Agent(
role="Researcher",
goal="Find current space exploration news",
backstory="A meticulous science journalist.",
)
task = Task(
description="Find the latest Mars rover news",
agent=researcher,
)
Crew(agents=[researcher], tasks=[task]).kickoff()
Which one should you pick?
- LangChain – fastest single-agent setup with broad integrations.
- LangGraph – explicit branching, state, and control flow.
- CrewAI – role-based multi-agent teams out of the box.
Many production systems combine LangChain’s components inside a LangGraph-orchestrated workflow, so the choice often isn’t either/or.