【拥抱AI】Deer-Flow字节跳动开源的多智能体深度研究框架

最近发现一款可以对标甚至可能超越GPT-Researcher的AI深度研究应用,Deer-Flow(Deep Exploration and Efficient Research Flow)作为字节跳动近期开源的重量级项目,正以其模块化、灵活性和人机协同能力引发广泛关注。该项目基于 LangGraphLangChain 框架构建,旨在通过整合语言模型(LLM)与专业工具链(如网络搜索、爬虫、代码执行),实现端到端的复杂研究流程自动化,同时为开发者提供高度可扩展的二次开发空间。

核心特点
  1. 多智能体协作架构
    Deer-Flow采用模块化设计,将研究任务分解为协调器、规划器、研究团队(研究员、编码员)和报告生成器等角色,各智能体通过定义良好的消息系统协同工作。这种架构不仅提升了任务执行效率,还支持动态调整研究路径。
  2. 工具链深度集成
    支持 TavilyBrave Search 等搜索引擎,结合 Jina 爬虫与 Python REPL 工具,覆盖从数据采集到代码分析的全流程。此外,通过 MCP 平台扩展私有数据访问能力,满足企业级需求。
  3. 人机交互与内容生成
    用户可通过自然语言实时修改研究计划,并利用类 Notion 的块编辑功能优化报告。其 AI 辅助生成 能力支持播客脚本、PPT 及结构化报告的一键生成,结合火山引擎 TTS 实现多模态输出。
  4. 开源与中文友好
    采用 MIT 许可证,支持本地化部署与私有数据接入,原生适配中文研究场景,降低技术门槛。
以下跟前段时间认识的 GPT-Researcher 简单的作一些对比

尽管两者均致力于自动化研究,Deer-FlowGPT-Researcher 在架构与应用场景上存在显著差异:

  • 架构设计
    GPT-Researcher 以 Plan-and-Solve 为核心,通过并行处理子任务提升效率,但依赖单一代理执行流程,最新的GPT-Researcher是支持多Agent执行任务,也是使用LangGraph,但总体流程还是没有变;

    而 Deer-Flow 的 多智能体系统 通过分工协作(如研究员负责信息收集、编码员处理技术任务)增强了复杂任务的处理能力与可追溯性,过程有“反思”,中途可干预,结果可修正

  • 工具链与扩展性
    GPT-Researcher 虽支持多种 LLM 配置,但其工具集成相对有限,需依赖外部插件扩展功能。Deer-Flow 则内置 模块化工具链(如爬虫、代码执行),并支持无缝集成企业级 MCP 平台,适用性更广。

  • 内容生成与交互
    GPT-Researcher 专注于生成文本报告,而 Deer-Flow 提供 多模态输出(音频、PPT)及交互式编辑功能,更贴近实际研究场景的多样性需求。

个人还是比较看好Deer-Flow未来的发展,它凭借其多智能体架构、工具链深度整合及开源生态,为学术研究、商业分析等领域提供了高效且可定制的解决方案。相较于 GPT-Researcher,它在复杂任务处理、多模态输出及本土化适配方面更具优势,展现了开源框架在AI研究自动化中的独特价值。

废话就说到这里,下面我们一起来了解一下它。
以下引用DeerFlow 的官方网站内容。

视频演示

由于平台不支持github地址直接播放,只能请小伙伴自行前往观看。官方视频演示地址 https://github.com/user-attachments/assets/f3786598-1f2a-4d07-919e-8b99dfa1de3e

在官方的演示中,展示了如何使用 DeerFlow:

  • 无缝集成 MCP 服务
  • 进行深度研究过程并生成包含图像的综合报告
  • 基于生成的报告创建播客音频

快速开始

DeerFlow 使用 Python 开发,并配有用 Node.js 编写的 Web UI。为确保顺利的设置过程,我们推荐使用以下工具:

