LangChain 还是 CrewAI?别慌,5 分钟带你选对 5 大 AI Agent 框架
随着大模型能力的持续升级,AI Agent 已经从概念 Demo 快速走向工程落地。但面对市面上琳琅满目的 Agent 开发框架,很多开发者在选型时常常陷入迷茫:
- 想快速验证产品原型该用什么?
- 做 RAG 知识库哪个最顺手?
- 多智能体协作到底选 CrewAI 还是 AutoGen?
本文就针对目前工业界和开源社区最主流的 5 个框架,从核心定位、能力边界、适用场景三个维度逐一拆解,每个框架附带可运行的极简场景 Demo,帮你快速找准最适合的选型。
1. LangChain:线性流程 / 快速原型 / 生态最全
核心定位
LangChain 是大语言模型应用开发的事实标准工具链,也是绝大多数开发者入门 LLM 应用的第一站。它的核心设计思路是通过 “链(Chain)” 的方式线性编排 LLM、工具、记忆等组件,极大降低了 LLM 应用的开发门槛。
关键特性
- 生态最全:几乎集成了所有主流大模型、向量数据库、工具接口和第三方服务,开箱即用的组件极多;
- 上手门槛低:线性的链式思维符合直觉,通过 LCEL(表达式语言)可以快速拼接出复杂业务流程;
- 场景覆盖广:从简单的提示词调用,到基础 RAG、单轮工具调用都能轻松覆盖。
适用场景
快速验证产品原型、简单顺序式的 LLM 应用、基础版 RAG 系统、单轮工具调用型 Agent。
场景 Demo:简单工具调用问答
实现一个能调用计算器工具回答数学问题的基础 Agent。
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate
# 定义工具
@tool
def calculator(expression: str) -> str:
"""执行数学表达式计算,输入是合法的数学表达式字符串"""
try:
return str(eval(expression))
except:
return "计算表达式错误"
# 初始化大模型
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
# 构建提示词
prompt = ChatPromptTemplate.from_messages([
("system", "你是一个智能助手,遇到数学问题请调用计算器工具解答"),
("user", "{input}"),
("agent_scratchpad", "{agent_scratchpad}")
])
# 创建 Agent
tools = [calculator]
agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 运行
result = agent_executor.invoke({"input": "请问 123 乘以 456 等于多少?"})
print(result["output"])
注:LangChain 更适合线性、单轮或固定流程的任务;如果需要循环推理、多轮自主决策,它的原生能力会比较吃力,这时候就需要 LangGraph。
2. LangGraph:循环状态 / 持久化 / 人机协同
核心定位
LangGraph 是 LangChain 官方推出的状态化 Agent 编排框架,专门用来弥补 LangChain 线性流程的短板。它基于图状态机的设计,支持循环、分支、持久化和人机介入,是构建复杂自主 Agent 的核心利器。
关键特性
- 循环与分支:支持 ReAct、Plan-and-Execute 等经典 Agent 模式,让模型可以自主完成 “思考 - 行动 - 观察” 的循环迭代;
- 状态持久化:内置 Checkpoint 机制,支持任务断点续跑、会话状态保存,适合生产级长任务;
- 人机协同:支持在流程中设置人工介入节点,在关键步骤引入人类审核和干预。
适用场景
需要循环推理的自主 Agent、多步骤复杂任务、长会话持久化场景、人机协同审核流程。
场景 Demo:极简 ReAct 循环 Agent
实现一个最基础的 “思考 - 行动 - 观察” 循环 Agent,直到得出最终答案。
from typing import Annotated, TypedDict
from langgraph.graph import StateGraph, END
from langgraph.graph.message import add_messages
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from langgraph.prebuilt import ToolNode
# 定义状态
class AgentState(TypedDict):
messages: Annotated[list, add_messages]
# 定义工具
@tool
def search(query: str) -> str:
"""模拟搜索工具,返回查询结果"""
return f"搜索结果:{query} 的相关信息是 ..."
# 初始化模型并绑定工具
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
tools = [search]
llm_with_tools = llm.bind_tools(tools)
# 定义节点:模型推理
def chat_node(state: AgentState):
messages = state["messages"]
response = llm_with_tools.invoke(messages)
return {"messages": [response]}
# 构建图
graph_builder = StateGraph(AgentState)
graph_builder.add_node("chat", chat_node)
graph_builder.add_node("tools", ToolNode(tools))
# 定义边:有工具调用就走工具节点,否则结束
def should_continue(state: AgentState):
last_message = state["messages"][-1]
if last_message.tool_calls:
return "tools"
return END
graph_builder.add_conditional_edges("chat", should_continue)
graph_builder.add_edge("tools", "chat")
graph_builder.set_entry_point("chat")
# 编译运行
graph = graph_builder.compile()
result = graph.invoke({"messages": [("user", "请查询 LangGraph 的核心特性")]})
print(result["messages"][-1].content)
注:LangGraph 是目前生产级 Agent 编排的主流选择,它和 LangChain 生态无缝打通,既可以复用 LangChain 的全部组件,又能实现复杂的状态流转。
3. LlamaIndex:数据检索 / 知识问答
核心定位
LlamaIndex 是专注于检索增强(RAG)的专精框架,核心目标是把企业私有数据、文档、知识库高效地接入大模型,打造高质量的知识问答 Agent。如果说 LangChain 是 “全能选手”,LlamaIndex 就是 “RAG 专项冠军”。
关键特性
- 数据连接能力极强:支持上百种数据源连接器(PDF、Word、网页、数据库、API 等);
- 索引体系丰富:提供向量索引、树索引、关键词索引等多种结构,适配不同检索场景;
- 检索优化原生:内置重排序、混合检索、查询改写等 RAG 优化能力,开箱即用。
适用场景
企业知识库问答、文档智能助手、私有数据 RAG 系统、知识驱动型 Agent。
场景 Demo:本地文档知识问答
加载本地文本文件,构建向量索引,实现基于文档内容的问答。
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex
from llama_index.llms.openai import OpenAI
# 1. 加载本地文档(data 目录下的 txt/pdf 等文件)
documents = SimpleDirectoryReader("./data").load_data()
# 2. 构建向量索引
index = VectorStoreIndex.from_documents(documents)
# 3. 创建查询引擎
query_engine = index.as_query_engine(
llm=OpenAI(model="gpt-3.5-turbo", temperature=0)
)
# 4. 问答
response = query_engine.query("这份文档中提到的核心技术指标有哪些?")
print(response)
注:实际项目中,LlamaIndex 经常和 LangChain / LangGraph 搭配使用 —— 用 LlamaIndex 做 RAG 底层能力,用 LangGraph 做上层 Agent 流程编排。
4. CrewAI:角色分工 / 多 Agent 团队
核心定位
CrewAI 是主打角色化分工的多智能体协作框架。它的设计理念是模拟人类团队的工作模式:给每个 Agent 设定明确的角色、目标和职责,再把任务拆解分配,让多个 Agent 自主协作完成复杂工作。
关键特性
- 角色化定义:每个 Agent 都有清晰的 Role、Goal、Backstory,角色感极强;
- 任务编排:支持任务拆解、顺序执行、并行执行,灵活配置工作流;
- 自主协作:Agent 之间可以自主沟通、委派任务,不需要人工写死交互逻辑。
适用场景
多角色协作类任务(如市场调研 + 文案撰写 + 内容审核)、复杂项目拆解、需要专业分工的自动化工作流。
场景 Demo:调研 + 写作双 Agent 协作
创建 “研究员” 和 “撰稿人” 两个 Agent,协作完成一篇技术短文。
from crewai import Agent, Task, Crew
from langchain_openai import ChatOpenAI
# 配置大模型
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.7)
# 1. 定义 Agent
researcher = Agent(
role="资深技术研究员",
goal="调研 AI Agent 框架的最新发展趋势",
backstory="你是一名有5年经验的AI技术研究员,擅长信息搜集和总结提炼。",
llm=llm,
verbose=True
)
writer = Agent(
role="技术撰稿人",
goal="根据调研结果撰写一篇通俗易懂的技术短文",
backstory="你是一名资深技术博主,擅长把复杂技术讲得简单易懂。",
llm=llm,
verbose=True
)
# 2. 定义任务
research_task = Task(
description="调研目前主流的AI Agent框架,总结各自的核心优势和适用场景",
agent=researcher,
expected_output="一份框架对比总结清单"
)
write_task = Task(
description="根据调研结果,写一篇800字以内的AI Agent框架选型指南",
agent=writer,
expected_output="一篇完整的技术短文"
)
# 3. 组建团队并执行
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
verbose=True
)
result = crew.kickoff()
print(result)
注:CrewAI 的角色化设计非常适合业务场景落地,非技术人员也能通过描述角色和目标快速搭建多 Agent 系统。
5. AutoGen:对话驱动 / 代码执行 / 研究型
核心定位
AutoGen 是微软推出的对话式多 Agent 框架,主打 “对话驱动” 的协作模式,原生内置强大的代码执行能力,在科研、自动化实验、代码生成场景中优势明显。
关键特性
- 对话式交互:Agent 之间通过自然语言对话协作,交互逻辑更灵活;
- 原生代码执行:内置沙箱环境,可以安全地生成、执行代码,处理计算类任务能力极强;
- 灵活的代理模式:支持用户代理、助手代理、执行代理等多种角色,也支持人类在回路中。
适用场景
代码生成与执行、科研自动化实验、复杂多 Agent 对话系统、需要编程能力的智能体。
场景 Demo:对话式代码执行 Agent
通过两个 Agent 对话,自动生成并执行代码解决数学问题。
import autogen
# 配置大模型
config_list = [{"model": "gpt-3.5-turbo", "api_key": "your_api_key"}]
# 1. 定义助手代理(负责生成代码和解答)
assistant = autogen.AssistantAgent(
name="助手",
llm_config={"config_list": config_list}
)
# 2. 定义用户代理(负责执行代码、反馈结果)
user_proxy = autogen.UserProxyAgent(
name="用户代理",
human_input_mode="NEVER", # 不需要人工介入
code_execution_config={"work_dir": "coding", "use_docker": False}
)
# 3. 发起对话
user_proxy.initiate_chat(
assistant,
message="请计算斐波那契数列的第30项是多少,并给出计算过程"
)
注:AutoGen 的代码执行能力是一大特色,但也因此对环境安全要求较高;同时它的灵活性很高,相对的工程化落地门槛也比 CrewAI 高一些。
6. 选型总结与建议
一句话选型速记
- 快速原型、简单线性流程:首选 LangChain,生态全、上手快;
- 复杂状态、循环推理、生产级 Agent:选 LangGraph,LangChain 生态的最佳升级;
- 核心需求是 RAG、知识问答:选 LlamaIndex,专精检索,开箱即用;
- 多角色分工、团队式协作任务:选 CrewAI,角色化设计,业务落地快;
- 代码执行、科研实验、对话式多 Agent:选 AutoGen,代码能力强,灵活度高。
进阶实践建议
真实项目中很少只使用单一框架,常见的组合方案:
- LangChain + LlamaIndex:用 LangChain 做业务流程编排,LlamaIndex 负责底层 RAG 能力;
- LangGraph + CrewAI:用 LangGraph 做顶层状态管控,CrewAI 负责子任务的多 Agent 协作;
- LangGraph + LlamaIndex:构建带检索能力的状态化自主 Agent,也是目前企业落地的主流架构。
更多推荐

所有评论(0)