DeerFlow深度研究框架把语言模型和网页搜索、爬取、Python代码执行等工具结合起来,基于 LangGraph 构建了一个模块化的多智能体系统架构,能够进行自动化研究和代码分析,实现高效的自动化研究流程。
DeerFlow通过litellm支持集成大多数模型,包括像Qwen这样的开源模型,提供OpenAI兼容的API接口,有针对不同任务复杂度的多层LLM系统。
工具和MCP集成
1、搜索和检索:能通过Tavily、Brave Search等进行网页搜索,使用Jina进行爬取和高级内容提取。
2、MCP无缝集成:扩展了私有领域访问、知识图谱、网页浏览等功能,便于集成各种研究工具和方法。
人机协作
1、人在回路中:支持用自然语言交互式修改研究计划,支持自动接受研究计划。
2、报告后期编辑:支持类似Notion的块编辑,能进行AI优化,如辅助润色、缩短或扩展句子,由tiptap提供支持。
内容创建
能进行AI驱动的播客脚本生成和音频合成,能自动创建简单的PowerPoint演示文稿,有可定制的模板。
DeerFlow用Python开发,搭配Node.js编写的网页界面,为顺利安装,建议使用以下工具:
uv
:简化Python环境和依赖管理,在根目录自动创建虚拟环境并安装所需包,无需手动安装Python环境。
nvm
:轻松管理多个Node.js运行时版本。
pnpm
:用于安装和管理Node.js项目的依赖。
系统要求:
Python:3.12+版本
Node.js:22+版本
安装步骤:
1、克隆仓库:
git clone https://github.com/bytedance/deer-flow.git
cd deer-flow
2、安装依赖:
uv sync
3、配置.env
文件,添加API密钥(如Tavily、Brave_SEARCH等,若使用火山引擎TTS也需添加相关凭证):
cp .env.example .env
4、配置conf.yaml
文件,用于设置LLM模型和API密钥:
cp conf.yaml.example conf.yaml
5、安装marp用于生成PPT:
brew install marp-cli
6、可选步骤,安装网页界面依赖:
cd deer-flow/web
pnpm install
具体配置详情参考《配置指南》,启动项目前,需仔细阅读指南并根据自身设置和需求更新配置。
运行项目最快的方式是使用控制台界面,在类似bash的 shell 中执行:
uv run main.py
项目包含网页界面,提供更动态的交互体验,使用网页界面时需先安装网页界面的依赖。
在macOS/Linux系统中,以开发模式运行后端和前端服务器:
./bootstrap.sh -d
在Windows系统中:
bootstrap.bat -d
打开浏览器,访问http://localhost:3000
就能浏览网页界面。
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
DeerFlow采用模块化多智能体系统架构,用于自动化研究和代码分析,基于LangGraph构建,实现了灵活的基于状态的工作流程,组件间通过定义明确的消息传递系统进行通信。
系统工作流程包含以下组件:
协调器:是工作流程生命周期的入口点,根据用户输入启动研究过程,适时将任务委托给规划器,是用户与系统的主要交互接口。
规划器:负责任务分解和规划,分析研究目标并创建结构化执行计划,判断是否有足够上下文或是否需要更多研究,管理研究流程并决定何时生成最终报告。
研究团队:由多个专业智能体组成,研究人员使用网页搜索引擎、爬虫和MCP服务等工具进行网页搜索和信息收集,编码人员利用Python REPL工具处理代码分析、执行等技术任务,每个智能体都能使用特定工具,在LangGraph框架内工作。
报告生成器:是研究输出的最后处理阶段,汇总研究团队的发现,处理和整理收集到的信息,生成全面的研究报告。
DeerFlow具备文本转语音(TTS)功能,可将研究报告转换为语音,该功能使用火山引擎TTS API,能生成高质量音频,可自定义语速、音量和音高。
通过/api/tts
端点就能使用TTS功能,示例如下:
curl --location 'http://localhost:8000/api/tts' \
--header 'Content-Type: application/json' \
--data '{ "text": "This is a test of the text-to-speech functionality.", "speed_ratio": 1.0, "volume_ratio": 1.0, "pitch_ratio": 1.0 }' \
--output speech.mp3