推荐工具

  • uv:
    简化 Python 环境和依赖管理。uv会自动在根目录创建虚拟环境并为您安装所有必需的包—无需手动安装 Python 环境。

  • nvm:
    轻松管理多个 Node.js 运行时版本。

  • pnpm:
    安装和管理 Node.js 项目的依赖。

环境要求

确保您的系统满足以下最低要求:

  • Python: 版本 3.12+
  • Node.js: 版本 22+

安装

# 克隆仓库
git clone https://github.com/bytedance/deer-flow.git
cd deer-flow# 安装依赖,uv将负责Python解释器和虚拟环境的创建,并安装所需的包
uv sync# 使用您的API密钥配置.env
# Tavily: https://app.tavily.com/home
# Brave_SEARCH: https://brave.com/search/api/
# 火山引擎TTS: 如果您有TTS凭证,请添加
cp .env.example .env# 查看下方的"支持的搜索引擎"和"文本转语音集成"部分了解所有可用选项# 为您的LLM模型和API密钥配置conf.yaml
# 请参阅'docs/configuration_guide.md'获取更多详情
cp conf.yaml.example conf.yaml# 安装marp用于PPT生成
# https://github.com/marp-team/marp-cli?tab=readme-ov-file#use-package-manager
brew install marp-cli

可选,通过pnpm安装 Web UI 依赖:

cd deer-flow/web
pnpm install

配置

请参阅配置指南获取更多详情。

[!注意]
在启动项目之前,请仔细阅读指南,并更新配置以匹配您的特定设置和要求。

控制台 UI

运行项目的最快方法是使用控制台 UI。

# 在类bash的shell中运行项目
uv run main.py

Web UI

本项目还包括一个 Web UI,提供更加动态和引人入胜的交互体验。

[!注意]
您需要先安装 Web UI 的依赖。

# 在开发模式下同时运行后端和前端服务器
# 在macOS/Linux上
./bootstrap.sh -d# 在Windows上
bootstrap.bat -d

打开浏览器并访问http://localhost:3000探索 Web UI。

web目录中探索更多详情。

支持的搜索引擎

DeerFlow 支持多种搜索引擎,可以在.env文件中通过SEARCH_API变量进行配置:

  • Tavily(默认):专为 AI 应用设计的专业搜索 API

    • 需要在.env文件中设置TAVILY_API_KEY
    • 注册地址:https://app.tavily.com/home
  • DuckDuckGo:注重隐私的搜索引擎

    • 无需 API 密钥
  • Brave Search:具有高级功能的注重隐私的搜索引擎

    • 需要在.env文件中设置BRAVE_SEARCH_API_KEY
    • 注册地址:https://brave.com/search/api/
  • Arxiv:用于学术研究的科学论文搜索

    • 无需 API 密钥
    • 专为科学和学术论文设计

要配置您首选的搜索引擎,请在.env文件中设置SEARCH_API变量:

# 选择一个:tavily, duckduckgo, brave_search, arxiv
SEARCH_API=tavily

特性

核心能力

  • 🤖 LLM 集成
    • 通过litellm支持集成大多数模型
    • 支持开源模型如 Qwen
    • 兼容 OpenAI 的 API 接口
    • 多层 LLM 系统适用于不同复杂度的任务

工具和 MCP 集成

  • 🔍 搜索和检索

    • 通过 Tavily、Brave Search 等进行网络搜索
    • 使用 Jina 进行爬取
    • 高级内容提取
  • 🔗 MCP 无缝集成

    • 扩展私有域访问、知识图谱、网页浏览等能力
    • 促进多样化研究工具和方法的集成

人机协作

  • 🧠 人在环中

    • 支持使用自然语言交互式修改研究计划
    • 支持自动接受研究计划
  • 📝 报告后期编辑

    • 支持类 Notion 的块编辑
    • 允许 AI 优化,包括 AI 辅助润色、句子缩短和扩展
    • 由tiptap提供支持

内容创作

  • 🎙️ 播客和演示文稿生成
    • AI 驱动的播客脚本生成和音频合成
    • 自动创建简单的 PowerPoint 演示文稿
    • 可定制模板以满足个性化内容需求

