知识模块
🤖 Agent 知识模块
六、主流 Agent 框架
框架对比与选型

框架对比与选型

选择合适的 Agent 框架是项目成功的关键。本章将从多个维度对比主流框架,并提供选型决策指南。


一、框架全景对比

1.1 功能对比矩阵

┌─────────────────────────────────────────────────────────────────────┐
│                    Agent 框架功能对比矩阵                            │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│   ┌───────────────────────────────────────────────────────────────┐│
│   │                    功能完整度                                  ││
│   │                                                               ││
│   │  LangChain    ████████████████████████░░  85%               ││
│   │  LlamaIndex   ████████████████████░░░░░░  80%               ││
│   │  LangGraph    █████████████████████████░  95%               ││
│   │  AutoGPT      ████████████████░░░░░░░░░░  65%               ││
│   │  Semantic K.  ███████████████████░░░░░░░  75%               ││
│   │                                                               ││
│   └───────────────────────────────────────────────────────────────┘│
│                                                                     │
│   ┌───────────────────────────────────────────────────────────────┐│
│   │                    易用性                                      ││
│   │                                                               ││
│   │  LlamaIndex   ████████████████████████░░  高                 ││
│   │  Semantic K.  ██████████████████████░░░░  高                 ││
│   │  LangChain    ████████████████████░░░░░░  中                 ││
│   │  LangGraph    ████████████████░░░░░░░░░░  中                 ││
│   │  AutoGPT      ████████████░░░░░░░░░░░░░░  低                 ││
│   │                                                               ││
│   └───────────────────────────────────────────────────────────────┘│
│                                                                     │
│   ┌───────────────────────────────────────────────────────────────┐│
│   │                    生产就绪度                                  ││
│   │                                                               ││
│   │  LangChain    ████████████████████████░░  高                 ││
│   │  Semantic K.  ███████████████████████░░░  高                 ││
│   │  LlamaIndex   █████████████████████░░░░░  高                 ││
│   │  LangGraph    ███████████████████░░░░░░░  中高               ││
│   │  AutoGPT      ████████████░░░░░░░░░░░░░░  低                 ││
│   │                                                               ││
│   └───────────────────────────────────────────────────────────────┘│
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

1.2 详细对比表

对比维度LangChainLlamaIndexLangGraphAutoGPTSemantic Kernel
核心定位通用 AgentRAG 专精工作流编排自主 Agent企业级 SDK
主要语言Python/JSPythonPythonPythonC#/Python
学习曲线中等较低中等较低中等
文档质量优秀优秀良好一般良好
社区活跃度非常高
工具生态丰富数据连接器丰富复用 LangChain内置工具技能系统
状态管理基础基础强大文件系统内存
可观测性LangSmith基础原生支持基础基础
人机协作基础原生支持基础基础

1.3 场景适配表

