項目地址: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 生成的 Prompt】DeerFlow 采用了 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