LangChain / LangGraph / AutoGPT / CrewAI / AutoGen 五大框架对比

当前主流多智能体(Multi-Agent)与自主 AI 框架涵盖 LangChain / LangGraph / AutoGPT / CrewAI / AutoGen 五大框架。以下是总结和对比分析。

一. 总览对比

在这里插入图片描述

二、详细分析

1. LangChain

“LLM 应用的瑞士军刀”

优点:
    生态最成熟,文档丰富
    支持 100+ 工具、记忆、RAG、Agent
    与 LangSmith 调试平台无缝集成
缺点:
    不是专为多 Agent 设计,复杂协作需手动编排
    Agent 循环控制较弱(易陷入死循环)

典型用法:

from langchain.agents import create_tool_calling_agent
agent = create_tool_calling_agent(llm, tools, prompt)

适合:单 Agent + 工具调用、RAG 应用
不适合:多 Agent 协作、复杂状态管理

2. LangGraph

“LangChain 的多 Agent 升级版”

优点:
    基于 有向图(Graph) + 状态(State),精确控制流程
    支持 循环、条件跳转、并行节点
    原生支持 人类-in-the-loop(人工审核节点)
    与 LangChain 工具/记忆完全兼容
缺点:
    需要理解状态机概念
    代码稍显冗长(需定义节点、边、状态)

典型结构:

graph = StateGraph(AgentState)
graph.add_node("planner", planner)
graph.add_node("executor", executor)
graph.add_edge("planner", "executor")
graph.set_entry_point("planner")

适合:复杂业务流程(如审批流、故障诊断)

MCP 支持:可通过 @tool 装饰器直接集成 MCP 工具

3. AutoGPT

“第一个爆火的自主 Agent”

优点:
    强调 长期目标分解(Long-term Goal → Subtasks)
    内置 记忆(VectorDB) + 文件操作 + 网络搜索
    社区插件丰富(如 Twitter、Email)
缺点:
    稳定性差:易陷入无限循环或无效操作
    资源消耗大:每个 step 都调用 LLM
    架构较重,调试困难
现状:v0.4 后转向 AutoGPT Core + Plugins,更模块化

适合:探索性任务(如“写一篇关于量子计算的博客”)

不适合:生产环境、确定性流程

4. CrewAI

“为业务团队而生的多 Agent 框架”

优点:
    极简 API:Agent + Task + Crew 三要素
    内置 角色扮演、委托机制、记忆
    支持 顺序/层级/共识 三种协作模式
    与 LangChain 工具完全兼容
缺点:
    流程控制能力弱于 LangGraph(无法自定义循环逻辑)
    社区生态较小

典型代码:

crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, write_task],
    process=Process.sequential
)

适合:企业自动化(市场分析、报告生成、招聘)

MCP 支持:通过封装 BaseTool 轻松集成

5. AutoGen (by Microsoft)

“科研级多 Agent 对话框架”

优点:
    群聊(GroupChat)机制:多个 Agent 自由对话
    支持 代码执行、函数调用、人类反馈
    可模拟 辩论、结对编程、教学场景
    性能优化好(缓存、异步)
缺点:
    配置复杂(需定义 GroupChatManager)
    业务场景抽象不足(更像“实验室工具”)
典型用法:
groupchat = GroupChat(agents=[coder, reviewer, pm], messages=[], max_round=10)
manager = GroupChatManager(groupchat=groupchat, llm_config=llm_config)
user.initiate_chat(manager, message="Build a todo app")

适合:代码生成、教育、多视角决策

✅ MCP 支持:可通过 register_function 注册 MCP 工具(实验性)

三、MCP(Model Context Protocol)支持情况

在这里插入图片描述
推荐:若以 MCP 为核心工具体系,优先选择 LangGraph 或 LangChain。

四、选型建议(按场景)

在这里插入图片描述

五、一句话概括