┌─────────────────────────────────────────────────────────────────────┐
│                    场景适配矩阵                                      │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│   场景                    最佳选择           备选方案               │
│   ──────────────────────────────────────────────────────────────── │
│                                                                     │
│   RAG / 知识库问答       LlamaIndex        LangChain               │
│   ┌─────────────────────────────────────────────────────────────┐ │
│   │ • LlamaIndex: 数据连接和索引能力最强                        │ │
│   │ • LangChain: 也可以做 RAG,但需要更多配置                   │ │
│   └─────────────────────────────────────────────────────────────┘ │
│                                                                     │
│   复杂工作流             LangGraph          AutoGen                │
│   ┌─────────────────────────────────────────────────────────────┐ │
│   │ • LangGraph: 图状流程,支持循环、分支、并行                 │ │
│   │ • AutoGen: 多 Agent 对话协作                                │ │
│   └─────────────────────────────────────────────────────────────┘ │
│                                                                     │
│   快速原型               LangChain          LlamaIndex             │
│   ┌─────────────────────────────────────────────────────────────┐ │
│   │ • LangChain: 开箱即用的组件多                               │ │
│   │ • LlamaIndex: RAG 原型特别快                                │ │
│   └─────────────────────────────────────────────────────────────┘ │
│                                                                     │
│   企业级应用             Semantic Kernel    LangChain              │
│   ┌─────────────────────────────────────────────────────────────┐ │
│   │ • Semantic Kernel: 微软生态,Azure 集成                     │ │
│   │ • LangChain: 成熟稳定,社区大                               │ │
│   └─────────────────────────────────────────────────────────────┘ │
│                                                                     │
│   自主任务执行           AutoGPT            LangGraph              │
│   ┌─────────────────────────────────────────────────────────────┐ │
│   │ • AutoGPT: 经典的自主 Agent 实现                            │ │
│   │ • LangGraph: 可实现自主循环                                 │ │
│   └─────────────────────────────────────────────────────────────┘ │
│                                                                     │
│   多 Agent 协作          AutoGen/CrewAI     LangGraph              │
│   ┌─────────────────────────────────────────────────────────────┐ │
│   │ • AutoGen: 微软出品,对话式协作                             │ │
│   │ • CrewAI: 角色扮演式协作                                    │ │
│   │ • LangGraph: 图状协作                                       │ │
│   └─────────────────────────────────────────────────────────────┘ │
│                                                                     │
│   .NET 技术栈            Semantic Kernel    -                      │
│   ┌─────────────────────────────────────────────────────────────┐ │
│   │ • Semantic Kernel: 唯一支持 C# 的主流框架                   │ │
│   └─────────────────────────────────────────────────────────────┘ │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

二、深入对比分析

2.1 架构设计对比

┌─────────────────────────────────────────────────────────────┐
│                    架构设计对比                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   LangChain: 链式架构                                       │
│   ┌─────────────────────────────────────────────────────┐  │
│   │                                                      │  │
│   │   Prompt → LLM → Parser → Chain → Agent             │  │
│   │                                                      │  │
│   │   特点:                                             │  │
│   │   • 组件化设计,模块可组合                           │  │
│   │   • LCEL 提供声明式语法                              │  │
│   │   • Chain 是核心抽象                                 │  │
│   │                                                      │  │
│   └─────────────────────────────────────────────────────┘  │
│                                                             │
│   LlamaIndex: 数据管道架构                                  │
│   ┌─────────────────────────────────────────────────────┐  │
│   │                                                      │  │
│   │   Loader → Parser → Index → Retriever → Engine      │  │
│   │                                                      │  │
│   │   特点:                                             │  │
│   │   • 数据流为中心                                     │  │
│   │   • Index 是核心抽象                                 │  │
│   │   • 专为 RAG 优化                                    │  │
│   │                                                      │  │
│   └─────────────────────────────────────────────────────┘  │
│                                                             │
│   LangGraph: 图状态架构                                     │
│   ┌─────────────────────────────────────────────────────┐  │
│   │                                                      │  │
│   │   State → Node → Edge → Conditional Edge → Loop     │  │
│   │                                                      │  │
│   │   特点:                                             │  │
│   │   • 显式状态管理                                     │  │
│   │   • 支持循环和分支                                   │  │
│   │   • 可调试性强                                       │  │
│   │                                                      │  │
│   └─────────────────────────────────────────────────────┘  │
│                                                             │
│   Semantic Kernel: 技能规划架构                             │
│   ┌─────────────────────────────────────────────────────┐  │
│   │                                                      │  │
│   │   Ask → Planner → Skills → Result                   │  │
│   │                                                      │  │
│   │   特点:                                             │  │
│   │   • 技能系统为核心                                   │  │
│   │   • 自动规划执行                                     │  │
│   │   • 代码与 AI 融合                                   │  │
│   │                                                      │  │
│   └─────────────────────────────────────────────────────┘  │
│                                                             │
└─────────────────────────────────────────────────────────────┘

2.2 核心概念映射

概念LangChainLlamaIndexLangGraphSemantic Kernel
功能单元Tool-NodeSkill
流程编排ChainQuery EngineGraphPlan
决策引擎Agent-Conditional EdgePlanner
数据存储MemoryIndex/StoreStateMemory
模板系统PromptTemplate--内置
模型封装BaseLLMLLM-Connector

