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=xxx  # 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/pingmian/81199.shtml

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

相关文章

Qt—用SQLite实现简单的注册登录界面

1.实现目标 本次实现通过SQLite制作一个简易的登录窗口,当点击注册按钮时,登录窗口会消失,会出现一个新的注册界面;完成注册或退出注册时,注册窗口会消失,重新出现登录窗口。注册过的用户信息会出现在SQLi…

day 18:零基础学嵌入式之数据结构——

一、基础内容 1.数据结构:相互之间存在一种或多种特定关系的数据元素的集合。 2.逻辑结构 (1)集合,所有数据在同一个集合中,关系平等。 (2)线性,数据和数据之间是一对一的关系 &am…

【SSL证书系列】客户端如何验证https网站服务器发的证书是否由受信任的根证书签发机构签发

客户端验证HTTPS网站证书是否由受信任的根证书颁发机构(CA)签发,是一个多步骤的过程,涉及证书链验证、信任锚(Trust Anchor)检查、域名匹配和吊销状态验证等。以下是详细的验证流程: 1. 证书链的…

iOS即时通信的技术要点

iOS即时通信开发的关键技术要点总结: 一、通讯协议选择 Socket通信 基础实现:使用原生BSD Socket或CFNetwork框架(复杂),推荐第三方库如CocoaAsyncSocket(封装GCDAsyncSocket),简化T…

智能AI构建工地安全网:跌倒、抽搐、区域入侵多场景覆盖

智能AI在工地安全中的应用:从监测到救援的全流程实践 一、背景:高温作业下的工地安全挑战 随着夏季高温持续,工地户外作业环境面临严峻考验。工人因高温疲劳、脱水或突发疾病引发的行为异常(如晕厥、抽搐、跌倒)频发…

Doris

Apache Doris(原名:Palo)是一个高性能、实时的MPP分析型数据库,非常适合海量数据的即席查询、报表分析、指标统计等 OLAP 场景。Doris 的设计目标是:极致查询性能、简单易用、支持高并发分析和明细查询。 一、Doris 核…

# 2-STM32F103-复位和时钟控制RCC

STM32-复位和时钟控制RCC 2-STM32-复位和时钟控制RCC摘要说明本文参考资料如下: 一、STM32最小系统回顾STM32F103C8T6核心板原理图 二、复位三、时钟3.1 时钟树3.2 STM32启动过程3.2 SystemInit()函数3.2.1 SystemInit()第1句:3.2.2 SystemInit()第2句&a…

rk3576 gstreamer opencv

安装gstreamer rk3588使用gstreamer推流_rk3588 gstreamer-CSDN博客 rk3588使用gstreamer推流_rk3588 gstreamer-CSDN博客 Installing on Linux sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-pl…

Quic如何实现udp可靠传输

QUIC(Quick UDP Internet Connections)是由 Google 设计并被 IETF 标准化的传输层协议,它基于 UDP 实现,但提供了类似 TCP 的可靠性和更高级的功能(如多路复用、0-RTT 握手、TLS 加密等)。 尽管 UDP 是不可…

uniapp-商城-59-后台 新增商品(属性的选中,进行过滤展示,filter,some,every和map)

前面讲了属性的添加,添加完成后,数据库中已经存在数据了,这时再继续商品的添加时,就可以进行属性的选择了。 在商品添加过程中,属性选择是一个关键步骤。首先,界面需要展示嵌套的属性数据,用户通…

负载均衡 ELB 在 zkmall开源商城高流量场景下的算法优化

在电商大促、直播带货等高频交易场景下,流量突发增长对系统稳定性提出严峻挑战。ZKmll 开源商城通过对负载均衡 ELB(Elastic Load Balancer)算法的深度优化,结合业务场景特性设计动态加权轮询 地域感知 热点分流的混合策略&…

Linux干货(三)

前言 从B站黑马程序员Linux课程摘选的学习干货,新手友好!若有侵权,会第一时间处理。 目录 前言 1.which find命令 1.which命令 2.find命令 2.grep wc 管道符 1.grep命令 2.wc命令 3.管道符 3.echo tail 重定向符 1.echo命令 2.反…

Sigmoid与Softmax:从二分类到多分类的深度解析

Sigmoid与Softmax:从二分类到多分类的深度解析 联系 函数性质:二者都是非线性函数 ,也都是指数归一化函数,可将输入值映射为0到1之间的实数 ,都能把输出转化成概率分布的形式,在神经网络中常作为激活函数使用。Softmax是Sigmoid的推广:从功能角度看,Softmax函数可视为…

文件系统交互实现

关于之前的搭建看QT控件文件系统的实现-CSDN博客,接下来是对本程序的功能完善,我想着是这样设计的,打开一个目录以后,鼠标选中一个项可以是目录,也可以是文件,右键可以出现一个菜单选择操作,比如…

[ctfshow web入门] web75

信息收集 启用了open_basedir,所以之前的方法又不能用了 解题 cforeach(new DirectoryIterator("glob:///*") as $a){echo($a->__toString(). ); } ob_flush();cif ( $a opendir("glob:///*") ) {while ( ($file readdir($a)) ! false …

Vulfocus靶场-文件上传-3

WSO2 文件上传 (CVE-2022-29464) WSO2是一家成立于 2005 年的开源技术提供商。它提供了一个企业平台,用于在本地和整个 Internet 上 集成应用程序编程接口(API)、应用程序和 Web 服务。 某些 WSO2 产品允许无限制的文件上传和远程代码执行。…

基于MCP的桥梁设计规范智能解析与校审系统构建实践

引言 今天本文准备盘一个大活,聊一聊偏特定行业一点的AI技术深入应用思考及实践。 一、传统设计行业项目背景与行业痛点 在桥梁设计领域,标准规范是设计的基础,直接关系到桥梁结构的安全性、耐久性和经济性。然而,传统的规范应…

远程连接电脑的方法?异地远程桌面连接和三方软件实现

远程连接电脑,是指通过网络技术,在一台设备上操控另一台设备的电脑桌面,实现跨地域的操作和管理。在日常工作、技术支持、远程办公等场景中,远程连接电脑都发挥着重要作用。实现远程连接电脑主要有系统自带工具和第三方软件两种方…

win11 安装 wsl ubuntu 18.04后换源失败!

记录几个问题是如何解决的。 一 下载wsl后,有报错: Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x8007019e Error: 0x8007019e ??????? Linux ? Windows ???? Press any key to continue... …

PY32系列单片机离线烧录器,可配置选项字节和上机台批量烧录

PY32离线烧录器采用 MINI-USB 接口,提供稳定的物理连接。设备与电脑采用串口方式通讯,波特率固定为 1M。需配合我们的上位机使用。PY32离线烧录器现支持芯片型号在PY32F002A/002B/002/003/030/071/072/040/403/303各封装和XL32F001/003。烧录器仅提供 3.…