DeepSearch:字節新一代 DeerFlow 框架

項目地址: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=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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/81199.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81199.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/81199.shtml

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

相關文章

Qt—用SQLite實現簡單的注冊登錄界面

1.實現目標 本次實現通過SQLite制作一個簡易的登錄窗口,當點擊注冊按鈕時,登錄窗口會消失,會出現一個新的注冊界面;完成注冊或退出注冊時,注冊窗口會消失,重新出現登錄窗口。注冊過的用戶信息會出現在SQLi…

day 18:零基礎學嵌入式之數據結構——

一、基礎內容 1.數據結構:相互之間存在一種或多種特定關系的數據元素的集合。 2.邏輯結構 (1)集合,所有數據在同一個集合中,關系平等。 (2)線性,數據和數據之間是一對一的關系 &am…

【SSL證書系列】客戶端如何驗證https網站服務器發的證書是否由受信任的根證書簽發機構簽發

客戶端驗證HTTPS網站證書是否由受信任的根證書頒發機構(CA)簽發,是一個多步驟的過程,涉及證書鏈驗證、信任錨(Trust Anchor)檢查、域名匹配和吊銷狀態驗證等。以下是詳細的驗證流程: 1. 證書鏈的…

iOS即時通信的技術要點

iOS即時通信開發的關鍵技術要點總結: 一、通訊協議選擇 Socket通信 基礎實現:使用原生BSD Socket或CFNetwork框架(復雜),推薦第三方庫如CocoaAsyncSocket(封裝GCDAsyncSocket),簡化T…

智能AI構建工地安全網:跌倒、抽搐、區域入侵多場景覆蓋

智能AI在工地安全中的應用:從監測到救援的全流程實踐 一、背景:高溫作業下的工地安全挑戰 隨著夏季高溫持續,工地戶外作業環境面臨嚴峻考驗。工人因高溫疲勞、脫水或突發疾病引發的行為異常(如暈厥、抽搐、跌倒)頻發…

Doris

Apache Doris(原名:Palo)是一個高性能、實時的MPP分析型數據庫,非常適合海量數據的即席查詢、報表分析、指標統計等 OLAP 場景。Doris 的設計目標是:極致查詢性能、簡單易用、支持高并發分析和明細查詢。 一、Doris 核…

# 2-STM32F103-復位和時鐘控制RCC

STM32-復位和時鐘控制RCC 2-STM32-復位和時鐘控制RCC摘要說明本文參考資料如下: 一、STM32最小系統回顧STM32F103C8T6核心板原理圖 二、復位三、時鐘3.1 時鐘樹3.2 STM32啟動過程3.2 SystemInit()函數3.2.1 SystemInit()第1句:3.2.2 SystemInit()第2句&a…

rk3576 gstreamer opencv

安裝gstreamer rk3588使用gstreamer推流_rk3588 gstreamer-CSDN博客 rk3588使用gstreamer推流_rk3588 gstreamer-CSDN博客 Installing on Linux sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-pl…

Quic如何實現udp可靠傳輸

QUIC(Quick UDP Internet Connections)是由 Google 設計并被 IETF 標準化的傳輸層協議,它基于 UDP 實現,但提供了類似 TCP 的可靠性和更高級的功能(如多路復用、0-RTT 握手、TLS 加密等)。 盡管 UDP 是不可…

uniapp-商城-59-后臺 新增商品(屬性的選中,進行過濾展示,filter,some,every和map)

前面講了屬性的添加,添加完成后,數據庫中已經存在數據了,這時再繼續商品的添加時,就可以進行屬性的選擇了。 在商品添加過程中,屬性選擇是一個關鍵步驟。首先,界面需要展示嵌套的屬性數據,用戶通…

負載均衡 ELB 在 zkmall開源商城高流量場景下的算法優化

在電商大促、直播帶貨等高頻交易場景下,流量突發增長對系統穩定性提出嚴峻挑戰。ZKmll 開源商城通過對負載均衡 ELB(Elastic Load Balancer)算法的深度優化,結合業務場景特性設計動態加權輪詢 地域感知 熱點分流的混合策略&…

Linux干貨(三)

前言 從B站黑馬程序員Linux課程摘選的學習干貨,新手友好!若有侵權,會第一時間處理。 目錄 前言 1.which find命令 1.which命令 2.find命令 2.grep wc 管道符 1.grep命令 2.wc命令 3.管道符 3.echo tail 重定向符 1.echo命令 2.反…

Sigmoid與Softmax:從二分類到多分類的深度解析

Sigmoid與Softmax:從二分類到多分類的深度解析 聯系 函數性質:二者都是非線性函數 ,也都是指數歸一化函數,可將輸入值映射為0到1之間的實數 ,都能把輸出轉化成概率分布的形式,在神經網絡中常作為激活函數使用。Softmax是Sigmoid的推廣:從功能角度看,Softmax函數可視為…

文件系統交互實現

關于之前的搭建看QT控件文件系統的實現-CSDN博客,接下來是對本程序的功能完善,我想著是這樣設計的,打開一個目錄以后,鼠標選中一個項可以是目錄,也可以是文件,右鍵可以出現一個菜單選擇操作,比如…

[ctfshow web入門] web75

信息收集 啟用了open_basedir,所以之前的方法又不能用了 解題 cforeach(new DirectoryIterator("glob:///*") as $a){echo($a->__toString(). ); } ob_flush();cif ( $a opendir("glob:///*") ) {while ( ($file readdir($a)) ! false …

Vulfocus靶場-文件上傳-3

WSO2 文件上傳 (CVE-2022-29464) WSO2是一家成立于 2005 年的開源技術提供商。它提供了一個企業平臺,用于在本地和整個 Internet 上 集成應用程序編程接口(API)、應用程序和 Web 服務。 某些 WSO2 產品允許無限制的文件上傳和遠程代碼執行。…

基于MCP的橋梁設計規范智能解析與校審系統構建實踐

引言 今天本文準備盤一個大活,聊一聊偏特定行業一點的AI技術深入應用思考及實踐。 一、傳統設計行業項目背景與行業痛點 在橋梁設計領域,標準規范是設計的基礎,直接關系到橋梁結構的安全性、耐久性和經濟性。然而,傳統的規范應…

遠程連接電腦的方法?異地遠程桌面連接和三方軟件實現

遠程連接電腦,是指通過網絡技術,在一臺設備上操控另一臺設備的電腦桌面,實現跨地域的操作和管理。在日常工作、技術支持、遠程辦公等場景中,遠程連接電腦都發揮著重要作用。實現遠程連接電腦主要有系統自帶工具和第三方軟件兩種方…

win11 安裝 wsl ubuntu 18.04后換源失敗!

記錄幾個問題是如何解決的。 一 下載wsl后,有報錯: Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x8007019e Error: 0x8007019e ??????? Linux ? Windows ???? Press any key to continue... …

PY32系列單片機離線燒錄器,可配置選項字節和上機臺批量燒錄

PY32離線燒錄器采用 MINI-USB 接口,提供穩定的物理連接。設備與電腦采用串口方式通訊,波特率固定為 1M。需配合我們的上位機使用。PY32離線燒錄器現支持芯片型號在PY32F002A/002B/002/003/030/071/072/040/403/303各封裝和XL32F001/003。燒錄器僅提供 3.…