2.3 代码风格对比

"""
不同框架的代码风格对比
以简单的问答应用为例
"""
 
# ========== LangChain 风格 ==========
 
from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.schema.output_parser import StrOutputParser
 
# 使用 LCEL
llm = ChatOpenAI(model="gpt-4")
prompt = ChatPromptTemplate.from_template("请回答:{question}")
chain = prompt | llm | StrOutputParser()
 
result = chain.invoke({"question": "什么是 AI?"})
 
 
# ========== LlamaIndex 风格 ==========
 
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
 
# 加载文档并创建索引
documents = SimpleDirectoryReader("./docs").load_data()
index = VectorStoreIndex.from_documents(documents)
 
# 查询
query_engine = index.as_query_engine()
result = query_engine.query("什么是 AI?")
 
 
# ========== LangGraph 风格 ==========
 
from langgraph.graph import StateGraph, END
 
# 定义状态
class State(TypedDict):
    question: str
    answer: str
 
# 定义节点
def answer_node(state: State):
    answer = llm.invoke(state["question"])
    return {"answer": answer}
 
# 构建图
graph = StateGraph(State)
graph.add_node("answer", answer_node)
graph.set_entry_point("answer")
graph.add_edge("answer", END)
 
app = graph.compile()
result = app.invoke({"question": "什么是 AI?"})
 
 
# ========== Semantic Kernel 风格 ==========
 
import semantic_kernel as sk
 
# 创建 Kernel
kernel = sk.Kernel()
kernel.add_chat_service("gpt", OpenAIChatCompletion(...))
 
# 定义技能
@sk.sk_function(description="回答问题")
def answer(question: str) -> str:
    return kernel.run_async(question)
 
# 执行
result = await kernel.run_async(answer, input="什么是 AI?")

三、选型决策指南

3.1 决策流程图

┌─────────────────────────────────────────────────────────────┐
│                    框架选型决策流程                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│                      ┌─────────────┐                       │
│                      │  项目类型? │                       │
│                      └──────┬──────┘                       │
│                             │                              │
│          ┌──────────────────┼──────────────────┐          │
│          ↓                  ↓                  ↓          │
│   ┌─────────────┐   ┌─────────────┐   ┌─────────────┐    │
│   │   RAG/检索  │   │   Agent/    │   │   企业级    │    │
│   │   类应用    │   │   工作流    │   │   应用      │    │
│   └──────┬──────┘   └──────┬──────┘   └──────┬──────┘    │
│          │                 │                 │            │
│          ↓                 │                 ↓            │
│   ┌─────────────┐          │          ┌─────────────┐    │
│   │ LlamaIndex  │          │          │ Semantic K. │    │
│   │   或        │          │          │   或        │    │
│   │ LangChain   │          │          │ LangChain   │    │
│   └─────────────┘          │          └─────────────┘    │
│                            │                              │
│                            ↓                              │
│                    ┌─────────────┐                       │
│                    │ 工作流复杂度│                       │
│                    └──────┬──────┘                       │
│                           │                              │
│           ┌───────────────┼───────────────┐             │
│           ↓               ↓               ↓             │
│    ┌───────────┐   ┌───────────┐   ┌───────────┐       │
│    │   简单    │   │   中等    │   │   复杂    │       │
│    │ 链式流程  │   │ 条件分支  │   │ 循环/并行 │       │
│    └─────┬─────┘   └─────┬─────┘   └─────┬─────┘       │
│          │               │               │              │
│          ↓               ↓               ↓              │
│    ┌───────────┐   ┌───────────┐   ┌───────────┐       │
│    │ LangChain │   │ LangChain │   │ LangGraph │       │
│    │   Chain   │   │   +       │   │           │       │
│    │           │   │ LangGraph │   │           │       │
│    └───────────┘   └───────────┘   └───────────┘       │
│                                                             │
│   其他考虑因素:                                             │
│   ┌─────────────────────────────────────────────────────┐│
│   │ • 团队技术栈:Python 选 LangChain,C# 选 SK         ││
│   │ • 云服务商:Azure 选 SK,其他选 LangChain           ││
│   │ • 学习时间:快速入门选 LlamaIndex                   ││
│   │ • 生产需求:选成熟的 LangChain 或 SK                ││
│   └─────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

