DeerFlow:字节新一代 DeepSearch 框架

项目地址: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/81076.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 大表中添加索引的两种常见方式及其优缺点分析

引言 在数据库性能优化过程中,给大表添加索引是一项常见且重要的操作。由于大表数据量庞大,索引的创建过程往往涉及较高的系统开销和复杂的操作流程。本文将介绍两种在大表中添加索引的常见方法:直接添加索引和表复制方式,分别分…

Ubuntu系统挂载磁盘并配置开机自动挂载

今天买了个服务器然后挂载了一个500G的磁盘,但是登录进去后发看不到,就是下面这样的 只能看到100G的系统盘 rootecm-74de:/usr/local# df -h Filesystem Size Used Avail Use% Mounted on tmpfs 3.1G 1.1M 3.1G 1% /run /dev/vda2 …

Android开发-Application

在Android应用开发中,Application类扮演着非常重要的角色。它作为整个应用程序的全局单例实例存在,在应用启动时最先被创建,并且在整个应用生命周期内持续存在。通过自定义Application类,开发者可以执行全局初始化操作、管理全局状…

边缘计算平台

本文来源 : 腾讯元宝 边缘计算平台是一种在靠近数据源头的网络边缘侧部署的分布式计算架构,通过融合网络、计算、存储和应用核心能力,就近提供实时、低延迟的智能服务。以下是其核心要点: ​​1. 定义与特点​​ ​​定义​​&a…

Spring 框架 JDBC 模板技术详解

一、JDBC 模板技术概述 在传统 JDBC 开发中,开发人员需要手动处理数据库连接(Connection)、事务管理、语句执行(Statement)和结果集(ResultSet)等繁琐操作,不仅代码冗余度高&#x…

Axure难点解决分享:统计分析页面引入Echarts示例动态效果

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:统计分析页面引入Echarts示例动态效果 主要内容:echart示例引入、大小调整、数据导入 应用场景:统计分析页面…

SpringBoot 数据校验与表单处理:从入门到精通(万字长文)

一、SpringBoot 数据验证基础 1.1 数据验证的重要性 在现代Web应用开发中,数据验证是保证系统安全性和数据完整性的第一道防线。没有经过验证的用户输入可能导致各种安全问题,如SQL注入、XSS攻击,或者简单的业务逻辑错误。 数据验证的主要…

Ubuntu 22.04(WSL2)使用 Docker 安装 Zipkin 和 Skywalking

Ubuntu 22.04(WSL2)使用 Docker 安装 Zipkin 和 Skywalking 分布式追踪工具在现代微服务架构中至关重要,它们帮助开发者监控请求在多个服务之间的流动,识别性能瓶颈和潜在错误。本文将指导您在 Ubuntu 22.04(WSL2 环境…

python打卡day25@浙大疏锦行

知识点回顾: 1.异常处理机制 2.debug过程中的各类报错 3.try-except机制 4.try-except-else-finally机制 在即将进入深度学习专题学习前,我们最后差缺补漏,把一些常见且重要的知识点给他们补上,加深对代码和流程的理解。 作业&a…

鸿蒙OSUniApp 开发实时聊天页面的最佳实践与实现#三方框架 #Uniapp

使用 UniApp 开发实时聊天页面的最佳实践与实现 在移动应用开发领域,实时聊天功能已经成为许多应用不可或缺的组成部分。本文将深入探讨如何使用 UniApp 框架开发一个功能完善的实时聊天页面,从布局设计到核心逻辑实现,带领大家一步步打造专…

43、Server.UrlEncode、HttpUtility.UrlDecode的区别?

Server.UrlEncode 和 HttpUtility.UrlDecode 是 .NET 中用于处理 URL 编码/解码的两个不同方法,主要区别在于所属命名空间、使用场景和具体行为。以下是详细对比: 1. 所属类库与命名空间 Server.UrlEncode 属于 System.Web.HttpServerUtility 类。通常…

代码随想录 算法训练 Day1:数组

题目一: 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target …

容器技术 20 年:颠覆、重构与重塑软件世界的力量

目录 容器技术发展史 虚拟化技术向容器技术转变 Docker的横空出世 容器编排技术与Kubernetes 微服务的出现与Istio 工业标准的容器运行时 容器技术与 DevOps 的深度融合​ 无服务架构推波助澜 展望未来发展方向 从 20 世纪硬件虚拟化的笨重,到操作系统虚拟…

集成钉钉消息推送功能

1. 概述 本文档详细描述了在若依框架基础上集成钉钉消息推送功能的开发步骤。该功能允许系统向指定钉钉用户发送文本和富文本消息通知。 2. 环境准备 2.1 钉钉开发者账号配置 登录钉钉开发者平台:https://open.dingtalk.com/创建/选择企业内部应用获取以下关键信…

【行为型之访问者模式】游戏开发实战——Unity灵活数据操作与跨系统交互的架构秘诀

文章目录 🧳 访问者模式(Visitor Pattern)深度解析一、模式本质与核心价值二、经典UML结构三、Unity实战代码(游戏物品系统)1. 定义元素与访问者接口2. 实现具体元素类3. 实现具体访问者4. 对象结构管理5. 客户端使用 …

SQL:MySQL函数:日期函数(Date Functions)

目录 时间是数据的一种类型 🧰 MySQL 常用时间函数大全 🟦 1. 获取当前时间/日期 🟦 2. 日期运算(加减) 🟦 3. 时间差计算 🟦 4. 格式化日期 🟦 5. 提取时间部分 &#x1f7…

【MySQL】数据表更新数据

个人主页:Guiat 归属专栏:MySQL 文章目录 1. 数据更新基础1.1 更新操作的重要性1.2 更新语句基本结构1.3 更新操作注意事项 2. 基本更新操作2.1 基本UPDATE语法2.2 使用表达式更新数据2.3 使用LIMIT限制更新行数2.4 NULL值处理 3. 高级更新技术3.1 使用子…

【更新】全国省市县-公开手机基站数据集(2006-2025.3)

手机基站是现代通信网络中的重要组成部分,它们为广泛的通信服务提供基础设施。随着数字化进程的不断推进,手机基站的建设与布局对优化网络质量和提升通信服务水平起着至关重要的作用,本分享数据可帮助分析移动通信网络的发展和优化。本次数据…

蓝桥杯12届国B 纯质数

题目描述 如果一个正整数只有 1 和它本身两个约数,则称为一个质数(又称素数)。 前几个质数是:2,3,5,7,11,13,17,19,23,29,31,37,⋅⋅⋅ 。 如果一个质数的所有十进制数位都是质数,我们称它为纯质数。例如&#xff1…

腾讯多模态定制化视频生成框架:HunyuanCustom

HunyuanCustom 速读 一、引言 HunyuanCustom 是由腾讯团队提出的一款多模态定制化视频生成框架。该框架旨在解决现有视频生成方法在身份一致性(identity consistency)和输入模态有限性方面的不足。通过支持图像、音频、视频和文本等多种条件输入,HunyuanCustom 能…