无论是撰写学术论文、市场调研报告,还是解决复杂的技术问题,我们都会发现简单的搜索引擎查询往往不够用,一个问题可能需要数十次搜索才能得到满意的答案。Deep Research 正是为解决这一日常难题而生的功能。目前,Google Gemini、ChatGPT** 与 DeepSeek-R1 等主流大语言模型均已提供此类能力。
Deep Research 的核心在于其迭代性和自适应性。系统识别知识缺口,生成针对性查询,持续迭代探索,最终生成全面的研究报告。相比传统搜索,Deep Research 功能能更好地处理复杂问题,提供更有深度和广度的答案。
本文将介绍如何在 Dify 中利用工作流实现 Deep Research。通过应用循环变量、结构化输出和 Agent 节点这三个功能,我们可以构建一个自主探索、持续学习、深度挖掘的研究系统。
实现架构
为了使用 Dify 实现 Deep Research,我们设计了一个三阶段的工作流架构:
- 识别意图、获取背景信息: 这一阶段旨在接收研究主题,获取初始背景信息,并分析用户查询的表面意图、实际目标和潜在动机,以建立研究的基础方向。
- 反思和迭代: 这一阶段将通过循环变量节点管理整个研究的迭代过程,分析当前知识,识别缺口,执行搜索和获取内容,并不断积累和更新研究成果。
- 输出终稿: 这一阶段将综合所有收集的信息,生成结构化、连贯的最终研究报告,并提供完整的引用支持。
这一架构的核心理念是认知递归:系统不断评估自己对问题的理解深度,识别知识的盲点和缺口,然后有针对性地寻找新信息。它模拟了专业研究人员在面对复杂问题时的工作方式:“我已经了解了哪些方面?还有哪些关键信息缺失?下一步应该探索什么?”
阶段一:研究准备与基础设置
开始节点
首先,我们在开始节点中设计表单,定义用户的输入参数:
- research topic: 研究的主题,用户需要查询的核心问题;
- max loop: 针对本次研究的预算上限,决定可以迭代多少次。
Exa Answer 工具
我们通过 Exa Answer 工具获取初步的背景信息,确保在意图识别阶段能够让大模型理解提问中的专业名词。
用户意图
随后,我们使用一个 LLM 节点挖掘用户意图,以理解提问的表面含义、潜在动机和实际目标。
阶段二:循环深入研究
循环节点
循环是实现 Deep Research 的核心节点。在 Dify 工作流中,循环节点能够在循环的不同轮次间传递和累积信息,使每次迭代都能基于之前的发现继续深入。
循环节点文档:docs.dify.ai/zh-hans/gui…
在我们的 Deep Research 工作流中,设置了六个核心循环变量:
- findings: 用于储存每一轮迭代新发现的知识;
- executed_querys: 用于储存已经查询过的 query,避免重复查询;
- current_loop: 用于记录当前循环的次数;
- visited_urls: 用于记录已访问的链接,做来源的引用标注;
- image_urls: 可以作为研究过程中图文混排的链接来源;
- knowledge_gaps: 记录当前研究中识别出的知识缺口。
循环变量和一般变量的主要区别:
- 正常引用: Node 1 → Node 2 → Node 3(每个节点只能引用前一个节点的输出)
- 循环内跨轮次引用: 不仅可以引用同轮次内的前序节点,还可以引用上一轮次的任意节点输出,实现跨轮次的信息传递
这种机制使得研究过程能够累积知识,避免重复工作,并持续深化对主题的探索。
Reasoning 节点
在 Reasoning 这个 LLM 节点中,我们定义了一个明确的输出结构,以指导模型“提出好问题”。
这个输出结构包括三个关键部分:
如何才能让 LLM 生成精确的、具有特定格式的输出结构,以便后续节点能够准确处理呢?Dify 的结构化输出功能可以实现这一点。
结构化输出文档:docs.dify.ai/zh-hans/gui…
通过打开 LLM 节点中结构化输出的可视化编辑器开关,我们可以以严格定义的数据结构(如 JSON)接收 LLM 的回答,确保返回结果格式一致且可预测。这让我们能精确提取 reasoning、search_query 和 knowledge_gaps 等关键字段,为后续研究步骤提供明确方向。
Agent 节点
提出一个好问题只是研究过程的起点。要有效解决这些问题,系统需要具备推理能力和工具调用能力,这正是 Agent 节点的关键价值所在。
Agent 节点文档:docs.dify.ai/zh-hans/gui…
Agent 节点充当研究流程中的执行者,能够基于当前情境选择并调用最合适的工具来获取信息、分析数据并提炼答案。在 Deep Research 的实现中,我们通过特定工具赋予 Agent 探索网络世界的能力:
信息获取工具
- exa_search 工具: 这个工具执行网络搜索任务,相当于研究者浏览搜索引擎结果页面的过程;
- exa_content 工具: 这个工具用于深入访问特定链接,获取完整内容细节。
反思与整合工具
- think 工具: 这个工具是整个系统的思考引擎,其灵感来源于 Anthropic 的 Claude Think Tool。在 Agent 的工具列表中添加这个特殊工具后,Agent 能够在行动之间进行反思和整合。它会回顾已收集的信息,评估当前知识状态,判断是否有足够信息解答问题或需要进一步探索。这个过程类似于研究者在笔记本上记录思考过程:回顾已知内容,识别模式和关联,确定下一步方向。
在 Agent 配置中,我们采用了一种优化策略:我们将前序 LLM 节点通过结构化输出生成的 search_query 字段作为 Agent 的查询输入,而不是传递整个上下文。这种精确的参数传递确保了 Agent 节点能够聚焦于最相关的信息,提高工具调用的准确性。
URL Extract 节点
我们同时还会利用结构化输出,将 Agent 返回的内容解析为标准格式,例如,工作流会自动提取发现的 URL 和图片链接,便于在循环变量中准确跟踪和管理这些资源。
在整条工作流中,Agent 节点在每次迭代中都会经历信息收集、内容理解和反思整合的完整周期。
变量赋值器
最终,通过变量赋值器节点,工作流可以实现研究状态的累加和更新。我们希望确保每次迭代都是在前一次基础上的递进,而非简单的重复。
阶段三:研究成果整合
在完成多轮迭代探索后,我们使用更新后的循环变量作为 Final Summary 节点的上下文。这些变量包含了整个研究过程中积累的 findings(研究发现)、visited_urls(已访问链接)和其他关键信息。
在 Final Summary 节点的配置中,我们特别指定让它保留 Markdown 的链接引用格式,并在报告结尾整理完整的引用链接列表,确保研究结果的可溯源性和可信度。此外,我们还在工作流中穿插了一系列 Answer 节点,让研究过程的不同阶段内容能够以流式方式呈现给用户,提供了即时反馈。
这样设计的工作流所生成的研究报告不仅包含全面的分析内容,还提供了完整的信息来源引用,使研究结果既有深度又有可信度。
结语
以上就是使用 Dify 的 Agentic Workflow 实现 Deep Research 的最佳实践。这种实现方式不仅模拟了人类专家的研究流程,还通过自动化和智能化大幅提高了研究效率。
我们希望这个最佳实践能为你带来启发,帮助你利用 Dify 的强大功能构建更智能、更高效的工作流!