3.2 选型检查清单

┌─────────────────────────────────────────────────────────────┐
│                    框架选型检查清单                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   □ 1. 项目需求                                             │
│     □ 是否需要 RAG?                                        │
│     □ 是否需要复杂工作流?                                  │
│     □ 是否需要多 Agent 协作?                               │
│     □ 是否需要人机交互?                                    │
│                                                             │
│   □ 2. 团队能力                                             │
│     □ 团队熟悉的技术栈是什么?                              │
│     □ 是否有 AI/ML 背景?                                   │
│     □ 学习时间预算是多少?                                  │
│                                                             │
│   □ 3. 技术约束                                             │
│     □ 是否需要私有化部署?                                  │
│     □ 是否有特定的云服务依赖?                              │
│     □ 是否需要特定的向量数据库?                            │
│                                                             │
│   □ 4. 生产要求                                             │
│     □ 是否需要可观测性?                                    │
│     □ 是否需要高可用?                                      │
│     □ 是否需要成本控制?                                    │
│                                                             │
│   □ 5. 长期考量                                             │
│     □ 框架是否持续维护?                                    │
│     □ 社区是否活跃?                                        │
│     □ 是否有足够的文档和示例?                              │
│                                                             │
└─────────────────────────────────────────────────────────────┘

3.3 组合使用建议

┌─────────────────────────────────────────────────────────────┐
│                    框架组合使用                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   组合 1: LangChain + LlamaIndex                            │
│   ┌─────────────────────────────────────────────────────┐  │
│   │                                                      │  │
│   │   LlamaIndex 负责 RAG 检索                          │  │
│   │          ↓                                           │  │
│   │   LangChain 负责 Agent 和工具调用                   │  │
│   │          ↓                                           │  │
│   │   完整的 RAG + Agent 应用                           │  │
│   │                                                      │  │
│   │   适用:需要 RAG + 复杂 Agent 的场景                │  │
│   └─────────────────────────────────────────────────────┘  │
│                                                             │
│   组合 2: LangChain + LangGraph                             │
│   ┌─────────────────────────────────────────────────────┐  │
│   │                                                      │  │
│   │   LangChain 提供工具和 LLM 封装                     │  │
│   │          ↓                                           │  │
│   │   LangGraph 负责工作流编排                          │  │
│   │          ↓                                           │  │
│   │   复杂工作流 Agent 应用                             │  │
│   │                                                      │  │
│   │   适用:复杂多步骤工作流场景                        │  │
│   └─────────────────────────────────────────────────────┘  │
│                                                             │
│   组合 3: LangChain + 自定义                                │
│   ┌─────────────────────────────────────────────────────┐  │
│   │                                                      │  │
│   │   LangChain 作为基础框架                            │  │
│   │          ↓                                           │  │
│   │   自定义组件扩展                                     │  │
│   │          ↓                                           │  │
│   │   定制化 Agent 系统                                  │  │
│   │                                                      │  │
│   │   适用:有特殊需求的企业应用                        │  │
│   └─────────────────────────────────────────────────────┘  │
│                                                             │
└─────────────────────────────────────────────────────────────┘

四、发展趋势

4.1 框架演进方向

