随着大模型能力的持续升级,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,代码能力强,灵活度高。

进阶实践建议

真实项目中很少只使用单一框架,常见的组合方案:

  1. LangChain + LlamaIndex:用 LangChain 做业务流程编排,LlamaIndex 负责底层 RAG 能力;
  2. LangGraph + CrewAI:用 LangGraph 做顶层状态管控,CrewAI 负责子任务的多 Agent 协作;
  3. LangGraph + LlamaIndex:构建带检索能力的状态化自主 Agent,也是目前企业落地的主流架构。
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