LLM之Agent(十七)| DeerFlow:字节也复刻了一个Deep Research

大模型向量数据库火山方舟

picture.image

官方网站:https://deerflow.tech/

Github地址:https://github.com/bytedance/deer-flow

  DeerFlow(Deep Exploration and Efficient Research Flow)是一个社区驱动的深度研究框架,它建立在开源社区的杰出工作基础之上。目标是将语言模型与专业工具(如网络搜索、爬虫和 Python 代码执行)相结合,同时回馈使这一切成为可能的社区。
一 、架构
 DeerFlow 实现了一个模块化的多智能体系统架构,专为自动化研究和代码分析而设计。该系统基于 LangGraph 构建,实现了灵活的基于状态的工作流,其中组件通过定义良好的消息传递系统进行通信。

picture.image

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

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

  2. 根据用户输入启动研究过程

  3. 在适当时候将任务委派给规划器

  4. 作为用户和系统之间的主要接口

  5. 规划器:负责任务分解和规划的战略组件

  6. 分析研究目标并创建结构化执行计划

  7. 确定是否有足够的上下文或是否需要更多研究

  8. 管理研究流程并决定何时生成最终报告

  9. 研究团队:执行计划的专业智能体集合:

  10. 研究员:使用网络搜索引擎、爬虫甚至 MCP 服务等工具进行网络搜索和信息收集。

  11. 编码员:使用 Python REPL 工具处理代码分析、执行和技术任务。 每个智能体都可以访问针对其角色优化的特定工具,并在 LangGraph 框架内运行

  12. 报告员:研究输出的最终阶段处理器

  13. 汇总研究团队的发现

  14. 处理和组织收集的信息

  15. 生成全面的研究报告

在(deerflow.tech)[https://deerflow.tech/#multi-agent-architecture]上可以看到以上组件的实时演示

二、核心能力
  1. 大模型集成 :通过litellm支持集成大多数模型,支持开源模型如 Qwen,兼容 OpenAI 的 API 接口,多层 LLM 系统适用于不同复杂度的任务;
  2. 搜索和检索 :通过 Tavily、Brave Search 等进行网络搜索,使用 Jina 进行爬取,高级内容提取;
  3. MCP集成 :扩展私有域访问、知识图谱、网页浏览等能力,促进多样化研究工具和方法的集成;
  4. 人机协作 :支持使用自然语言交互式修改研究计划,支持自动接受研究计划,支持类 Notion 的块编辑,允许 AI 优化,包括 AI 辅助润色、句子缩短和扩展
  5. 内容创作 :AI 驱动的播客脚本生成和音频合成,自动创建简单的 PowerPoint 演示文稿,可定制模板以满足个性化内容需求
三、安装部署
 DeerFlow 使用 Python 开发,并配有用 Node.js 编写的 Web UI。为确保顺利的设置过程,推荐使用以下工具:

3.1、推荐工具

  • uv: 简化 Python 环境和依赖管理。uv会自动在根目录创建虚拟环境并为您安装所有必需的包—无需手动安装 Python 环境。
  • nvm: 轻松管理多个 Node.js 运行时版本。
  • pnpm: 安装和管理 Node.js 项目的依赖。

3.2、环境要求

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

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

3.3、安装

  
# 克隆仓库  
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

3.4、配置

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

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

3.4.1 支持的大模型

目前只支持非推理大模型,OpenAI's o1/o3和DeepSeek's R1暂不支持

 大模型配置在deer-flow目录的conf.yaml文件中,切换大模型示例如下所示:
  

  
   
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
   
   # An example of Doubao models served by VolcEngineBASIC_MODEL:  base_url: "https://ark.cn-beijing.volces.com/api/v3"  model: "doubao-1.5-pro-32k-250115"  api_key: YOUR_API_KEY# An example of Aliyun modelsBASIC_MODEL:  base_url: "https://dashscope.aliyuncs.com/compatible-mode/v1"  model: "qwen-max-latest"  api_key: YOUR_API_KEY# An example of deepseek official modelsBASIC_MODEL:  base_url: "https://api.deepseek.com"  model: "deepseek-chat"  api_key: YOU_API_KEY# An example of Google Gemini models using OpenAI-Compatible interfaceBASIC_MODEL:  base_url: "https://generativelanguage.googleapis.com/v1beta/openai/"  model: "gemini-2.0-flash"  api_key: YOUR_API_KEY
  

3.4.2 支持的搜索引擎

 DeerFlow 支持多种搜索引擎,可以在`.env`文件中通过`SEARCH\_API`变量进行配置:
  • Tavily(默认):专为 AI 应用设计的专业搜索 API
  • DuckDuckGo:注重隐私的搜索引擎
  • 无需 API 密钥
  • Brave Search:具有高级功能的注重隐私的搜索引擎
  • Arxiv:用于学术研究的科学论文搜索
  • 无需 API 密钥
  • 专为科学和学术论文设计

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

  

  
   
     
     
   
   # 选择一个:tavily, duckduckgo, brave_search, arxivSEARCH_API=tavily
  

3.5、启动DeerFlow项目

3.5.1 控制台 UI

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

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

示例如下所示:

picture.image

3.5.2 Web UI

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

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

  

  
   
     
     
     
     
     
   
   # 在开发模式下同时运行后端和前端服务器# 在macOS/Linux上./bootstrap.sh -d# 在Windows上bootstrap.bat -d
  打开浏览器并访问 `http://localhost:3000`探索 Web UI。

如果端口3000被占,系统会自动+1

WEB UI启动后的日志如下所示:

picture.image

此时打开浏览器并访问http://localhost:3001,界面如下所示:

picture.image

  WEB UI的方式效果差一些,而且偶尔还有报错:AttributeError: 'AIMessage' object has no attribute 'tool\_call\_chunks'
四、使用 LangGraph Studio 进行调试
DeerFlow 使用 LangGraph 作为其工作流架构,可以使用 LangGraph Studio 实时调试和可视化工作流。

=====================================================================

4.1 本地运行 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:

picture.image

在浏览器中打开 Studio UI 链接以访问调试界面,如下图所示:

picture.image

4.2 使用 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"


  1. 通过运行以下命令本地启动 LangSmith 追踪:
  
langgraph dev


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

参考文献:

[1] https://deerflow.tech/

[2] https://github.com/bytedance/deer-flow

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
字节跳动 XR 技术的探索与实践
火山引擎开发者社区技术大讲堂第二期邀请到了火山引擎 XR 技术负责人和火山引擎创作 CV 技术负责人,为大家分享字节跳动积累的前沿视觉技术及内外部的应用实践,揭秘现代炫酷的视觉效果背后的技术实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论