架构

DeerFlow 实现了一个模块化的多智能体系统架构,专为自动化研究和代码分析而设计。该系统基于 LangGraph 构建,实现了灵活的基于状态的工作流,其中组件通过定义良好的消息传递系统进行通信。
在这里插入图片描述

系统采用了精简的工作流程,包含以下组件:

  1. 协调器:管理工作流生命周期的入口点

    • 根据用户输入启动研究过程
    • 在适当时候将任务委派给规划器
    • 作为用户和系统之间的主要接口
  2. 规划器:负责任务分解和规划的战略组件

    • 分析研究目标并创建结构化执行计划
    • 确定是否有足够的上下文或是否需要更多研究
    • 管理研究流程并决定何时生成最终报告
  3. 研究团队:执行计划的专业智能体集合:

    • 研究员:使用网络搜索引擎、爬虫甚至 MCP 服务等工具进行网络搜索和信息收集。
    • 编码员:使用 Python REPL 工具处理代码分析、执行和技术任务。
      每个智能体都可以访问针对其角色优化的特定工具,并在 LangGraph 框架内运行
  4. 报告员:研究输出的最终阶段处理器

    • 汇总研究团队的发现
    • 处理和组织收集的信息
    • 生成全面的研究报告

开发

测试

运行测试套件:

# 运行所有测试
make test# 运行特定测试文件
pytest tests/integration/test_workflow.py# 运行覆盖率测试
make coverage

代码质量

# 运行代码检查
make lint# 格式化代码
make format

使用 LangGraph Studio 进行调试

DeerFlow 使用 LangGraph 作为其工作流架构。您可以使用 LangGraph Studio 实时调试和可视化工作流。

本地运行 LangGraph Studio

DeerFlow 包含一个langgraph.json配置文件,该文件定义了 LangGraph Studio 的图结构和依赖关系。该文件指向项目中定义的工作流图,并自动从.env文件加载环境变量。

Mac
# 如果您没有uv包管理器,请安装它
curl -LsSf https://astral.sh/uv/install.sh | sh# 安装依赖并启动LangGraph服务器
uvx --refresh --from "langgraph-cli[inmem]" --with-editable . --python 3.12 langgraph dev --allow-blocking
Windows / Linux
# 安装依赖
pip install -e .
pip install -U "langgraph-cli[inmem]"# 启动LangGraph服务器
langgraph dev

启动 LangGraph 服务器后,您将在终端中看到几个 URL:

  • API: http://127.0.0.1:2024
  • Studio UI: https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:2024
  • API 文档: http://127.0.0.1:2024/docs

在浏览器中打开 Studio UI 链接以访问调试界面。

使用 LangGraph Studio

在 Studio UI 中,您可以:

  1. 可视化工作流图并查看组件如何连接
  2. 实时跟踪执行情况,了解数据如何在系统中流动
  3. 检查工作流每个步骤的状态
  4. 通过检查每个组件的输入和输出来调试问题
  5. 在规划阶段提供反馈以完善研究计划

当您在 Studio UI 中提交研究主题时,您将能够看到整个工作流执行过程,包括:

  • 创建研究计划的规划阶段
  • 可以修改计划的反馈循环
  • 每个部分的研究和写作阶段
  • 最终报告生成

启用 LangSmith 追踪

DeerFlow 支持 LangSmith 追踪功能,帮助您调试和监控工作流。要启用 LangSmith 追踪:

  1. 确保您的 .env 文件中有以下配置(参见 .env.example):

    LANGSMITH_TRACING=true
    LANGSMITH_ENDPOINT="https://api.smith.langchain.com"
    LANGSMITH_API_KEY="xxx"
    LANGSMITH_PROJECT="xxx"
    
  2. 通过运行以下命令本地启动 LangSmith 追踪:

    langgraph dev
    

这将在 LangGraph Studio 中启用追踪可视化,并将您的追踪发送到 LangSmith 进行监控和分析。

Docker

您也可以使用 Docker 运行此项目。

