当前位置: 首页 > news >正文

DeepSearch:字节新一代 DeerFlow 框架

项目地址: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 生成的 PromptDeerFlow 采用了 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

相关文章:

  • Swagger使用
  • 全栈项目中是否可以实现统一错误处理链?如果可以,这条链路该如何设计?需要哪些技术支撑?是否能同时满足性能、安全性和用户体验需求?
  • 机器学习 --- 模型选择与调优
  • 山东大学计算机图形学期末复习8——CG11下
  • ElfBoard技术实战|ELF 2开发板本地部署DeepSeek大模型的完整指南
  • C#发送文件到蓝牙设备
  • 【实战篇】低代码报表开发——平台运营日报表的开发实录
  • Spring 框架 JDBC 模板技术详解
  • SQL实战:06交叉日期打折问题求解
  • 解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs- MCP内幕解析
  • 观QFramework框架底层逻辑有感
  • 经典卷积神经网络
  • Secs/Gem第四讲(基于secs4net项目的ChatGpt介绍)
  • 开源免费iOS或macOS安装虚拟机运行window/Linux系统
  • Qt中控件的Viewport作用
  • 服务器连接多客户端
  • 文章复现|(1)整合scRNA-seq 和空间转录组学揭示了子宫内膜癌中 MDK-NCL 依赖性免疫抑制环境
  • 数据结构中双栈的实现方法分享
  • PH热榜 | 2025-05-15
  • 解码生命语言:深度学习模型TranslationAI揭示RNA翻译新规则
  • 获派驻6年后,中国驻厄瓜多尔大使陈国友即将离任
  • 明查| 新一代AI诊疗系统可3秒筛查13种癌症?没有证据
  • 法学联合书单|法庭上的妇女
  • 彭丽媛同巴西总统夫人罗桑热拉参观中国国家大剧院
  • 兰州大学教授安成邦加盟复旦大学中国历史地理研究所
  • 铁路部门:确保沿线群众安全,焦柳铁路6个区段将陆续安装防护栅栏