┌─────────────────────────────────────────────────────────────┐
│                    Agent 框架发展趋势                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   1. 更强的状态管理                                         │
│   ┌─────────────────────────────────────────────────────┐  │
│   │ • 显式状态定义成为标准                              │  │
│   │ • 持久化和恢复能力增强                              │  │
│   │ • 跨会话状态管理                                    │  │
│   └─────────────────────────────────────────────────────┘  │
│                                                             │
│   2. 更好的可观测性                                         │
│   ┌─────────────────────────────────────────────────────┐  │
│   │ • 内置追踪和监控                                    │  │
│   │ • 成本和 Token 统计                                 │  │
│   │ • 调试和可视化工具                                  │  │
│   └─────────────────────────────────────────────────────┘  │
│                                                             │
│   3. 多模态支持                                             │
│   ┌─────────────────────────────────────────────────────┐  │
│   │ • 图像理解和生成                                    │  │
│   │ • 音频处理                                          │  │
│   │ • 视频分析                                          │  │
│   └─────────────────────────────────────────────────────┘  │
│                                                             │
│   4. 低代码/无代码化                                        │
│   ┌─────────────────────────────────────────────────────┐  │
│   │ • 可视化流程编排                                    │  │
│   │ • 自然语言定义 Agent                                │  │
│   │ • 拖拽式工具集成                                    │  │
│   └─────────────────────────────────────────────────────┘  │
│                                                             │
│   5. 标准化                                                 │
│   ┌─────────────────────────────────────────────────────┐  │
│   │ • 工具定义标准(如 MCP)                            │  │
│   │ • Agent 通信协议                                    │  │
│   │ • 评估基准                                          │  │
│   └─────────────────────────────────────────────────────┘  │
│                                                             │
└─────────────────────────────────────────────────────────────┘

4.2 选型建议更新

┌─────────────────────────────────────────────────────────────┐
│                    2024-2025 选型建议                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   新项目推荐:                                               │
│                                                             │
│   • RAG 应用:LlamaIndex(成熟稳定)                        │
│   • 复杂 Agent:LangGraph(灵活性高)                       │
│   • 快速原型:LangChain(生态丰富)                         │
│   • 企业 .NET:Semantic Kernel(微软支持)                  │
│                                                             │
│   不推荐:                                                   │
│                                                             │
│   • 生产环境使用 AutoGPT(可靠性不足)                      │
│   • 纯研究项目使用过于复杂的框架                            │
│                                                             │
│   关注中的新框架:                                           │
│                                                             │
│   • AutoGen(多 Agent 协作)                                │
│   • CrewAI(角色扮演协作)                                  │
│   • MetaGPT(软件开发专用)                                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘

五、面试问答

Q1: LangChain 和 LlamaIndex 如何选择?

回答要点:

  1. 选择 LlamaIndex

    • 主要需求是 RAG/知识库问答
    • 需要处理大量文档
    • 重视检索质量
  2. 选择 LangChain

    • 需要完整的 Agent 能力
    • 需要丰富的工具集成
    • 需要灵活的工作流
  3. 组合使用

    • LlamaIndex 做 RAG
    • LangChain 做 Agent

Q2: LangGraph 相比 LangChain Chain 有什么优势?

回答要点:

特性LangChain ChainLangGraph
流程类型线性图状(循环、分支、并行)
状态管理隐式显式 TypedDict
可调试性中等
人机协作不支持原生支持
持久化内置检查点

Q3: 如何评估一个 Agent 框架是否适合生产环境?

回答要点:

  1. 稳定性:框架是否经过大规模生产验证
  2. 可观测性:是否有日志、追踪、监控能力
  3. 扩展性:是否支持自定义组件
  4. 社区支持:问题能否快速得到解答
  5. 维护状态:框架是否持续更新

Q4: 多 Agent 协作应该选择哪个框架?

回答要点:

  • AutoGen:微软出品,对话式协作,适合研究
  • CrewAI:角色扮演模式,适合业务流程
  • LangGraph:图状协作,适合复杂工作流
  • MetaGPT:软件开发专用,适合代码生成

六、小结

框架选型是项目成功的关键:

核心要点

  1. 没有万能框架:根据场景选择最合适的
  2. 可以组合使用:利用各框架的优势
  3. 关注发展趋势:选择持续维护的框架

选型原则

  • 简单场景选简单框架
  • 复杂场景选灵活框架
  • 企业应用选成熟框架
  • 实验项目选活跃框架

下一步

  • 根据项目需求,对照检查清单进行选型
  • 尝试搭建原型,验证框架适配度
  • 关注框架更新,及时调整策略