DeerFlow:字節新一代 DeepSearch 框架

項目地址: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=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  # 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.pswp.cn/bicheng/81076.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81076.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81076.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL 大表中添加索引的兩種常見方式及其優缺點分析

引言 在數據庫性能優化過程中,給大表添加索引是一項常見且重要的操作。由于大表數據量龐大,索引的創建過程往往涉及較高的系統開銷和復雜的操作流程。本文將介紹兩種在大表中添加索引的常見方法:直接添加索引和表復制方式,分別分…

Ubuntu系統掛載磁盤并配置開機自動掛載

今天買了個服務器然后掛載了一個500G的磁盤,但是登錄進去后發看不到,就是下面這樣的 只能看到100G的系統盤 rootecm-74de:/usr/local# df -h Filesystem Size Used Avail Use% Mounted on tmpfs 3.1G 1.1M 3.1G 1% /run /dev/vda2 …

Android開發-Application

在Android應用開發中,Application類扮演著非常重要的角色。它作為整個應用程序的全局單例實例存在,在應用啟動時最先被創建,并且在整個應用生命周期內持續存在。通過自定義Application類,開發者可以執行全局初始化操作、管理全局狀…

邊緣計算平臺

本文來源 : 騰訊元寶 邊緣計算平臺是一種在靠近數據源頭的網絡邊緣側部署的分布式計算架構,通過融合網絡、計算、存儲和應用核心能力,就近提供實時、低延遲的智能服務。以下是其核心要點: ??1. 定義與特點?? ??定義??&a…

Spring 框架 JDBC 模板技術詳解

一、JDBC 模板技術概述 在傳統 JDBC 開發中,開發人員需要手動處理數據庫連接(Connection)、事務管理、語句執行(Statement)和結果集(ResultSet)等繁瑣操作,不僅代碼冗余度高&#x…

Axure難點解決分享:統計分析頁面引入Echarts示例動態效果

親愛的小伙伴,在您瀏覽之前,煩請關注一下,在此深表感謝! Axure產品經理精品視頻課已登錄CSDN可點擊學習https://edu.csdn.net/course/detail/40420 課程主題:統計分析頁面引入Echarts示例動態效果 主要內容:echart示例引入、大小調整、數據導入 應用場景:統計分析頁面…

SpringBoot 數據校驗與表單處理:從入門到精通(萬字長文)

一、SpringBoot 數據驗證基礎 1.1 數據驗證的重要性 在現代Web應用開發中,數據驗證是保證系統安全性和數據完整性的第一道防線。沒有經過驗證的用戶輸入可能導致各種安全問題,如SQL注入、XSS攻擊,或者簡單的業務邏輯錯誤。 數據驗證的主要…

Ubuntu 22.04(WSL2)使用 Docker 安裝 Zipkin 和 Skywalking