首先,您需要阅读下面的配置部分。确保.env.conf.yaml文件已准备就绪。

其次,构建您自己的 Web 服务器 Docker 镜像:

docker build -t deer-flow-api .

最后,启动运行 Web 服务器的 Docker 容器:

# 将deer-flow-api-app替换为您首选的容器名称
docker run -d -t -p 8000:8000 --env-file .env --name deer-flow-api-app deer-flow-api# 停止服务器
docker stop deer-flow-api-app

Docker Compose

您也可以使用 docker compose 设置此项目:

# 构建docker镜像
docker compose build# 启动服务器
docker compose up

文本转语音集成

DeerFlow 现在包含一个文本转语音(TTS)功能,允许您将研究报告转换为语音。此功能使用火山引擎 TTS API 生成高质量的文本音频。速度、音量和音调等特性也可以自定义。

使用 TTS API

您可以通过/api/tts端点访问 TTS 功能:

# 使用curl的API调用示例
curl --location 'http://localhost:8000/api/tts' \
--header 'Content-Type: application/json' \
--data '{"text": "这是文本转语音功能的测试。","speed_ratio": 1.0,"volume_ratio": 1.0,"pitch_ratio": 1.0
}' \
--output speech.mp3

示例

以下示例展示了 DeerFlow 的功能:

研究报告

  1. OpenAI Sora 报告 - OpenAI 的 Sora AI 工具分析

    • 讨论功能、访问方式、提示工程、限制和伦理考虑
    • 查看完整报告
  2. Google 的 Agent to Agent 协议报告 - Google 的 Agent to Agent (A2A)协议概述

    • 讨论其在 AI 智能体通信中的作用及其与 Anthropic 的 Model Context Protocol (MCP)的关系
    • 查看完整报告
  3. 什么是 MCP? - 对"MCP"一词在多个上下文中的全面分析

    • 探讨 AI 中的 Model Context Protocol、化学中的 Monocalcium Phosphate 和电子学中的 Micro-channel Plate
    • 查看完整报告
  4. 比特币价格波动 - 最近比特币价格走势分析

    • 研究市场趋势、监管影响和技术指标
    • 基于历史数据提供建议
    • 查看完整报告
  5. 什么是 LLM? - 对大型语言模型的深入探索

    • 讨论架构、训练、应用和伦理考虑
    • 查看完整报告
  6. 医疗保健中的 AI 采用:影响因素 - 影响医疗保健中 AI 采用的因素分析

    • 讨论 AI 技术、数据质量、伦理考虑、经济评估、组织准备度和数字基础设施
    • 查看完整报告
  7. 量子计算对密码学的影响 - 量子计算对密码学影响的分析

    • 讨论经典密码学的漏洞、后量子密码学和抗量子密码解决方案
    • 查看完整报告

要运行这些示例或创建您自己的研究报告,您可以使用以下命令:

# 使用特定查询运行
uv run main.py "哪些因素正在影响医疗保健中的AI采用?"# 使用自定义规划参数运行
uv run main.py --max_plan_iterations 3 "量子计算如何影响密码学?"# 在交互模式下运行,带有内置问题
uv run main.py --interactive# 或者使用基本交互提示运行
uv run main.py# 查看所有可用选项
uv run main.py --help

交互模式

应用程序现在支持带有英文和中文内置问题的交互模式:

  1. 启动交互模式:

    uv run main.py --interactive
    
  2. 选择您偏好的语言(English 或中文)

  3. 从内置问题列表中选择或选择提出您自己问题的选项

  4. 系统将处理您的问题并生成全面的研究报告

人在环中

