[dify]官方模板DeepResearch工作流學習筆記

一、功能

根據用戶輸入的主題進行多輪搜索并生成綜合報告

1、流程分析

1.1 初始階段

Start節點:接收用戶輸入的"depth"參數,決定搜索的深度/輪數
參數可以不填,不填的時候取默認值3
Create Array節點:根據depth參數生成一個數組(如depth=3則生成[0,1,2]),用于控制迭代次數

def main(depth: int) -> dict:depth = depth or 3array = list(range(depth))return {"array": array,"depth": depth}

輸入是一個int類型的數值,如果沒有輸入取默認值3
返回一個dict類型,包含兩個變量,array是一個number的數組,depth是一個int類型值

1.2 迭代搜索階段(核心循環)

工作流的主體是一個迭代循環,每次迭代包含以下步驟:

1、搜索決策
LLM節點:使用deepseek-v3模型分析當前狀態,決定:

是否需要繼續搜索(shouldContinue)、下一個搜索主題(nextSearchTopic)
輸出為JSON格式
提示詞:

你是一個研究以下主題的研究助手。
你目前發現了什么?還有哪些問題尚未解答?接下來應該具體研究哪些方面?#輸出要求
1、不要輸出與已搜索主題完全相同的主題。
2、如果需要進一步搜索信息,請設置 nextSearchTopic。
3、如果已獲得足夠信息,請將 shouldContinue 設為 false。
4、請以 JSON 格式輸出
{nextSearchTopic: str | None
shouldContinue: bool 
}

