[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.mzph.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 语句创建为视图;作用: …