项目地址:https://github.com/bytedance/deer-flow/
【全新的 Multi-Agent 架构设计】独家设计的 Research Team 机制,支持多轮对话、多轮决策和多轮任务执行。与 LangChain 原版 Supervisor 相比,显著减少 Tokens 消耗和 API 调用次数,从而提升了执行效率。同时,Re-planning 机制赋予系统更高的灵活性,能够动态迭代任务计划以适应复杂场景。
【基于 LangStack 的开源框架】DeerFlow 采用 Multi-Agent 架构设计,构建于 LangChain 和 LangGraph 的开源框架之上,代码结构清晰、逻辑简洁,极大地降低了学习门槛,非常适合初学者快速深入理解多智能体系统的工作原理,轻松探索多智能体协作的潜力,同时体验 LangStack 的强大功能。
【支持 MCP 无缝集成】与 Cursor、Claude Desktop 一样,DeerFlow 也是一个 MCP Host,这意味着你可以通过 MCP 来拓展 DeerFlow 的 Researcher Agent 能力,从而实现类似私域搜索、域内知识库访问、Computer / Phone / Browser Use 等功能。
【AI 生成的 Prompt】DeerFlow 采用了 Meta Prompt 的模式,所有 Prompts 都由 OpenAI 的官方 Meta Prompt 生成,即让大模型来生成自己的 Prompt,从而确保了 Prompt 的高质量,同时也极大的降低了 Prompt 工程的门槛。
【Human-in-the-loop】不满意 AI 生成的计划或报告?DeerFlow 支持用户通过自然语言对生成的内容进行实时修改和优化。无论是调整细节、补充信息,还是重新定义方向,用户都可以轻松地与 AI协作,确保最终结果完全符合预期。
【支持生成博客及PPT】DeerFlow 支持从报告生成双人主持的播客,借助火山引擎的语音技术以及丰富的音色,可以生成非常自然的播客音频内容。同时,DeerFlow 支持从报告生成 PPT,并且支持生成文字版的 PPT。
1,核心技术
【LangStack框架】得益于 LangChain 其活跃且丰富的社区贡献,本项目得以快速的与包括 Tavily Search、DuckDuckGo、Brave Search、Python REPL 等工具进行集成,同时我们还在项目中将 Jina Reader 服务包装为 LangChain 工具。
【Meta Prompt】采用的是 Meta Prompt 的方式,即让大语言模型自动生成 Prompt。
【Multi-Ageng 架构】在 LangChain 和 LangGraph 中,常见 Multi-Agent 架构包括:
- Singe Agent:整个系统只有一个 Agent 负责处理所有的工作。
- Network:每个 Agent 都可以与其他所有 Agent 通信。任何 Agent 都可以决定接下来要调用哪个其他 Agent。
Supervisor:每个 Agent 只与一个 Supervisor Agent 通信。Supervisor Agent 决定接下来应该调用哪个 Agent。
Supservisor(as tools):单个 Agent 可以被表示为一个工具。在这种情况下,Supservisor Agent 使用一个 tool-call 调用 LLM 来决定调用哪个 Agent 工具。
Hierachical:具有多个 Supservisor 的多 Agent 系统。这是 Supservisor 架构的一个泛化,允许更复杂的控制流程。
Custom:每个 Agent 只与部分 Agent 通信。流程的部分是确定性的,只有某些 Agent 可以决定接下来要调用哪个其他 Agent。
【LangGraph 中的 StateGraph】在 Multi-Agent 架构中,通常会用 Graph 来表示系统网络拓扑结构。在 Graph 中,Agent 表示为 Graph 上的一个节点。每个 Agent 节点执行其步骤,并决定是结束执行还是将控制权交给另一个代理,包括可能将控制权交回自身(自循环)。StateGraph 是一种用于表示状态和状态之间转换关系的 Graph 结构。在 StateGraph 中,节点(Node)表示 Agent,边(Edge)表示 Agent 之间的转换逻辑,在整个 Graph 中自上而下都在传递着同一份状态(State,有的地方也成为 Context),State 是一个字典对象,所有节点都可以读取或更改该状态的值。通过定义 Node 和 Edge,开发者可以构建一个清晰的状态流,从而更好的管理系统的行为。在 LangGraph 中,你可以用多种方式创建节点和用于连接节点的边,其中最简单的方法是为每一个节点创建一个函数,然后通过手工添加的方式构建一个状态图。
【Handoffs 模式】在 Multi-Agent Supervisor 交互中,一个常见的模式是 Handoffs,即一个 Agent 将控制权交给另一个 Agent。
例如,在上图中,位于中央的 Router 会根据当前状态,将控制权根据规则跳转到:
Researcher :如果发送者是 Chat Generator
Chat Generator:如果发送者是 Researcher
【研究团队中的 Agents】
用户的原始问题首先会到达 Coordinator,由它判定是否为敏感内容,如果是,则会礼貌回应并结束;否则,handoff 给 Planner。
Planner 负责生成研究计划,并通过 Interrupt 机制(HumanFeedback)允许用户使用自然语言修改计划。用户确认计划后,Planner 会 handoff 给 Research Team 并开始研究。
Research Team 会根据研究计划,机械化的依次调取 Researcher 或 Coder 进行资料收集或代码执行,它们都是 ReAct 风格的子 Agent。
当 Research Team 完成工作后,将会 handoff 回 Planner。若 Planner 认为研究已完成,会 handoff 给 Reporter;否则会继续规划(Re-plan)并 handoff 回 Research Team 进行下一轮研究迭代,直到最终完成。
Reporter 负责将所有上下文进行总结陈词,并生成最终的研究报告,从而结束整个流程。
【核心工具】 多亏有了 LangChain 丰富的社区工具集,DeerFlow 内置了以下工具供大模型调用:
2,项目安装
【环境要求】
- Python: 版本 3.12+
- Node.js: 版本 22+
- uv: 简化 Python 环境和依赖管理。uv会自动在根目录创建虚拟环境并为您安装所有必需的包—无需手动安装 Python 环境。
- nvm: 轻松管理多个 Node.js 运行时版本。
- pnpm: 安装和管理 Node.js 项目的依赖。
【安装步骤】
- 安装依赖
uv sync
- 配置搜索引擎:Tavily AI(必选)、JINA 用于爬虫,可选。
# 应用程序设置 DEBUG=True # 开启调试模式,开发环境使用,显示详细错误信息 APP_ENV=development # 设置当前环境为开发环境(可选值如 production、staging 等)# Docker 构建参数 NEXT_PUBLIC_API_URL="http://localhost:8000/api" # 前端访问后端 API 的基础地址# 搜索引擎配置(推荐使用 tavily,可选值:tavily、duckduckgo、brave_search、arxiv) SEARCH_API=tavily # 使用的搜索引擎为 tavily TAVILY_API_KEY=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 # tavily 的 API 密钥# 其他搜索引擎(如使用 brave_search,需要填写其密钥) # BRAVE_SEARCH_API_KEY=xxx # brave 搜索的 API 密钥(仅当 SEARCH_API=brave_search 时需要) # JINA_API_KEY=jina_xxx # Jina 搜索 API 密钥(可选)# 火山引擎 TTS 配置(可选,用于生成播客的文本转语音服务) VOLCENGINE_TTS_APPID=xxx # 火山引擎 TTS 的应用 ID VOLCENGINE_TTS_ACCESS_TOKEN=xxx # 火山引擎 TTS 的访问令牌 # VOLCENGINE_TTS_CLUSTER=volcano_tts # 可选,指定语音集群,默认值为 volcano_tts # VOLCENGINE_TTS_VOICE_TYPE=BV700_V2_streaming # 可选,设置语音类型,默认值为 BV700_V2_streaming# LangSmith 追踪与监控配置(可选,用于链式模型追踪分析) # LANGSMITH_TRACING=true # 是否开启 LangSmith 跟踪 # LANGSMITH_ENDPOINT="https://api.smith.langchain.com" # LangSmith 接口地址 # LANGSMITH_API_KEY="xxx" # LangSmith 的 API 密钥 # LANGSMITH_PROJECT="xxx" # LangSmith 项目名称# [!NOTE] # 模型配置与更多设置请参考文档:docs/configuration_guide.md
- 配置OpenAI 网关 LLM
cp conf.yaml.example conf.yamlBASIC_MODEL:base_url: ""model: "gpt-4o-mini"api_key: ""
- 命令行启动
uv run main.py
- UI 启动,CMD切换Python环境后执行:
conda activate deer
cd D:\PyCharmWorkSpace\deer-flow
bootstrap.bat -d
3,使用手册
【网络检索】撰写关于武汉传统美食的文章
【语音生成】
- 配置火山 TTS:火山引擎
【PPT生成】marp
# Convert slide deck into PowerPoint document (PPTX) npx @marp-team/marp-cli@latest slide-deck.md --pptx npx @marp-team/marp-cli@latest slide-deck.md -o output.pptx