LangChain:LLM 应用的“基础库”
LangGraph:LangChain 的“多 Agent 升级包”
AutoGPT:自主 Agent 的“概念验证者”
CrewAI:业务团队的“生产力工具”
AutoGen:科研场景的“多 Agent 实验室”
我的意思是,显示git显示了全部文件,但是为什么模拟创建却什么都没有创建出来,最新命令演示如下: copier copy -n ./my-template ./test-project Copying from template version None create __init__.py (base) (.venv) PS D:\package\iscp-app-aigc-ai> copier copy --pretend ./my-template ./test-project Copying from template version None create __init__.py (base) (.venv) PS D:\package\iscp-app-aigc-ai> cd ./my-template (base) (.venv) PS D:\package\iscp-app-aigc-ai\my-template> (base) (.venv) PS D:\package\iscp-app-aigc-ai\my-template> git ls-files __init__.py {{ project_name }}/__init__.py {{ project_name }}/main.py {{ project_name }}/xiaozhi_agent/__init__.py {{ project_name }}/xiaozhi_agent/autogen_demo/__init__.py {{ project_name }}/xiaozhi_agent/autogen_demo/application/__init__.py {{ project_name }}/xiaozhi_agent/autogen_demo/application/xxx_assistant_service.py {{ project_name }}/xiaozhi_agent/autogen_demo/common/__init__.py {{ project_name }}/xiaozhi_agent/autogen_demo/common/agent_name.py {{ project_name }}/xiaozhi_agent/autogen_demo/domain/__init__.py {{ project_name }}/xiaozhi_agent/autogen_demo/domain/atomic_agents/__init__.py {{ project_name }}/xiaozhi_agent/autogen_demo/domain/atomic_agents/xxx_agent.py {{ project_name }}/xiaozhi_agent/autogen_demo/domain/tools/__init__.py {{ project_name }}/xiaozhi_agent/autogen_demo/domain/tools/xxx_tool.py {{ project_name }}/xiaozhi_agent/autogen_demo/interface/__init__.py {{ project_name }}/xiaozhi_agent/autogen_demo/interface/input_output_parameters.py {{ project_name }}/xiaozhi_agent/autogen_demo/interface/xxx_assistant_app.py {{ project_name }}/xiaozhi_agent/autogen_demo/resource/__init__.py {{ project_name }}/xiaozhi_agent/autogen_demo/resource/app_config.yaml {{ project_name }}/xiaozhi_agent/autogen_demo/resource/xxx_agent_config.yaml {{ project_name }}/xiaozhi_agent/langgraph_demo/__init__.py {{ project_name }}/xiaozhi_agent/langgraph_demo/application/__init__.py {{ project_name }}/xiaozhi_agent/langgraph_demo/application/xxx_assistant_graph/__init__.py {{ project_name }}/xiaozhi_agent/langgraph_demo/application/xxx_assistant_graph/main_graph/__init__.py {{ project_name }}/xiaozhi_agent/langgraph_demo/application/xxx_assistant_graph/main_graph/graph.py {{ project_name }}/xiaozhi_agent/langgraph_demo/application/xxx_assistant_graph/main_graph/node.py {{ project_name }}/xiaozhi_agent/langgraph_demo/application/xxx_assistant_graph/main_graph/state.py {{ project_name }}/xiaozhi_agent/langgraph_demo/application/xxx_assistant_graph/yyy_graph/__init__.py {{ project_name }}/xiaozhi_agent/langgraph_demo/application/xxx_assistant_graph/yyy_graph/graph.py {{ project_name }}/xiaozhi_agent/langgraph_demo/application/xxx_assistant_graph/yyy_graph/node.py {{ project_name }}/xiaozhi_agent/langgraph_demo/application/xxx_assistant_graph/yyy_graph/state.py {{ project_name }}/xiaozhi_agent/langgraph_demo/common/__init__.py {{ project_name }}/xiaozhi_agent/langgraph_demo/common/agent_name.py {{ project_name }}/xiaozhi_agent/langgraph_demo/domain/__init__.py {{ project_name }}/xiaozhi_agent/langgraph_demo/domain/tools/__init__.py {{ project_name }}/xiaozhi_agent/langgraph_demo/domain/tools/xxx_tool.py {{ project_name }}/xiaozhi_agent/langgraph_demo/interface/__init__.py {{ project_name }}/xiaozhi_agent/langgraph_demo/interface/input_output_parameters.py {{ project_name }}/xiaozhi_agent/langgraph_demo/interface/xxx_assistant_app.py {{ project_name }}/xiaozhi_agent/langgraph_demo/resource/__init__.py {{ project_name }}/xiaozhi_agent/langgraph_demo/resource/config/AgentName(Xxx)/AgentName(Xxx).yaml {{ project_name }}/xiaozhi_agent/langgraph_demo/resource/config/app_config.yaml {{ project_name }}/xiaozhi_agent/langgraph_demo/resource/xxx_agent_config.yaml (base) (.venv) PS D:\package\iscp-app-aigc-ai\my-template>
10-21
你已经提供了极其关键的信息,现在我们可以 **精准定位问题根源**。 --- ### 🔍 你的核心问题: > **`git ls-files` 显示了所有模板文件(包括深层结构),但执行 `copier copy -n ./my-template ./test-project` 却只创建了一个 `__init__.py` 文件!** 这说明: ❌ Copier 并没有“看到”你期望的那些嵌套目录和文件(如 `{{ project_name }}/xiaozhi_agent/...`) ✅ 但它能看到根目录下的 `__init__.py` --- ## ✅ 真正的原因是: > ❗ **你的模板路径 `./my-template` 没有被识别为有效的 Git 仓库上下文(Git worktree),导致 Copier 只扫描了顶层可见文件,而忽略了子目录中的 Jinja 路径。** 虽然你在 `my-template/` 目录里运行了 `git ls-files` 并看到了所有文件,但 **Copier 不是从当前目录判断 Git 状态的 —— 它需要一个完整的 Git 仓库结构,并且必须能正确解析引用。** --- ## 🧨 根本原因分析 ### 1. `git ls-files` 能看到文件 ≠ Copier 能看到文件 - `git ls-files` 是在 `my-template` 目录下运行的,它假设当前是一个 Git 工作树。 - 但如果这个目录 **不是通过 `git clone` 创建的**,或者 `.git/` 缺失、损坏、位置不对,Copier 就无法加载完整文件列表。 ### 2. Copier 的行为逻辑(v9+) Copier 在读取模板时会: 1. 检查 `template_src` 是否是一个 Git 仓库; 2. 如果是,则 checkout 到指定 `--vcs-ref`(默认最新 tag 或 HEAD); 3. 使用 Git 的索引(index)来获取所有应复制的文件; 4. ❌ 如果不是有效 Git 仓库 → Copier **退化为仅扫描顶层非隐藏文件** → 导致深层结构丢失! 这就是为什么你只看到: ``` create __init__.py ``` 而不是成百上千个嵌套文件。 --- ## ✅ 解决方案:确保 `my-template` 是一个有效的 Git 仓库 ### ✅ 步骤 1:进入模板目录并初始化 Git(如果还没做) ```bash cd ./my-template # 初始化 Git 仓库(如果还没有 .git 目录) git init # 添加所有文件到暂存区 git add . # 提交第一次版本 git commit -m "Initial commit: template structure" ``` 📌 必须要有一次提交!Copier 需要可追溯的 `HEAD` 引用。 --- ### ✅ 步骤 2:从外部调用 `copier copy`,并显式指定 `--vcs-ref=HEAD` ```bash # 回到父目录 cd .. # 执行复制命令,明确告诉 Copier 使用当前 HEAD copier copy --vcs-ref=HEAD -n ./my-template ./test-project ``` 👉 这样 Copier 才会: - 正确识别这是一个 Git 仓库; - 加载全部被 Git 跟踪的文件(包括 `{{ project_name }}/**/*`); - 渲染并模拟生成所有预期路径。 --- ## 🛠️ 验证是否成功 运行后你应该看到大量输出,例如: ``` Copying from template version None create __init__.py create my_project/__init__.py create my_project/main.py create my_project/xiaozhi_agent/autogen_demo/application/xxx_assistant_service.py create my_project/xiaozhi_agent/langgraph_demo/application/xxx_assistant_graph/main_graph/graph.py ... ``` ✅ 如果出现了这些深层路径,说明问题已解决。 --- ## ⚠️ 常见陷阱排查清单 | 问题 | 检查方式 | 修复方法 | |------|--------|---------| | `.git/` 目录不存在 | `ls -la ./my-template/.git` | 运行 `git init && git add . && git commit` | | 没有提交历史 | `git log --oneline` 为空 | 至少提交一次 | | 使用了相对路径但不在 Git 上下文中 | 外部调用 Copier | 改用 `--vcs-ref=HEAD` | | `.gitignore` 忽略了某些文件 | `git check-ignore -v **/*` | 修改 `.gitignore` 规则 | | 模板路径包含空格或特殊字符 | 路径中有 `()`、`#` 等 | 使用英文路径 | --- ## 💡 额外建议:添加 `copier.yml` 控制行为 确保你的模板根目录有: ```yaml # my-template/copier.yml project_name: type: str default: "my_project" help: "The name of the generated project" ``` 否则 Jinja 路径 `{{ project_name }}` 可能无法正确渲染。 --- ## ✅ 总结:你现在要做的三件事 1. **初始化 Git 并提交模板** ```bash cd ./my-template git init git add . git commit -m "Initial template" ``` 2. **回到上级目录,使用 `--vcs-ref=HEAD` 执行模拟** ```bash cd .. copier copy --vcs-ref=HEAD -n ./my-template ./test-project ``` 3. **确认输出中出现所有深层文件路径** --- 一旦完成,你的子目录结构就会完整生成! ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值