- 学会了查阅资料 —— 知识库检索
- 学会了区分情况 —— 条件判断
- 学会了处理多个任务 —— 参数提取 + 迭代
- 还学会了使用工具来延展 —— 工具节点
Agentic Workflow
Agentic Workflow 不再是简单的”输入 > 处理 > 输出”,而是包含了思考、规划、使用工具、根据结果调整等一系列更智能步骤的工作流。它让 AI 从一个简单的执行者变成了一个能自主解决问题的智能体 (Agent)。Agent 策略
为了让 Agent 更聪明地工作,研究者们设计了很多思考模式,这些策略像锦囊妙计一样,指导 Agent 如何一步步解决复杂问题。- ReAct (Reason + Act) 边思考边行动。Agent 会先思考我该做什么,然后执行一步(比如调用工具),观察结果,再根据结果进行下一步思考和行动,如此循环往复。
- Plan-and-Execute(规划与执行) 先制定详细的计划,再一步步严格执行计划。
- Chain of Thought(CoT - 思维链) 引导 AI 在回答问题前,先进行一步步的推理分析,把思考过程写出来,从而提高最终答案的准确性。
- Self-Correction(自我修正) 让 AI 对自己生成的初步结果进行审视和评估,发现其中的问题并进行修正。
- Memory(记忆) 为 Agent 配备短期或长期记忆机制,让它能记住之前的对话内容或关键信息,做出更连贯、更个性化的反应。
Agent 节点
你可以把它看作一个高度封装的智能单元。 你只需要给它通过指令设定一个目标 (Goal),并提供它可能需要用到的工具 (Tools),它就能在内部自主地思考、规划、选择并调用工具(利用选定的 Agent 策略,如 ReAct,以及模型的 Function Calling 能力),直到完成你设定的目标。 在 Dify 中,这极大地简化了构建复杂 Agentic Workflow 的过程。动手实践 1:使用 Agent 节点重构
我们的目标是使用 Agent 节点替换掉迭代里的部分节点。安装 Agent 策略
由于我们还没有安装 Agent 策略,所以我们需要前往 Marketplace 进行安装。点击 Agent 节点,在右侧面板中点击 Agent 策略,点击在 Marketplace 中查找更多。

选择 ReAct
让我们回到工作流页面,如果此时 Agent 策略仍然为空,可以刷新页面。点击 Agent 策略,选择 Agent 内的 ReAct。
为什么选择 ReAct?ReAct(Reason + Act)是一种非常强大且通用的 Agent 策略。它允许 Agent 像人一样思考:先推理 (Reason) 下一步该做什么(比如我应该先查知识库),然后行动 (Act)(调用知识库工具),观察结果后,再进行下一步推理(比如知识库没找到,我需要搜索)和行动(调用搜索工具)。这种边想边做的模式非常适合处理需要动态决策和多工具协作的复杂任务。

选择模型
ReAct 是一种思考策略,但要真正执行行动部分,AI 需要具备调用外部工具相应的技能,这种技能被称为函数调用(Function Calling)。为什么必须支持 Function Calling?因为 Agent 节点的核心能力之一就是自主调用工具。Function Calling 是模型理解何时以及如何调用你提供的工具(如谷歌搜索)的关键技术。如果模型不支持此功能,Agent 就无法有效地与工具交互,也就失去了大部分自主决策的能力。所以,我们需要选择一个支持函数调用的模型。在这里,我们选择 gpt-5。

上下文和查询
在指令中,我们要求 Agent 根据上下文进行判定。接下来,我们需要在上下文框内,选择对应的知识检索结果。
- 上下文:选择知识检索内的
Knowledge Retrieval / (x) result Array[Object](这会将知识库内容传递给 Agent)。 - 查询:选择
Iteration/{x} item。
email_content 中提取了一个问题列表 question_list。现在,迭代节点正在逐一处理这个问题列表,而迭代里的 item 就是当前在处理的一个个问题。将 item 作为查询输入,能让 Agent 更聚焦于当前的任务,提高其决策和行动的准确性。
🎉 我们完成了迭代节点的所有升级操作。
动手实践 2:最后的拼装
最终撰写人(LLM)
- 在迭代节点后增加一个 LLM 节点,作为最终的邮件撰写人。
-
点击该节点,在右侧的 System 里输入 Prompt。你可以参考下面的 Prompt,或自行修改。
-
在 User Message 中分别将 answers、email content 和 customer name 替换成对应的变量。当前 LLM 节点如下所示。


小挑战
- 我们能否让 Agent 节点直接替换掉迭代节点?应该怎么样进行编排?
- 上下文还能选择哪些信息,帮助 Agent 更好地运行?