在工作流中用到4個會話變量,以及記憶功能
2、JSON解析
1、代碼執行2節點:從LLM輸出中提取JSON內容
2、模板轉換4節點:格式化JSON數據
3、參數提取器節點:提取nextSearchTopic和shouldContinue字段
大模型節點的輸入類似下面的文字
{
“text”: “json\n{\n \"nextSearchTopic\": \"Dify平臺的功能和架構概述\",\n \"shouldContinue\": true\n}\n
}
通過代碼執行節點,提取tex文本中json字符串
輸入:
{
“arg1”: “json\n{\n \"nextSearchTopic\": \"Dify平臺的功能和架構概述\",\n \"shouldContinue\": true\n}\n
}
代碼:

import re
import json
def main(arg1: str) -> dict:json_pattern = r'```json\s*([\s\S]*?)\s*```'match = re.search(json_pattern, arg1.strip())if not match:raise ValueError("文本中未找到有效的JSON內容")json_str = match.group(1)#去除轉義的json_str = re.sub(r'\\n', '', json_str)#.strip() 默認會移除字符串 開頭和結尾 的 所有空白字符(包括 \n, \t, 等)json_str = json_str.strip()json_str=json_str.replace('\\"', '"').replace('\\n', '')# 解析為Python對象parsed_data = json.loads(json_str)return {"result":parsed_data}

輸出:

{"result": {"nextSearchTopic": "Dify平臺的功能和架構概述","shouldContinue": true}
}

代碼執行結果是一個json對象,通過模板轉換節點,轉換為字符串,用參數提取器節點提取json里的變量

3、變量更新
變量賦值節點:更新以下變量:

將nextSearchTopic寫入會話變量
將shouldContinue寫入會話變量
將nextSearchTopic追加到已搜索topics列表
4、條件判斷
IF/ELSE節點:檢查shouldContinue值
如果為true:執行Tavily搜索
Tavily Search節點:使用nextSearchTopic進行網絡搜索
Assign Variables節點:將搜索結果追加到findings列表
Intermediate Output Format節點:生成中間狀態報告
如果為false:跳過搜索,進入空操作分支

1.3、結果聚合

變量聚合器節點:收集所有迭代的結果
最終報告生成
Reasoning Model節點:使用deepseek-r1模型綜合分析所有findings
提示詞:

根據調查結果,撰寫一份關于該主題的全面分析報告。
提供重要見解、結論以及尚存的不確定性。必要時請引用來源。本分析應非常全面且詳細,預期為長篇文本。

1.4 生成報告

生成詳細的調查報告,包含重要發現、結論和未解決的問題
Answer節點:輸出最終報告

二、工作流特點

多輪迭代搜索:根據depth參數和模型判斷動態控制搜索輪數
自適應搜索主題:每輪搜索后,模型會決定下一步要探索的子主題
避免重復搜索:系統會記錄已搜索的topics,避免重復
綜合報告生成:最后將所有發現匯總分析,生成詳細報告

三、數據流

用戶輸入 → 初始分析 → 多輪搜索 → 結果收集 → 綜合分析 → 報告輸出

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

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

相關文章

hadoop中的序列化和反序列化(3)

3. Java的序列化 Java提供了內置的序列化機制,通過java.io.Serializable接口實現。 3.1 如何實現Java序列化 讓類實現Serializable接口。 使用ObjectOutputStream進行序列化。 使用ObjectInputStream進行反序列化。 示例代碼 序列化 java 復制 import jav…

6、CMake基礎:流程控制

流程控制 1. 條件判斷1.1 基本表達式1.2 邏輯判斷1.3 比較基于數值的比較基于字符串的比較 1.4 文件操作1.5 其他 2. 循環2.1 foreach方法1方法2方法3方法4 2.2 while 在 CMake 的 CMakeLists.txt 中也可以進行流程控制,也就是說可以像寫 shell 腳本那樣進行條件判斷…

【網絡編程】二、UDP網絡套接字編程詳解

文章目錄 前言Ⅰ. UDP服務端一、服務器創建流程二、創建套接字 -- socketsocket 屬于什么類型的接口???socket 是被誰調用的???socket 底層做了什么???和其函數返回值有沒有什么關系??? 三、綁定對應端口號、IP地址到套接字 -- bind四、數據的發送和接收 -- sendto…

準確--Notepad++ 實用的插件介紹

Notepad 提供了很多實用的插件,可以極大地提升編程和文本編輯的效率。以下是一些常用且有用的插件介紹: 1. NPP Export 功能:可以將打開的文件導出為 HTML 或 RTF 格式,方便生成漂亮的代碼文檔。用途:適合需要將代碼…

[20250507] AI邊緣計算開發板行業調研報告 ??(2024年最新版)?

[20250507] AI邊緣計算開發板行業調研報告 ??(2024年最新版)? 一、行業背景?? 隨著物聯網設備激增與AI模型輕量化,邊緣計算成為AI落地核心場景。AI邊緣計算開發板(Edge AI Board)作為硬件載體,需滿足??低延遲…

傳輸層協議 1.TCP 2.UDP

傳輸層協議 1.TCP 2.UDP TCP協議 回顧內容 傳輸層功能:定義應用層協議數據報文的端口號,流量控制對原始數據進行分段處理 傳輸層所提供服務 傳輸連接服務數據傳輸服務:流量控制、差錯控制、序列控制 一、傳輸層的TCP協議 1.面向連接的…

LVGL -meter的應用

1 meter介紹 lv_meter 是 LVGL v8 引入的一種圖形控件,用于創建儀表盤樣式的用戶界面元素,它可以模擬像速度表、電壓表、溫度表這類模擬表盤。它通過可視化刻度、指針、顏色弧線等來展示數值信息,是一種非常直觀的數據展示控件。 1.1 核心特…

GoFly企業版框架升級2.6.6版本說明(框架在2025-05-06發布了)

前端框架升級說明: 1.vue版本升級到^3.5.4 把"vue": "^3.2.40",升級到"vue": "^3.5.4",新版插件需要時useTemplateRef,所以框架就對齊進行升級。 2.ArcoDesign升級到2.57.0(目前最新2025-02-10&a…

阿里聯合北大開源數字人項目FantasyTalking,輸出內容更加動態化~

簡介 FantasyTalking 的核心目標是從單一靜態圖像、音頻(以及可選的文本提示)生成高保真、連貫一致的說話肖像。研究表明,現有方法在生成可動畫化頭像時面臨多重挑戰,包括難以捕捉細微的面部表情、整體身體動作以及動態背景的協調…

基于nnom的多選擇器

核心組件 元件類型目的接口STM32F103CB微控制器主處理單元-MPU60506 軸 IMU移動偵測I2C 接口W25Q64 系列閃存信號和配置存儲SPI 系列按鈕用戶輸入模式選擇和激活GPIO (通用輸出)搭載了LED用戶反饋系統狀態指示GPIO (通用輸出)RT6…

Redis中6種緩存更新策略

Redis作為一款高性能的內存數據庫,已經成為緩存層的首選解決方案。然而,使用緩存時最大的挑戰在于保證緩存數據與底層數據源的一致性。緩存更新策略直接影響系統的性能、可靠性和數據一致性,選擇合適的策略至關重要。 本文將介紹Redis中6種緩…

項目優先級頻繁變動,如何應對?

項目優先級頻繁變動是許多公司和團隊在工作中常遇到的挑戰。 這種情況通常由業務需求變化、市場壓力或高層決策調整等因素引起,常常讓團隊成員感到困惑和不安。首先,制定明確的優先級管理框架是應對項目優先級變動的基礎, 通過清晰的優先級排…

屏蔽力 | 在復雜世界中從內耗到成長的轉變之道

注:本文為“屏蔽力”相關文章合輯。 略作重排,未全整理。 世上的事再復雜,不外乎這三種 原創 小鹿 讀者 2022 年 12 月 02 日 18 : 27 甘肅 文 / 小鹿 在這世上,每天都有大事小事、瑣事煩事。我們總為世事奔波忙碌,…

[數據處理] 3. 數據集讀取

👋 你好!這里有實用干貨與深度分享?? 若有幫助,歡迎:? 👍 點贊 | ? 收藏 | 💬 評論 | ? 關注 ,解鎖更多精彩!? 📁 收藏專欄即可第一時間獲取最新推送🔔…

IIS配置SSL

打開iis 如果搜不到iis,要先開 再搜就打得開了 cmd中找到本機ip 用http訪問本機ip 把原本的http綁定刪了 再用http訪問本機ip就不行了 只能用https訪問了

RabbitMQ的交換機

一、三種交換機模式 核心區別對比?? ??特性????廣播模式(Fanout)????路由模式(Direct)????主題模式(Topic)????路由規則??無條件復制到所有綁定隊列精確匹配 Routing Key通配符匹配…

(2025,AR,NAR,GAN,Diffusion,模型對比,數據集,評估指標,性能對比)文本到圖像的生成和編輯:綜述

【本文為我在去年完成的綜述,因某些原因未能及時投稿,但本文仍能為想要全面了解文本到圖像的生成和編輯的學習者提供可靠的參考。目前本文已投稿 ACM Computing Surveys。 完整內容可在如下鏈接獲取,或在 Q 群群文件獲取。 中文版為論文初稿&…

MCU怎么運行深度學習模型

Gitee倉庫 git clone https://gitee.com/banana-peel-x/freedom-learn.git項目場景: 解決面試時遺留的問題,面試官提了兩個問題:1.單片機能跑深度學習的模型嗎? 2.為什么FreeRTOS要采用SVC去觸發第一個任務,只用Pend…

多模態學習(一)——從 Image-Text Pair 到 Instruction-Following 格式

前言 在多模態任務中(例如圖像問答、圖像描述等),為了使用指令微調(Instruction Tuning)提升多模態大模型的能力,我們需要構建成千上萬條**指令跟隨(instruction-following)**格式的…

MySQL基礎關鍵_011_視圖

目 錄 一、說明 二、操作 1.創建視圖 2.創建可替換視圖 3.修改視圖 4.刪除視圖 5.對視圖內容的增、刪、改 (1)增 (2)改 (3)刪 一、說明 只能將 DQL 語句創建為視圖;作用: …