DeerFlow 包含一个人在环中机制,允许您在执行研究计划前审查、编辑和批准:

  1. 计划审查:启用人在环中时,系统将在执行前向您展示生成的研究计划

  2. 提供反馈:您可以:

    • 通过回复[ACCEPTED]接受计划
    • 通过提供反馈编辑计划(例如,[EDIT PLAN] 添加更多关于技术实现的步骤
    • 系统将整合您的反馈并生成修订后的计划
  3. 自动接受:您可以启用自动接受以跳过审查过程:

    • 通过 API:在请求中设置auto_accepted_plan: true
  4. API 集成:使用 API 时,您可以通过feedback参数提供反馈:

    {"messages": [{ "role": "user", "content": "什么是量子计算?" }],"thread_id": "my_thread_id","auto_accepted_plan": false,"feedback": "[EDIT PLAN] 包含更多关于量子算法的内容"
    }
    

命令行参数

应用程序支持多个命令行参数来自定义其行为:

  • query:要处理的研究查询(可以是多个词)
  • –interactive:以交互模式运行,带有内置问题
  • –max_plan_iterations:最大规划周期数(默认:1)
  • –max_step_num:研究计划中的最大步骤数(默认:3)
  • –debug:启用详细调试日志

感谢您的阅读,以上就是本期的全部内容啦,感兴趣的小伙伴可以自行前往DeerFlow 的官方网站了解更多详情。

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

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

相关文章

openfeign与dubbo调用下载excel实践

一、前言 openfeign和dubbo均是rpc框架 RPC(Remote Procedure Call,远程过程调用)框架 是一种允许程序像调用本地方法一样调用远程服务器上函数的技术。它隐藏了底层网络通信的复杂性,让开发者可以专注于业务逻辑,实现…

解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-强化学习算法

解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-强化学习算法 现在我们的核心问题是有一些同学会知道要才能强化学习。为什么才能强化学习?是实现AGI。例如从这个其实你从第一阶段开始以后,就是chatbot,这…

音频分类的学习

1.深度学习PyTorch入门-语音分类 https://blog.csdn.net/sinat_41787040/article/details/129795496 https://github.com/musikalkemist/pytorchforaudio https://github1s.com/musikalkemist/pytorchforaudio/blob/main/04%20Creating%20a%20custom%20dataset/urbansoundda…

美SEC主席:探索比特币上市证券交易所

作者/演讲者:美SEC主席Paul S. Atkins 编译:Liam 5月12日,由美国SEC加密货币特别工作组发起的主题为《资产上链:TradFi与DeFi的交汇点》系列圆桌会议如期举行。 会议期间,现任美SEC主席Paul S. Atkins发表了主旨演讲。…

Qt file文件操作详解

1.引言 很多应用程序都具备操作文件的能力,包括对文件进行写入和读取,创建和删除文件等等,甚至某些应用程序的就是为了操作文件,像WPS Office。基于此Qt框架中专门提供了对文件操作的类:QFile。 2.QFile文件操作 QF…

【测试开发知识储备】之Jacoco(Java Code Coverage)

文章目录 Jacoco是什么Jacoco的主要功能(一)多样化覆盖率指标分析(二) 丰富的报告生成(三)实时数据收集 Jacoco的工作原理(一)字节码增强(二)测试执行与数据收…

Docker 介绍与使用

Docker 文章目录 Docker介绍与虚拟机的比较启动速度占用资源 优势更容易迁移更容易维护更容易扩展 使用场景持续集成提供可伸缩的云服务搭建微服务架构 镜像与容器镜像构成(分层结构)镜像与容器的区别 安装 Docker常用命令介绍镜像相关容器相关 实战&…

《AI大模型应知应会100篇》第62篇:TypeChat——类型安全的大模型编程框架

第62篇:TypeChat——类型安全的大模型编程框架 摘要 在构建 AI 应用时,一个常见的痛点是大语言模型(LLM)输出的不确定性与格式不一致问题。开发者往往需要手动解析、校验和处理模型返回的内容,这不仅增加了开发成本&a…

upload-labs通关笔记-第5关 文件上传之.ini绕过

目录 一、ini文件绕过原理 二、源码审计 三、渗透实战 1、查看提示 2、制作.user.ini文件 (1)首先创建一个文本文件 (2)保存文件名为.user.ini 2、制作jpg后缀脚本 (1)创建一个文本文件 &#xf…

为什么 Linux 上默认没有 host.docker.internal

在 Linux 环境中,host.docker.internal 是 Docker 为容器提供的一个特殊 DNS 名称,用于指向宿主机的 IP 地址(类似 macOS/Windows 中的行为)。但这个功能在 Linux 上默认不启用,需要手动配置才能使用。以下是详细解释和…

C++GO语言微服务和服务发现②

01 创建go-micro项目-查看生成的 proto文件 02 创建go-micro项目-查看生成的main文件和handler ## 创建 micro 服务 命令:micro new --type srv test66 框架默认自带服务发现:mdns。 使用consul服务发现: 1. 初始consul服务发现&…

Redis--常见数据类型List列表

目录 一、概念 二、命令 2.1 LPUSH 2.2 LPUSHX 2.3 RPUSH 2.4 RPUSHX 2.5 LRANGE 2.6 LPOP 2.7 RPOP 2.8 LINDEX 2.9 LINSERT 2.10 LLEN 2.11 阻塞版本命令 三、内部编码 一、概念 列表类型是用来存储多个有序的字符串,列表中的每个字符串称为元素&…

QListWedget控件使用指南

QListWedget公共函数 函数签名功能描述QListWidget(QWidget *parent nullptr)构造函数,创建一个QListWidget对象,可指定父部件(默认为nullptr)。virtual ~QListWidget()虚析构函数,释放QListWidget对象及其资源。voi…

Seata源码—1.Seata分布式事务的模式简介

大纲 1.Seata分布式事务框架简介 2.Seata AT模式实现分布式事务的机制 3.Seata AT模式下的写隔离机制 4.Seata AT模式下的读隔离机制 5.官网示例说明Seata AT模式的工作机制 6.Seata TCC模式的介绍以及与AT模式区别 7.Seata Saga模式的介绍 8.单服务多个库的分布式事务…

【Qt】之音视频编程2:QtAV的使用篇

QtAV 基本播放控制功能实现&#xff08;C & QML&#xff09; QtAV 提供了完整的播放控制 API&#xff0c;支持 播放、暂停、停止、快进快退、截屏 等功能。以下是具体实现方法&#xff1a; 1. C 控制方式 基本播放控制 #include <QtAV> #include <QtAV/AVPlaye…

歌词滚动效果

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><!-- 设置标签页图标 --><link rel"shortcut icon&…

基于大模型的TIA诊疗全流程智能决策系统技术方案

目录 一、多模态数据融合与预处理系统1.1 数据接入模块1.2 数据预处理伪代码二、TIA智能预测模型系统2.1 模型训练流程2.2 混合模型架构伪代码三、术中智能监测系统3.1 实时监测流程3.2 实时预测伪代码四、智能诊疗决策系统4.1 手术方案推荐流程4.2 麻醉方案生成伪代码五、预后…

Java 日期解析与格式化:从标准格式到自然语言解析

使用 Java 搭配 Apache Commons Lang3 和 Natty 库&#xff0c;实现灵活高效的日期解析与格式化。 一、背景 将不同格式的日期统一成一个格式。日期格式可能有以下几种类型&#xff1a; 标准格式&#xff1a;2024-02-28、14/05/2022、2002年5月6日非英文月份缩写&#xff1a;…

Room持久化库:从零到一的全面解析与实战

简介 在Android开发中,Room作为官方推荐的数据库持久化库,提供了对SQLite的抽象层,使得数据库操作更加安全、高效且易于维护。 Room通过注解处理器和编译时验证,显著降低了数据库操作的复杂度,同时支持响应式编程模式,使开发者能够轻松实现数据变化的实时监听。对于企业…

MySQL(6)如何删除数据库和表?

在 MySQL 中删除数据库和表是常见的管理操作。下面将详细介绍如何使用 SQL 语句以及图形化工具来删除数据库和表。 步骤一&#xff1a;连接 MySQL 服务器 首先&#xff0c;连接到 MySQL 服务器&#xff0c;可以使用命令行工具 mysql 或图形化工具如 MySQL Workbench。 使用命…