跳转到内容

autogen相关开源项目

autogen、crewai、langflow、ragflow等Agent与RAG相关汇总入口。摘要做一些简介和对比。

一些学习资源或参考资料:

crewAI

领先的多智能体平台:通过强大的人工智能代理简化跨行业的流程。使用任何LLM和云平台构建和部署自动化工作流。

用于协调角色扮演的自主人工智能代理的框架。通过培养协作智能,CrewAI 赋能代理无缝协作,解决复杂任务。

github:https://github.com/crewAIInc/crewAI

官网:https://www.crewai.com/

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 的对比:

维度AutoGenOpenAI Agent SDK
开发背景微软开发,开源多代理框架OpenAI 推出,轻量级生产就绪工具包
核心功能多代理协作、高度可定制、代码执行、人机交互轻量设计、多代理编排、结构化输出、OpenAI 集成
易用性学习曲线稍陡,AutoGen Studio 降低门槛上手简单,API 清晰,适合快速开发
适用场景复杂协作任务(软件开发、数据分析)简单到中等任务(客服、内容生成)
社区与生态开源,社区活跃,支持多种 LLMOpenAI 生态,发展中,专注 OpenAI 模型
局限性配置复杂,非 OpenAI 模型需额外适配功能有限,定制性较弱,仍在完善
推荐人群需要深度定制、复杂工作流的开发者快速原型开发、依赖 OpenAI 模型的用户

AutoGen与其他竞品对比:

框架开发背景核心特点优势与 AutoGen 的区别
AutoGen微软,开源多代理协作、可定制、代码执行、人机交互企业级功能,复杂任务支持-
CrewAI开源社区角色分工、多代理协作简单易用,快速原型开发更简洁,功能不如 AutoGen 丰富
LangChain / LangGraph开源社区数据整合、多代理工作流(图结构)生态丰富,工具调用强偏单代理或数据驱动,协作性稍弱
OpenAI Agent SDKOpenAI轻量设计、结构化输出、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

官网:https://www.langflow.org/

安装:

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

官网:https://flowiseai.com/

与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

官网:https://ragflow.io/

与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)技术领域的代表性框架,但它们在设计理念、功能定位和技术实现上存在显著差异。以下从多个维度对两者进行详细对比,帮助理解它们的适用场景和优劣势。

  1. 基本概念

Graph RAG

  • 定义: Graph RAG 是一种基于知识图谱(Knowledge Graph, KG)的 RAG 技术,通过将信息组织为实体和关系的结构化网络,增强检索和生成能力。它由微软提出并开源,强调利用图结构来提升复杂查询的处理能力。
  • 核心特点: 通过知识图谱捕捉实体间的关系,支持多跳推理和全局性问题的回答,例如总结性查询(Query-Focused Summarization, QFS)。
  • 技术基础: 结合大语言模型(LLM)自动构建知识图谱,并通过图遍历和社区摘要生成答案。

RAGFlow

  • 定义: RAGFlow 是一个开源的 RAG 引擎,由 Infiniflow 开发,专注于深度文档理解和多模态数据处理,旨在为企业和个人提供高效的知识检索与生成工作流。
  • 核心特点: 支持多种文件格式(PDF、Word、图片等)的精细解析,提供灵活的配置和可视化工具,强调易用性和工程化实践。
  • 技术基础: 集成多种 LLM 和向量数据库,优化文档切分、索引和检索流程,支持 Graph RAG 作为其功能模块之一。
  1. 技术实现对比
维度Graph RAGRAGFlow
数据表示基于知识图谱,结构化表示实体和关系主要基于向量数据库,支持知识图谱扩展
检索方式图遍历 + 向量搜索,强调关系推理向量相似性检索为主,可选知识图谱增强
文档处理依赖外部预处理,专注图构建和查询内置深度文档解析,支持多模态和复杂格式
生成能力通过社区摘要和图上下文生成全局答案结合检索内容和 LLM 生成,支持引用溯源
扩展性专注于知识图谱场景,扩展需自定义实现模块化设计,支持多种 LLM 和数据库集成
  1. 功能与优势

Graph RAG

  • 优势:
    • 复杂查询处理: 适合多跳推理和全局性问题,如“数据集的主题是什么?”。
    • 上下文理解: 通过知识图谱提供更丰富的语义上下文,减少 LLM 幻觉。
    • 高效性: 相比传统 RAG,Token 消耗更低(论文显示减少 26%-97%)。
  • 局限:
    • 构建成本: 知识图谱的自动构建依赖 LLM,计算资源需求较高。
    • 适用范围: 更适合结构化数据或需深度关系分析的场景,对非结构化数据处理能力有限。

RAGFlow

  • 优势:
    • 多模态支持: 支持丰富的文件类型(如图片、PDF、Excel),解析能力强。
    • 易用性: 提供可视化界面和配置选项,降低使用门槛。
    • 灵活性: 集成 Graph RAG 功能,同时支持传统 RAG,适用场景更广。
  • 局限:
    • 检索精度: 传统向量检索为主,在复杂推理任务上可能不如 Graph RAG。
    • 性能开销: 处理复杂文档时,解析和索引可能较耗时。
  1. 适用场景
  • Graph RAG:
    • 适用于需要深度语义理解和关系推理的任务,如知识问答、学术研究、法律分析等。
    • 适合已有结构化数据或能构建高质量知识图谱的场景。
  • RAGFlow:
    • 适用于企业知识管理、文档密集型应用(如技术文档、客服知识库)。
    • 适合快速部署和处理非结构化、多模态数据的场景。
  1. 实际案例对比
  • 案例: 处理《西游记》第 3-7 回内容,回答“唐僧团队的关系如何影响任务?”。
    • Graph RAG: 通过构建人物关系图谱(唐僧-孙悟空-猪八戒等),分析多跳关系,提供深入回答。
    • RAGFlow: 依赖文档切片和向量检索,可能返回片段化信息,需用户进一步整合。
  1. 结论与建议
  • 选择 Graph RAG:
    • 如果你的需求集中在复杂查询、多跳推理或全局总结,且有资源支持知识图谱构建。
  • 选择 RAGFlow:
    • 如果你需要一个开箱即用的 RAG 解决方案,处理多样化文档,并希望兼顾易用性和扩展性。
  • 结合使用: RAGFlow 已集成 Graph RAG 功能,可根据具体任务灵活切换,兼顾两者的优势。

综上,Graph RAG 在特定场景下提供更高的精度和深度,而 RAGFlow 则以全面性和实用性取胜。选择时应基于数据特性、业务需求和资源条件权衡。