用 Dify 工作流实现深度研究(DeepResearch)

最近,我养成了一个习惯:想要查询什么内容时,不会再依赖普通的搜索引擎,而是向生成式 AI 提问。生成式 AI 能让我清晰易懂地获取想要的信息,其近年来的发展速度实在令人惊叹。

不过,即便使用生成式 AI,若要完成的不是简单搜索,而是多方查找相关信息,依然相当耗时。这时,“深度研究(DeepResearch)” 就显得格外实用了 —— 它能针对用户的问题进行更广泛、更深入的思考后再给出答案。目前已有多款生成式 AI 服务推出了这一功能,本次我将介绍如何使用 Dify 实现 “DeepResearch” 功能。

1. 概述

什么是 DeepResearch

DeepResearch 并非局限于简单的关键词搜索,而是基于搜索结果逐步深入挖掘下一步所需信息,从而实现自动化、全面性调查的流程。

它是 OpenAI 于 2025 年 2 月发布的、集成于 ChatGPT 的高级 AI 智能体,旨在高效自动化处理复杂的调查任务。该功能能在数十分钟内完成人类需耗费数小时才能达成的工作 —— 从互联网上的海量信息源中收集相关数据、进行分析整合并生成全面报告,因此备受关注。

什么是 Dify

Dify 是一个无需代码即可创建生成式 AI 应用与工作流的开源平台。

通过图形用户界面(GUI),用户能直观地构建利用生成式 AI(LLM)的应用、智能体及工作流。此外,该平台支持灵活选择和组合 ChatGPT、Claude、Bedrock 等多个模型,让开发者能轻松开展基于 LLM 的应用开发。

2. 用 Dify 工作流实现 DeepResearch

Dify 提供了 DeepResearch 的模板。关于构建方法,请参考 Dify 官方博客的文章 DeepResearch: Building a Research Automation App with Dify

这款 DeepResearch 模板似乎是由日本人岸田崇史先生创作,并被采纳为 Dify 官方模板的。

工作流说明

上图即为加载了模板后的工作流。

重现 DeepResearch 功能的核心部分,是红框标出的迭代块(Iteration Block)。以用户输入为基础,以 LLM 节点初始设定的搜索关键词为起点,AI 会接连生成新的搜索主题,并自动执行连续调查。

借助这一机制,原本手动操作需耗费大量时间的多维度、深层次研究得以实现自动化。该迭代过程会重复进行,直至达到 “开始(START)” 节点指定的次数,或 LLM 节点判定无需继续调查为止。

本文中对模板的修改主要是调整了 LLM 块的 AI 模型,具体如下:

块名称说明所使用的 LLM 模型
LLM生成搜索主题Nova Pro
Reasoning Model对主题进行全面分析Claude 3.7 Sonnet
将 Reasoning Model 的模型从 deepseek-reasoner 改为 Claude 3.7 Sonnet

※假设 Dify 已实现与 Bedrock 的联动

此外,由于出现过搜索思考过程显示为英语的情况,我在系统提示词中补充了 “思考过程全程以中文输出” 的要求。

修正系统提示词,确保输出过程也以中文显示

工作流中迭代块(Iteration Block)的算法说明

1. 工作流的输入

工作流的输入包含以下两项:

① depth:迭代的最大次数(可选)

迭代块的输入① depth

② sys.query:用户最初输入的 “待调查主题”

迭代块的输入② sys.query

2. 搜索主题的生成方法

搜索主题由 LLM 生成,赋予 LLM 的系统提示词如下。简言之,就是从已搜索结果中找出尚未明确的信息点,生成与过往搜索主题不重复的新主题进行再次搜索。

You are a research agent investigating the following topic.
What have you found? What questions remain unanswered? What specific aspects should be investigated next?

## Output
- Do not output topics that are exactly the same as already searched topics.
- If further information search is needed, set nextSearchTopic.
- If sufficient information has been obtained, set shouldContinue to false.
- Please output in json format
- Please output everything, including the search output process, in Japanese.

{
nextSearchTopic: str | None
shouldContinue: bool 
}

3. 如何判断是否需要再次搜索

退出迭代的条件有以下两项:

  • shouldContinue 设为 False 时
  • 迭代次数达到 depth 指定值时

3. 实际运行工作流

接下来,我们在 Dify 上实际运行这个工作流。

当我针对 DeepResearch 提问后,得到了如下输出结果。它不仅说明了概要,还检索了相关附带信息,给出了明确的答案。

此外,概要说明也参考了多个信息源,可以说生成了一份可信度极高的报告。

而且,打开 AI 输出的工作流处理记录,还能查看搜索过程的结果。

从下图中可以确认:系统会针对输入关键词生成下一个搜索主题(nextSearchTopic);若需要继续搜索,shouldContinue 标记会设为 “true”。

各块的执行时间

序号块名称执行时间(秒)
1Start0.080
2数组创建0.108
3第 1 次迭代4.563
4第 2 次迭代4.866
5第 3 次迭代2.225
6Reasoning Model55.904
7回答0.039
合计67.885

4. 总结

本文介绍了使用 Dify 实现 DeepResearch 的方法。

借助 Dify,AI 能连续检索、分析生成的主题,并自动控制调查深度,从而实现 DeepResearch 功能。此外,AWS 的 Bedrock 与 Dify 的联动也十分便捷,支持灵活选择模型。欢迎大家将其引入自己的项目中,亲身体验调查工作的效率提升。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注