Learn
Dify/11-workflow-nodes

工作流节点详解

节点是工作流的「积木」。本章拆解最常用的几类节点,并给出组合思路。掌握它们,你能拼出绝大多数业务流水线。

1. LLM 节点

调用大模型生成内容。配置项:

  • 模型:选具体模型与温度
  • 提示词:可引用上游变量,如 {{#start.query#}}
  • 记忆:是否带会话历史(对话型工作流可用)
  • 输出:默认 text 字段供下游引用
提示词示例:
你是翻译助手。把下面文本译成英文:
{{#start.text#}}

2. 知识检索节点

关联知识库,按输入检索片段。

输入:{{#start.query#}}
输出:{{#retrieve.result#}}  (数组,含多个片段)

常与 LLM 节点串联做 RAG。

💡检索结果先筛再喂

检索返回多个片段,可直接全喂给 LLM;若片段很长,可在中间插一个「代码/条件」节点截取 Top 片段或拼接,控制 token 成本。

3. 代码节点(Code)

用 Python/JavaScript 写轻量逻辑:数据清洗、格式转换、简单计算。

# 代码节点示例:把检索片段拼接成一段上下文
def main(retrieve_result: list) -> dict:
    context = "\n".join([r["content"] for r in retrieve_result[:3]])
    return {"context": context}
⚠️代码节点别写重逻辑

它适合「胶水代码」:切片、拼接、解析。重业务逻辑、需要依赖库或联网的,应放到你的后端服务,由 API 工具调用(第 9 章)。

4. 条件节点(IF / 分支)

根据表达式走不同分支。

IF  {{#start.lang#}} == "en"
   → 走「英文回答」分支
ELSE
   → 走「中文回答」分支

支持比较、包含、为空等判断,是流程分流的关键。

5. 迭代节点(Iteration)

对数组逐元素执行子流程,类似编程里的 for 循环。

输入:检索结果数组 [片段1, 片段2, 片段3]
子流程:对每个片段调用 LLM 抽取关键信息
输出:抽取结果数组

适合「批量处理多条记录」场景,如批量摘要多篇文章。

6. 典型组合示例

Start(问题)
  → 知识检索 → 代码节点(拼接Top3)
  → 条件节点(是否含敏感词)
       是 → 直接返回「无法回答」
       否 → LLM(生成答案) → End
🎯动手做

在上一章工作流基础上,加入一个「代码节点」把检索结果拼接成一段上下文,再传给 LLM;再尝试加一个「条件节点」判断问题长度,超长时先摘要再回答。

小结

  • LLM 节点生成、知识检索做 RAG、代码节点做胶水处理
  • 条件节点分流、迭代节点批量处理数组
  • 组合思路:检索→清洗→判断→生成→输出
  • 下一步:让模型自主决策的 Agent →