autogen相关开源项目
autogen、crewai、langflow、ragflow等Agent与RAG相关汇总入口。摘要做一些简介和对比。
一些学习资源或参考资料:
- 用MCP为AutoGen接入LangFlow进行文档问答 - 博客
- 用MCP为AutoGen接入LangFlow进行文档问答 - 视频
- AutoGen+MCP Server实现网络搜索+文件操作 - 博客
- AutoGen+MCP Server实现网络搜索+文件操作 - 视频
crewAI
领先的多智能体平台:通过强大的人工智能代理简化跨行业的流程。使用任何LLM和云平台构建和部署自动化工作流。
用于协调角色扮演的自主人工智能代理的框架。通过培养协作智能,CrewAI 赋能代理无缝协作,解决复杂任务。
github:https://github.com/crewAIInc/crewAI
autogen
AutoGen is a framework for creating multi-agent AI applications that can act autonomously or work alongside humans.
github:https://github.com/microsoft/autogen
官网:https://microsoft.github.io/autogen/stable/
安装:
安装autogen和autogen studio:
bash
pip install -U "autogen-agentchat" "autogen-ext[openai]"
pip install -U "autogenstudio"
studio启动:
bash
autogenstudio ui --port 8080 --appdir ./my-app
方便启动,设置zshrc:
bash
alias studio="autogenstudio ui --port 8080 --appdir ~/projects/autogen_studio"
Autogen定位为多智能体编排工具,与FlangFlow的对比:
AutoGen 与 OpenAI Agent SDK 的对比:
维度 | AutoGen | OpenAI Agent SDK |
---|---|---|
开发背景 | 微软开发,开源多代理框架 | OpenAI 推出,轻量级生产就绪工具包 |
核心功能 | 多代理协作、高度可定制、代码执行、人机交互 | 轻量设计、多代理编排、结构化输出、OpenAI 集成 |
易用性 | 学习曲线稍陡,AutoGen Studio 降低门槛 | 上手简单,API 清晰,适合快速开发 |
适用场景 | 复杂协作任务(软件开发、数据分析) | 简单到中等任务(客服、内容生成) |
社区与生态 | 开源,社区活跃,支持多种 LLM | OpenAI 生态,发展中,专注 OpenAI 模型 |
局限性 | 配置复杂,非 OpenAI 模型需额外适配 | 功能有限,定制性较弱,仍在完善 |
推荐人群 | 需要深度定制、复杂工作流的开发者 | 快速原型开发、依赖 OpenAI 模型的用户 |
AutoGen与其他竞品对比:
框架 | 开发背景 | 核心特点 | 优势 | 与 AutoGen 的区别 |
---|---|---|---|---|
AutoGen | 微软,开源 | 多代理协作、可定制、代码执行、人机交互 | 企业级功能,复杂任务支持 | - |
CrewAI | 开源社区 | 角色分工、多代理协作 | 简单易用,快速原型开发 | 更简洁,功能不如 AutoGen 丰富 |
LangChain / LangGraph | 开源社区 | 数据整合、多代理工作流(图结构) | 生态丰富,工具调用强 | 偏单代理或数据驱动,协作性稍弱 |
OpenAI Agent SDK | OpenAI | 轻量设计、结构化输出、OpenAI 集成 | 上手快,生产就绪 | 功能基础,定制性不如 AutoGen |
MetaGPT | 开源社区 | 软件开发团队模拟、代码生成 | 专注软件开发,代码质量高 | 应用范围窄,协作不如 AutoGen 通用 |
MiniAutoGen | 开源社区 | 轻量多代理对话 | 简洁灵活,资源占用低 | 功能少,缺乏企业级支持 |
GenWorlds | 开源社区 | 事件驱动、多代理交互 | 交互性强,适合复杂模拟 | 事件而非对话驱动,配置更复杂 |
AutoGPT | 开源社区 | 单代理任务自动化 | 配置简单,适合小任务 | 无多代理协作,定制性弱 |
多智能体框架里面,最值得研究的首推crewAI,适合入门,体验好。
langflow
Langflow is a powerful tool for building and deploying AI-powered agents and workflows.
github:https://github.com/langflow-ai/langflow
安装:
Install with uv (recommended)
bash
uv venv langflow
cd langflow && source bin/activate
uv pip install langflow
bash
alias langflow="cd ~/projects/langflow && source bin/activate && python -m langflow run"
Install with pip
bash
pip install langflow
运行:
bash
python -m langflow run
方便启动,设置zshrc:
bash
alias langflow="python -m langflow run"
与autogen对比,简单理解:
Langflow 就像一个可视化编程环境,你可以用它来设计各种 NLP 流程,包括如何处理文本、调用模型等等。如果你想创建一个问答系统,你可能会用 Langflow 连接一个文档加载器、一个文本分割器、一个向量数据库和一个语言模型。
AutoGen 更像是一个“导演”,你可以定义多个“演员”(智能体),并告诉他们各自的角色和目标,然后让他们相互交流、协作,共同完成一个复杂的任务。例如,你可以创建一个程序员智能体和一个项目经理智能体,让他们一起完成一个软件开发项目。
autogen与langflow的使用场景不一样,langflow的RAG功能比autogen的更强。
使用文档QA示例:
简单替换openai为gemini:
文档查询的工作流就创建完毕了,可以在对话框问答,也可以通过api:
curl -X POST \
"http://127.0.0.1:7860/api/v1/run/c6973f72-73c1-46bd-baaf-408b9482a6c1?stream=false" \
-H 'Content-Type: application/json'\
-d '{"input_value": "如何解锁copilot",
"output_type": "chat",
"input_type": "chat",
"tweaks": {
"ChatInput-p9oJx": {},
"ChatOutput-q3Esq": {},
"ParseData-RHvJ3": {},
"File-ijQBE": {},
"Prompt-NgjhF": {},
"GoogleGenerativeAIModel-1A1Me": {}
}}'
在roo code中让AI写自己的MCP Server,提示词示例:
请为我开发一个用于文档问答系统的MCP Tool,要求实现用户能够输入要检索的提示词,然后进行检索,最后获取到检索的结果。
下面是文档问答系统的api交互方式:
## 请求内容如下,其中input_value的值就是用于检索的提示词
curl -X POST \
"http://127.0.0.1:7860/api/v1/run/c6973f72-73c1-46bd-baaf-408b9482a6c1?stream=false" \
-H 'Content-Type: application/json'\
-d '{"input_value": "如何解锁copilot",
"output_type": "chat",
"input_type": "chat",
"tweaks": {
"ChatInput-p9oJx": {},
"ChatOutput-q3Esq": {},
"ParseData-RHvJ3": {},
"File-ijQBE": {},
"Prompt-NgjhF": {},
"GoogleGenerativeAIModel-1A1Me": {}
}}'
## 响应内容格式如下,其中text的值就是检索到的结果
{"session_id":"c6973f72-73c1-46bd-baaf-408b9482a6c1","outputs":[{"inputs":{"input_value":"如何解锁copilot"},"outputs":[{"results":{"message":{"text_key":"text","data":{"timestamp":"2025-03-25T12:09:12+00:00","sender":"Machine","sender_name":"AI","session_id":"c6973f72-73c1-46bd-baaf-408b9482a6c1","text":"要解锁完整版的Copilot并解决调用Claude3.7模型报错,需要去掉`x-onbehalf-extension-id`。具体步骤是:\n\n1. 找到配置文件并去掉以下代码:`,\"x-onbehalf-extension-id\":`${A}/${c}`\n2. 保存修改后的文件。\n3. 重启VS Code。\n\n解锁后,Copilot就可以使用claude 3.7模型了。\n","files":[],"error":false,"edit":false,"properties":{"text_color":"","background_color":"","edited":false,"source":{"id":"GoogleGenerativeAIModel-1A1Me","display_name":"Google Generative AI","source":"gemini-2.0-flash"},"icon":"GoogleGenerativeAI","allow_markdown":false,"positive_feedback":null,"state":"complete","targets":[]},"category":"message","content_blocks":[],"id":"6605c870-ddef-4c0a-83a8-cb84b86c9bdf","flow_id":"c6973f72-73c1-46bd-baaf-408b9482a6c1"},"default_value":"","text":"要解锁完整版的Copilot并解决调用Claude3.7模型报错,需要去掉`x-onbehalf-extension-id`。具体步骤是:\n\n1. 找到配置文件并去掉以下代码:`,\"x-onbehalf-extension-id\":`${A}/${c}`\n2. 保存修改后的文件。\n3. 重启VS Code。\n\n解锁后,Copilot就可以使用claude 3.7模型了。\n","sender":"Machine","sender_name":"AI","files":[],"session_id":"c6973f72-73c1-46bd-baaf-408b9482a6c1","timestamp":"2025-03-25T12:09:12+00:00","flow_id":"c6973f72-73c1-46bd-baaf-408b9482a6c1","error":false,"edit":false,"properties":{"text_color":"","background_color":"","edited":false,"source":{"id":"GoogleGenerativeAIModel-1A1Me","display_name":"Google Generative AI","source":"gemini-2.0-flash"},"icon":"GoogleGenerativeAI","allow_markdown":false,"positive_feedback":null,"state":"complete","targets":[]},"category":"message","content_blocks":[]}},"artifacts":{"message":"要解锁完整版的Copilot并解决调用Claude3.7模型报错,需要去掉`x-onbehalf-extension-id`。具体步骤是:\n\n1. 找到配置文件并去掉以下代码:`,\"x-onbehalf-extension-id\":`${A}/${c}`\n\n2. 保存修改后的文件。\n\n3. 重启VS Code。\n\n解锁后,Copilot就可以使用claude 3.7模型了。\n\n","sender":"Machine","sender_name":"AI","files":[],"type":"object"},"outputs":{"message":{"message":"要解锁完整版的Copilot并解决调用Claude3.7模型报错,需要去掉`x-onbehalf-extension-id`。具体步骤是:\n\n1. 找到配置文件并去掉以下代码:`,\"x-onbehalf-extension-id\":`${A}/${c}`\n2. 保存修改后的文件。\n3. 重启VS Code。\n\n解锁后,Copilot就可以使用claude 3.7模型了。\n","type":"text"}},"logs":{"message":[]},"messages":[{"message":"要解锁完整版的Copilot并解决调用Claude3.7模型报错,需要去掉`x-onbehalf-extension-id`。具体步骤是:\n\n1. 找到配置文件并去掉以下代码:`,\"x-onbehalf-extension-id\":`${A}/${c}`\n\n2. 保存修改后的文件。\n\n3. 重启VS Code。\n\n解锁后,Copilot就可以使用claude 3.7模型了。\n\n","sender":"Machine","sender_name":"AI","session_id":"c6973f72-73c1-46bd-baaf-408b9482a6c1","stream_url":null,"component_id":"ChatOutput-q3Esq","files":[],"type":"text"}],"timedelta":null,"duration":null,"component_display_name":"Chat Output","component_id":"ChatOutput-q3Esq","used_frozen_result":false}]}]}
然后扔给AI就可以了:
一次性完成,非常完美:
然后roo code就可以调用MCP了:
Flowise
Drag & drop UI to build your customized LLM flow
与langflow类似,是langflow最大的竞品。
github:https://github.com/FlowiseAI/Flowise
与langflow区别:
Langflow更适合需要深度定制和与LangChain框架紧密集成的复杂项目,尤其是在原型设计阶段 。它的界面对于熟悉LangChain的开发人员来说很直观。
Flowise更侧重于易用性和快速部署,拥有一个模板市场,使其成为初学者和希望快速构建LLM应用程序的团队的理想选择。它在集成外部平台和处理来自各种来源的数据方面可能更灵活。
Langflow、FlowiseAI和Dify的对比分析:
相同点:
可视化界面: Langflow、FlowiseAI和Dify都提供用户友好的拖放界面,旨在简化大型语言模型(LLM)应用程序的构建过程,无需或很少需要编码. 它们都旨在使AI开发对更广泛的用户可访问.
LLM应用构建: 这三个平台都专注于帮助用户构建基于大型语言模型的应用程序,如聊天机器人、文档分析系统等.
低代码/无代码: 它们都属于低代码或无代码平台,旨在降低AI开发的门槛.
集成能力: 它们都支持与各种AI模型、API和数据源的集成.
快速原型设计: 这三个平台都非常适合快速原型设计和实验.
不同点:
langgraph
Build resilient language agents as graphs.
github:https://github.com/langchain-ai/langgraph
官网:https://langchain-ai.github.io/langgraph/
核心定位: 用于构建复杂、有状态、多参与者的 LangChain 应用的框架,特别是涉及智能体 (Agents) 交互的场景。
设计理念: 将工作流视为一个图 (Graph),其中节点代表不同的步骤或智能体,边代表它们之间的交互和状态转移。这使得构建更复杂的、可以进行决策和循环的流程成为可能。
与langflow区别:
简单理解:
Langflow 就像一个画板,你可以用各种预制的形状(LangChain 组件)画出你的 NLP 流程。
LangGraph 更像是一个编程框架,你需要用代码来定义一个复杂的流程图,其中每个节点可以是一个智能体,边代表它们之间的对话和协作。
总结:langgraph复杂,比Langflow复杂,不清楚使用场景就默认不碰。
ragflow
RAGFlow is an open-source RAG (Retrieval-Augmented Generation) engine based on deep document understanding.
github:https://github.com/infiniflow/ragflow
与langflow区别:
简单理解:
RAGflow 更像是一个专精的工具,它的目标就是让你更方便、更高效地构建RAG系统。 它可能提供了一些预设的 RAG 流程、优化的组件或者特定的功能来简化 RAG 的开发过程。
Langflow 是一个多面手,它提供了一个通用的平台,你可以用它来搭建各种 NLP 应用,其中构建 RAG 系统只是它的一个能力。 你可以使用 Langflow 提供的各种工具和组件来创建一个RAG工作流。
LightRAG
LightRAG: Simple and Fast Retrieval-Augmented Generation
github:https://github.com/HKUDS/LightRAG
与ragflow区别:
说明:
- LightRAG: 更像一个轻量级工具,适合快速部署和动态调整,强调效率和低资源占用。
- RAGFlow: 更像一个全能平台,适合需要强大功能和复杂数据处理的企业场景。
与graphrag对比:
graphrag
A modular graph-based Retrieval-Augmented Generation (RAG) system
github:https://github.com/microsoft/graphrag
官网:https://microsoft.github.io/graphrag/
Graph RAG 与 RAGFlow 对比:
Graph RAG 和 RAGFlow 都是检索增强生成(Retrieval-Augmented Generation, RAG)技术领域的代表性框架,但它们在设计理念、功能定位和技术实现上存在显著差异。以下从多个维度对两者进行详细对比,帮助理解它们的适用场景和优劣势。
- 基本概念
Graph RAG
- 定义: Graph RAG 是一种基于知识图谱(Knowledge Graph, KG)的 RAG 技术,通过将信息组织为实体和关系的结构化网络,增强检索和生成能力。它由微软提出并开源,强调利用图结构来提升复杂查询的处理能力。
- 核心特点: 通过知识图谱捕捉实体间的关系,支持多跳推理和全局性问题的回答,例如总结性查询(Query-Focused Summarization, QFS)。
- 技术基础: 结合大语言模型(LLM)自动构建知识图谱,并通过图遍历和社区摘要生成答案。
RAGFlow
- 定义: RAGFlow 是一个开源的 RAG 引擎,由 Infiniflow 开发,专注于深度文档理解和多模态数据处理,旨在为企业和个人提供高效的知识检索与生成工作流。
- 核心特点: 支持多种文件格式(PDF、Word、图片等)的精细解析,提供灵活的配置和可视化工具,强调易用性和工程化实践。
- 技术基础: 集成多种 LLM 和向量数据库,优化文档切分、索引和检索流程,支持 Graph RAG 作为其功能模块之一。
- 技术实现对比
维度 | Graph RAG | RAGFlow |
---|---|---|
数据表示 | 基于知识图谱,结构化表示实体和关系 | 主要基于向量数据库,支持知识图谱扩展 |
检索方式 | 图遍历 + 向量搜索,强调关系推理 | 向量相似性检索为主,可选知识图谱增强 |
文档处理 | 依赖外部预处理,专注图构建和查询 | 内置深度文档解析,支持多模态和复杂格式 |
生成能力 | 通过社区摘要和图上下文生成全局答案 | 结合检索内容和 LLM 生成,支持引用溯源 |
扩展性 | 专注于知识图谱场景,扩展需自定义实现 | 模块化设计,支持多种 LLM 和数据库集成 |
- 功能与优势
Graph RAG
- 优势:
- 复杂查询处理: 适合多跳推理和全局性问题,如“数据集的主题是什么?”。
- 上下文理解: 通过知识图谱提供更丰富的语义上下文,减少 LLM 幻觉。
- 高效性: 相比传统 RAG,Token 消耗更低(论文显示减少 26%-97%)。
- 局限:
- 构建成本: 知识图谱的自动构建依赖 LLM,计算资源需求较高。
- 适用范围: 更适合结构化数据或需深度关系分析的场景,对非结构化数据处理能力有限。
RAGFlow
- 优势:
- 多模态支持: 支持丰富的文件类型(如图片、PDF、Excel),解析能力强。
- 易用性: 提供可视化界面和配置选项,降低使用门槛。
- 灵活性: 集成 Graph RAG 功能,同时支持传统 RAG,适用场景更广。
- 局限:
- 检索精度: 传统向量检索为主,在复杂推理任务上可能不如 Graph RAG。
- 性能开销: 处理复杂文档时,解析和索引可能较耗时。
- 适用场景
- Graph RAG:
- 适用于需要深度语义理解和关系推理的任务,如知识问答、学术研究、法律分析等。
- 适合已有结构化数据或能构建高质量知识图谱的场景。
- RAGFlow:
- 适用于企业知识管理、文档密集型应用(如技术文档、客服知识库)。
- 适合快速部署和处理非结构化、多模态数据的场景。
- 实际案例对比
- 案例: 处理《西游记》第 3-7 回内容,回答“唐僧团队的关系如何影响任务?”。
- Graph RAG: 通过构建人物关系图谱(唐僧-孙悟空-猪八戒等),分析多跳关系,提供深入回答。
- RAGFlow: 依赖文档切片和向量检索,可能返回片段化信息,需用户进一步整合。
- 结论与建议
- 选择 Graph RAG:
- 如果你的需求集中在复杂查询、多跳推理或全局总结,且有资源支持知识图谱构建。
- 选择 RAGFlow:
- 如果你需要一个开箱即用的 RAG 解决方案,处理多样化文档,并希望兼顾易用性和扩展性。
- 结合使用: RAGFlow 已集成 Graph RAG 功能,可根据具体任务灵活切换,兼顾两者的优势。
综上,Graph RAG 在特定场景下提供更高的精度和深度,而 RAGFlow 则以全面性和实用性取胜。选择时应基于数据特性、业务需求和资源条件权衡。