一、功能
根據用戶輸入的主題進行多輪搜索并生成綜合報告
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,避免重復
綜合報告生成:最后將所有發現匯總分析,生成詳細報告
三、數據流
用戶輸入 → 初始分析 → 多輪搜索 → 結果收集 → 綜合分析 → 報告輸出