Ubuntu 22.04(WSL2)使用 Docker 安裝 Zipkin 和 Skywalking 分布式追蹤工具在現代微服務架構中至關重要,它們幫助開發者監控請求在多個服務之間的流動,識別性能瓶頸和潛在錯誤。本文將指導您在 Ubuntu 22.04(WSL2 環境…

python打卡day25@浙大疏錦行

知識點回顧: 1.異常處理機制 2.debug過程中的各類報錯 3.try-except機制 4.try-except-else-finally機制 在即將進入深度學習專題學習前,我們最后差缺補漏,把一些常見且重要的知識點給他們補上,加深對代碼和流程的理解。 作業&a…

鴻蒙OSUniApp 開發實時聊天頁面的最佳實踐與實現#三方框架 #Uniapp

使用 UniApp 開發實時聊天頁面的最佳實踐與實現 在移動應用開發領域,實時聊天功能已經成為許多應用不可或缺的組成部分。本文將深入探討如何使用 UniApp 框架開發一個功能完善的實時聊天頁面,從布局設計到核心邏輯實現,帶領大家一步步打造專…

43、Server.UrlEncode、HttpUtility.UrlDecode的區別?

Server.UrlEncode 和 HttpUtility.UrlDecode 是 .NET 中用于處理 URL 編碼/解碼的兩個不同方法,主要區別在于所屬命名空間、使用場景和具體行為。以下是詳細對比: 1. 所屬類庫與命名空間 Server.UrlEncode 屬于 System.Web.HttpServerUtility 類。通常…

代碼隨想錄 算法訓練 Day1:數組

題目一: 給定一個 n 個元素有序的(升序)整型數組 nums 和一個目標值 target ,寫一個函數搜索 nums 中的 target,如果目標值存在返回下標,否則返回 -1。 示例 1: 輸入: nums [-1,0,3,5,9,12], target …

容器技術 20 年:顛覆、重構與重塑軟件世界的力量

目錄 容器技術發展史 虛擬化技術向容器技術轉變 Docker的橫空出世 容器編排技術與Kubernetes 微服務的出現與Istio 工業標準的容器運行時 容器技術與 DevOps 的深度融合? 無服務架構推波助瀾 展望未來發展方向 從 20 世紀硬件虛擬化的笨重,到操作系統虛擬…

集成釘釘消息推送功能

1. 概述 本文檔詳細描述了在若依框架基礎上集成釘釘消息推送功能的開發步驟。該功能允許系統向指定釘釘用戶發送文本和富文本消息通知。 2. 環境準備 2.1 釘釘開發者賬號配置 登錄釘釘開發者平臺:https://open.dingtalk.com/創建/選擇企業內部應用獲取以下關鍵信…

【行為型之訪問者模式】游戲開發實戰——Unity靈活數據操作與跨系統交互的架構秘訣

文章目錄 🧳 訪問者模式(Visitor Pattern)深度解析一、模式本質與核心價值二、經典UML結構三、Unity實戰代碼(游戲物品系統)1. 定義元素與訪問者接口2. 實現具體元素類3. 實現具體訪問者4. 對象結構管理5. 客戶端使用 …

SQL:MySQL函數:日期函數(Date Functions)

目錄 時間是數據的一種類型 🧰 MySQL 常用時間函數大全 🟦 1. 獲取當前時間/日期 🟦 2. 日期運算(加減) 🟦 3. 時間差計算 🟦 4. 格式化日期 🟦 5. 提取時間部分 &#x1f7…

【MySQL】數據表更新數據

個人主頁:Guiat 歸屬專欄:MySQL 文章目錄 1. 數據更新基礎1.1 更新操作的重要性1.2 更新語句基本結構1.3 更新操作注意事項 2. 基本更新操作2.1 基本UPDATE語法2.2 使用表達式更新數據2.3 使用LIMIT限制更新行數2.4 NULL值處理 3. 高級更新技術3.1 使用子…

【更新】全國省市縣-公開手機基站數據集(2006-2025.3)

手機基站是現代通信網絡中的重要組成部分,它們為廣泛的通信服務提供基礎設施。隨著數字化進程的不斷推進,手機基站的建設與布局對優化網絡質量和提升通信服務水平起著至關重要的作用,本分享數據可幫助分析移動通信網絡的發展和優化。本次數據…

藍橋杯12屆國B 純質數

題目描述 如果一個正整數只有 1 和它本身兩個約數,則稱為一個質數(又稱素數)。 前幾個質數是:2,3,5,7,11,13,17,19,23,29,31,37,??? 。 如果一個質數的所有十進制數位都是質數,我們稱它為純質數。例如&#xff1…

騰訊多模態定制化視頻生成框架:HunyuanCustom

HunyuanCustom 速讀 一、引言 HunyuanCustom 是由騰訊團隊提出的一款多模態定制化視頻生成框架。該框架旨在解決現有視頻生成方法在身份一致性(identity consistency)和輸入模態有限性方面的不足。通過支持圖像、音頻、視頻和文本等多種條件輸入,HunyuanCustom 能…