Dify 工作流节点-完整指南
Dify 工作流引擎提供了丰富的节点类型,支持构建复杂AI应用流程。主要包含基础节点、AI能力节点、逻辑控制节点、数据处理节点和外部集成节点等5大类。系统支持3种工作流类型:标准Workflow、对话式Chat和知识库处理RAG Pipeline,不同工作流类型下可用节点有所差异。RAG Pipeline专用节点包括Datasource和Knowledge Index,而常规工作流则支持Knowl
概述
Dify 工作流引擎提供了丰富的节点类型,用于构建复杂的 AI 应用流程。本文档详细介绍每个可用节点的功能、配置参数和使用方法。
节点代码位置:api/core/workflow/nodes/
工作流类型
Dify 支持三种工作流类型:
| 类型 | 标识 | 说明 | 可用节点 |
|---|---|---|---|
| Workflow | workflow |
标准工作流应用 | 常规节点 |
| Chat | chat |
对话式工作流 | 常规节点 |
| RAG Pipeline | rag-pipeline |
知识库处理流水线 | 包含特殊节点 (Datasource, Knowledge Index) |
⚠️ 注意:部分节点仅在特定工作流类型中可见,详见下方"节点可见性"说明。
节点分类
按功能分类
| 分类 | 节点 | 说明 |
|---|---|---|
| 基础节点 | Start, End, Answer | 工作流入口、出口和响应 |
| AI 能力节点 | LLM, Knowledge Retrieval, Question Classifier, Parameter Extractor, Agent | 调用 AI 模型进行推理 |
| 逻辑控制节点 | If-Else, Iteration, Loop | 条件判断和循环控制 |
| 数据处理节点 | Code, Template Transform, Variable Aggregator, Variable Assigner, List Operator, Document Extractor | 数据转换和处理 |
| 外部集成节点 | HTTP Request, Tool | 调用外部 API 和工具 |
| RAG Pipeline 专用节点 | Datasource, Knowledge Index | 知识库数据导入和索引 |
| 交互节点 | Human Input | 人机交互,等待人工输入 |
按执行类型分类
| 执行类型 | 说明 | 包含节点 |
|---|---|---|
| ROOT | 入口节点,工作流起点 | Start, Datasource |
| EXECUTABLE | 可执行节点,处理数据 | LLM, Code, HTTP Request, Tool, Knowledge Retrieval 等 |
| RESPONSE | 响应节点,支持流式输出 | Answer, End, Knowledge Index |
| BRANCH | 分支节点,控制流程走向 | If-Else, Question Classifier, Human Input |
| CONTAINER | 容器节点,管理子图执行 | Iteration, Loop |
节点可见性
| 节点 | 常规工作流 | RAG Pipeline | 说明 |
|---|---|---|---|
| Start | ✅ | ✅ | 所有工作流 |
| End | ✅ | ✅ | 所有工作流 |
| Answer | ✅ | ✅ | 所有工作流 |
| LLM | ✅ | ✅ | 所有工作流 |
| Knowledge Retrieval | ✅ | ❌ | 仅常规工作流 |
| If-Else | ✅ | ✅ | 所有工作流 |
| Code | ✅ | ✅ | 所有工作流 |
| Template Transform | ✅ | ✅ | 所有工作流 |
| Question Classifier | ✅ | ❌ | 仅常规工作流 |
| HTTP Request | ✅ | ✅ | 所有工作流 |
| Tool | ✅ | ✅ | 所有工作流 |
| Variable Aggregator | ✅ | ✅ | 所有工作流 |
| Variable Assigner | ✅ | ✅ | 所有工作流 |
| Iteration | ✅ | ✅ | 所有工作流 |
| Loop | ✅ | ✅ | 所有工作流 |
| Parameter Extractor | ✅ | ❌ | 仅常规工作流 |
| Document Extractor | ✅ | ❌ | 仅常规工作流 |
| List Operator | ✅ | ✅ | 所有工作流 |
| Agent | ✅ | ❌ | 仅常规工作流 |
| Datasource | ❌ | ✅ | 仅 RAG Pipeline |
| Knowledge Index | ❌ | ✅ | 仅 RAG Pipeline |
| Human Input | ❌ | ❌ | 后端已实现,前端暂未开放 |
💡 为什么某些节点在常规工作流中看不到?
Datasource (数据源节点) 和 Knowledge Index (知识索引节点):
- 这两个节点是 RAG Pipeline 专用节点
- 用于知识库的数据导入和索引流程
- 只有在创建 “RAG Pipeline” 类型的工作流时才可见
- RAG Pipeline 是 Dify 用于处理知识库数据的特殊工作流类型
- 前端类型定义:
BlockEnum.DataSource = 'datasource',BlockEnum.KnowledgeBase = 'knowledge-index'Human Input (人工输入节点):
- 后端代码已完整实现(
api/core/workflow/nodes/human_input/)- 但前端
BlockEnum枚举中没有定义此节点类型- 这表明该功能尚未在前端开放,可能是:
- 正在开发中的功能
- 企业版专属功能
- 需要通过配置开启的实验性功能
1. 开始节点 (Start Node)
类型标识: start
功能描述
工作流的入口节点,用于定义工作流的输入变量。每个工作流必须有且只有一个开始节点。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
variables |
list[VariableEntity] |
用户输入变量列表 |
VariableEntity 结构
每个变量可配置:
variable: 变量名称label: 显示标签type: 变量类型 (string, number, select, paragraph, files 等)required: 是否必填max_length: 最大长度options: 选项列表 (用于 select 类型)
输出变量
- 所有定义的用户输入变量
- 系统变量 (
sys.query,sys.files,sys.conversation_id,sys.user_id等)
使用示例
type: start
variables:
- variable: user_input
label: 用户输入
type: paragraph
required: true
- variable: language
label: 语言选择
type: select
options:
- 中文
- English
2. 结束节点 (End Node)
类型标识: end
功能描述
工作流的终止节点,用于收集并输出最终结果。支持流式输出。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
outputs |
list[VariableSelector] |
输出变量选择器列表 |
VariableSelector 结构
class VariableSelector:
variable: str # 输出变量名
value_selector: list[str] # 变量选择路径 [node_id, variable_name]
使用示例
type: end
outputs:
- variable: result
value_selector: [llm_node_1, text]
- variable: metadata
value_selector: [code_node_1, output]
3. 回答节点 (Answer Node)
类型标识: answer
功能描述
用于在工作流执行过程中输出中间结果或流式响应。支持模板变量替换和流式输出。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
answer |
str |
回答模板字符串,支持变量引用 |
模板语法
使用 {{#node_id.variable_name#}} 语法引用变量:
根据您的问题,这是我的回答:
{{#llm_node_1.text#}}
处理完成!
输出变量
| 变量 | 类型 | 说明 |
|---|---|---|
answer |
string | 渲染后的回答文本 |
files |
array[file] | 提取的文件列表 |
4. LLM 节点
类型标识: llm
功能描述
调用大语言模型进行推理、生成文本、对话等任务。是工作流中最核心的节点之一。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
model |
ModelConfig |
模型配置 |
prompt_template |
list[Message] |
提示词模板 |
prompt_config |
PromptConfig |
Jinja2 变量配置 |
memory |
MemoryConfig |
对话记忆配置 |
context |
ContextConfig |
上下文配置 |
vision |
VisionConfig |
视觉能力配置 |
structured_output |
dict |
结构化输出 Schema |
reasoning_format |
str |
推理输出格式 (“separated” 或 “tagged”) |
ModelConfig 结构
class ModelConfig:
provider: str # 模型提供商 (openai, anthropic 等)
name: str # 模型名称 (gpt-4, claude-3 等)
mode: LLMMode # 模型模式 (chat, completion)
completion_params: dict # 模型参数 (temperature, max_tokens 等)
消息模板
支持 Chat 模式和 Completion 模式:
Chat 模式:
prompt_template:
- role: system
text: 你是一个有帮助的助手
- role: user
text: "{{#start.user_input#}}"
Jinja2 模式:
prompt_template:
- role: user
jinja2_text: |
{% for item in items %}
- {{ item }}
{% endfor %}
输出变量
| 变量 | 类型 | 说明 |
|---|---|---|
text |
string | 模型生成的文本 |
reasoning_content |
string | 推理内容 (如果模型支持) |
usage |
object | Token 使用统计 |
finish_reason |
string | 完成原因 |
files |
array[file] | 生成的文件 (多模态输出) |
使用示例
type: llm
model:
provider: openai
name: gpt-4o
mode: chat
completion_params:
temperature: 0.7
max_tokens: 2000
prompt_template:
- role: system
text: 你是一个专业的翻译助手
- role: user
text: "请将以下文本翻译成英文:{{#start.text#}}"
context:
enabled: true
variable_selector: [knowledge_retrieval_1, result]
vision:
enabled: true
configs:
detail: high
5. 知识检索节点 (Knowledge Retrieval Node)
类型标识: knowledge-retrieval
功能描述
从知识库中检索相关文档片段,支持语义检索、关键词检索和混合检索。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
query_variable_selector |
list[str] |
查询变量选择器 |
dataset_ids |
list[str] |
知识库 ID 列表 |
retrieval_mode |
str |
检索模式 (single/multiple) |
single_retrieval_config |
SingleRetrievalConfig |
单库检索配置 |
multiple_retrieval_config |
MultipleRetrievalConfig |
多库检索配置 |
metadata_filtering_conditions |
list[Condition] |
元数据过滤条件 |
检索配置
MultipleRetrievalConfig:
class MultipleRetrievalConfig:
top_k: int # 返回结果数量
score_threshold: float # 分数阈值
reranking_mode: str # 重排序模式
reranking_enable: bool # 是否启用重排序
reranking_model: RerankingModelConfig # 重排序模型配置
weights: WeightedScoreConfig # 混合检索权重
输出变量
| 变量 | 类型 | 说明 |
|---|---|---|
result |
array[object] | 检索结果列表 |
result[].content |
string | 文档内容 |
result[].title |
string | 文档标题 |
result[].score |
float | 相关性分数 |
result[].metadata |
object | 元数据 |
使用示例
type: knowledge-retrieval
query_variable_selector: [start, user_input]
dataset_ids:
- dataset_123
- dataset_456
retrieval_mode: multiple
multiple_retrieval_config:
top_k: 5
score_threshold: 0.5
reranking_enable: true
reranking_model:
provider: cohere
model: rerank-english-v2.0
6. 条件分支节点 (If-Else Node)
类型标识: if-else
功能描述
根据条件判断选择不同的执行分支,支持多条件组合和多分支。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
cases |
list[Case] |
条件分支列表 |
logical_operator |
str |
逻辑运算符 (and/or) - 已废弃 |
Case 结构
class Case:
case_id: str # 分支唯一标识
logical_operator: Literal["and", "or"] # 条件间逻辑关系
conditions: list[Condition] # 条件列表
Condition 结构
class Condition:
variable_selector: list[str] # 变量选择器
comparison_operator: str # 比较运算符
value: Any # 比较值
支持的比较运算符
| 运算符 | 说明 | 适用类型 |
|---|---|---|
contains |
包含 | string, array |
not contains |
不包含 | string, array |
start with |
开头是 | string |
end with |
结尾是 | string |
is |
等于 | string |
is not |
不等于 | string |
empty |
为空 | string, array |
not empty |
不为空 | string, array |
= |
等于 | number |
≠ |
不等于 | number |
> |
大于 | number |
< |
小于 | number |
≥ |
大于等于 | number |
≤ |
小于等于 | number |
输出变量
| 变量 | 类型 | 说明 |
|---|---|---|
result |
boolean | 条件判断结果 |
selected_case_id |
string | 选中的分支 ID |
使用示例
type: if-else
cases:
- case_id: positive
logical_operator: and
conditions:
- variable_selector: [llm_1, text]
comparison_operator: contains
value: 积极
- case_id: negative
logical_operator: and
conditions:
- variable_selector: [llm_1, text]
comparison_operator: contains
value: 消极
# 默认分支 case_id: false
7. 代码节点 (Code Node)
类型标识: code
功能描述
执行自定义 Python 或 JavaScript 代码,用于数据处理、转换和复杂逻辑实现。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
code_language |
str |
编程语言 (python3, javascript) |
code |
str |
代码内容 |
variables |
list[VariableSelector] |
输入变量列表 |
outputs |
dict[str, Output] |
输出变量定义 |
dependencies |
list[Dependency] |
依赖包列表 |
支持的输出类型
string- 字符串number- 数字boolean- 布尔值object- 对象array[string]- 字符串数组array[number]- 数字数组array[boolean]- 布尔数组array[object]- 对象数组
Python 代码模板
def main(arg1: str, arg2: dict) -> dict:
# 处理逻辑
result = process_data(arg1, arg2)
return {
"output": result,
"count": len(result)
}
JavaScript 代码模板
function main(arg1, arg2) {
// 处理逻辑
const result = processData(arg1, arg2);
return {
output: result,
count: result.length
};
}
使用示例
type: code
code_language: python3
variables:
- variable: text
value_selector: [llm_1, text]
- variable: config
value_selector: [start, config]
code: |
import json
def main(text: str, config: dict) -> dict:
words = text.split()
word_count = len(words)
return {
"word_count": word_count,
"words": words[:10]
}
outputs:
word_count:
type: number
words:
type: array[string]
8. HTTP 请求节点 (HTTP Request Node)
类型标识: http-request
功能描述
发送 HTTP 请求到外部 API,支持各种请求方法、认证方式和请求体格式。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
method |
str |
请求方法 (GET, POST, PUT, DELETE 等) |
url |
str |
请求 URL (支持变量) |
authorization |
HttpRequestNodeAuthorization |
认证配置 |
headers |
str |
请求头 (Key: Value 格式) |
params |
str |
URL 参数 (Key: Value 格式) |
body |
HttpRequestNodeBody |
请求体配置 |
timeout |
HttpRequestNodeTimeout |
超时配置 |
ssl_verify |
bool |
是否验证 SSL 证书 |
认证类型
class HttpRequestNodeAuthorization:
type: Literal["no-auth", "api-key"]
config: HttpRequestNodeAuthorizationConfig # 包含 type, api_key, header
请求体类型
none- 无请求体form-data- 表单数据x-www-form-urlencoded- URL 编码表单raw-text- 原始文本json- JSON 格式binary- 二进制数据
输出变量
| 变量 | 类型 | 说明 |
|---|---|---|
status_code |
number | HTTP 状态码 |
body |
string | 响应体 |
headers |
object | 响应头 |
files |
array[file] | 响应文件 (如果是文件下载) |
使用示例
type: http-request
method: POST
url: "https://api.example.com/v1/process"
authorization:
type: api-key
config:
type: bearer
api_key: "{{#start.api_key#}}"
headers: |
Content-Type: application/json
X-Custom-Header: value
body:
type: json
data:
- key: input
type: text
value: "{{#llm_1.text#}}"
timeout:
connect: 10
read: 60
write: 30
9. 工具节点 (Tool Node)
类型标识: tool
功能描述
调用内置工具或插件工具,如 Google 搜索、天气查询、代码执行等。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
provider_id |
str |
工具提供者 ID |
provider_type |
ToolProviderType |
提供者类型 (builtin, api, workflow) |
provider_name |
str |
提供者名称 |
tool_name |
str |
工具名称 |
tool_label |
str |
工具标签 |
tool_configurations |
dict |
工具配置 |
tool_parameters |
dict[str, ToolInput] |
工具参数 |
ToolInput 结构
class ToolInput:
value: Any # 参数值
type: Literal["mixed", "variable", "constant"] # 输入类型
输出变量
根据工具不同,输出变量也不同。通常包含:
| 变量 | 类型 | 说明 |
|---|---|---|
text |
string | 工具返回的文本 |
files |
array[file] | 工具返回的文件 |
json |
array[object] | 工具返回的 JSON 数据 |
使用示例
type: tool
provider_id: google
provider_type: builtin
provider_name: google
tool_name: google_search
tool_label: Google 搜索
tool_parameters:
query:
type: variable
value: [start, search_query]
num_results:
type: constant
value: 5
10. 问题分类器节点 (Question Classifier Node)
类型标识: question-classifier
功能描述
使用 LLM 对用户问题进行意图分类,根据分类结果选择不同的执行分支。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
query_variable_selector |
list[str] |
查询变量选择器 |
model |
ModelConfig |
分类使用的模型 |
classes |
list[ClassConfig] |
分类类别列表 |
instruction |
str |
额外分类指令 |
memory |
MemoryConfig |
对话记忆配置 |
vision |
VisionConfig |
视觉能力配置 |
ClassConfig 结构
class ClassConfig:
id: str # 类别唯一标识 (用作分支 handle)
name: str # 类别名称/描述
输出变量
| 变量 | 类型 | 说明 |
|---|---|---|
class_name |
string | 分类结果名称 |
class_id |
string | 分类结果 ID |
使用示例
type: question-classifier
query_variable_selector: [start, user_input]
model:
provider: openai
name: gpt-4o-mini
mode: chat
classes:
- id: product_inquiry
name: 产品咨询
- id: tech_support
name: 技术支持
- id: complaint
name: 投诉建议
- id: other
name: 其他问题
instruction: |
请仔细分析用户的问题,判断其意图类别。
如果无法确定,请选择"其他问题"。
11. 模板转换节点 (Template Transform Node)
类型标识: template-transform
功能描述
使用 Jinja2 模板引擎进行文本转换,支持复杂的模板逻辑。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
variables |
list[VariableSelector] |
模板变量列表 |
template |
str |
Jinja2 模板内容 |
Jinja2 语法示例
{% for item in items %}
- 项目: {{ item.name }}
描述: {{ item.description }}
{% endfor %}
{% if condition %}
满足条件的内容
{% else %}
不满足条件的内容
{% endif %}
总数: {{ items | length }}
输出变量
| 变量 | 类型 | 说明 |
|---|---|---|
output |
string | 模板渲染结果 |
使用示例
type: template-transform
variables:
- variable: results
value_selector: [knowledge_retrieval_1, result]
- variable: query
value_selector: [start, user_input]
template: |
用户问题: {{ query }}
相关文档:
{% for doc in results %}
---
来源: {{ doc.title }}
内容: {{ doc.content }}
{% endfor %}
12. 迭代节点 (Iteration Node)
类型标识: iteration
功能描述
对数组类型数据进行循环迭代处理,每次迭代可以执行复杂的子流程。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
iterator_selector |
list[str] |
迭代器变量选择器 |
output_selector |
list[str] |
输出变量选择器 |
is_parallel |
bool |
是否并行执行 |
parallel_nums |
int |
并行数量 (默认 10) |
error_handle_mode |
ErrorHandleMode |
错误处理模式 |
flatten_output |
bool |
是否展平输出数组 |
start_node_id |
str |
迭代子图的起始节点 |
错误处理模式
| 模式 | 说明 |
|---|---|
terminated |
遇到错误终止整个迭代 |
continue-on-error |
忽略错误继续执行 |
remove-abnormal-output |
移除异常输出,继续执行 |
特殊节点
- iteration-start: 迭代起始节点,提供当前迭代项
- 在迭代内部可通过
[iteration_node_id, item]访问当前项 - 通过
[iteration_node_id, index]访问当前索引
输出变量
| 变量 | 类型 | 说明 |
|---|---|---|
output |
array | 所有迭代的输出结果 |
使用示例
type: iteration
iterator_selector: [code_1, items]
output_selector: [llm_inside, text]
is_parallel: true
parallel_nums: 5
error_handle_mode: continue-on-error
flatten_output: true
# 内部包含 iteration-start 节点和处理节点
13. 循环节点 (Loop Node)
类型标识: loop
功能描述
基于条件的循环执行,支持 while 循环模式,可定义循环变量和终止条件。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
loop_count |
int |
最大循环次数 |
break_conditions |
list[Condition] |
终止条件列表 |
logical_operator |
str |
条件逻辑运算符 (and/or) |
loop_variables |
list[LoopVariableData] |
循环变量定义 |
outputs |
dict |
输出变量定义 |
LoopVariableData 结构
class LoopVariableData:
label: str # 变量标签
var_type: SegmentType # 变量类型
value_type: Literal["variable", "constant"] # 值类型
value: Any # 初始值或变量引用
特殊节点
- loop-start: 循环起始节点
- loop-end: 循环结束节点
使用示例
type: loop
loop_count: 10
break_conditions:
- variable_selector: [loop_1, result]
comparison_operator: "="
value: "done"
logical_operator: or
loop_variables:
- label: counter
var_type: number
value_type: constant
value: 0
14. 变量聚合节点 (Variable Aggregator Node)
类型标识: variable-aggregator
功能描述
从多个分支中选择第一个有值的变量进行输出,常用于分支合并。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
output_type |
str |
输出类型 |
variables |
list[list[str]] |
变量选择器列表 |
advanced_settings |
AdvancedSettings |
高级设置 (分组) |
高级设置 - 分组
class AdvancedSettings:
group_enabled: bool # 是否启用分组
groups: list[Group] # 分组列表
class Group:
output_type: SegmentType # 输出类型
variables: list[list[str]] # 变量列表
group_name: str # 分组名称
输出变量
| 变量 | 类型 | 说明 |
|---|---|---|
output |
any | 聚合后的变量值 |
使用示例
type: variable-aggregator
output_type: string
variables:
- [branch_1, result]
- [branch_2, result]
- [branch_3, result]
# 返回第一个非空的 result
15. 变量赋值节点 (Variable Assigner Node)
类型标识: assigner
功能描述
对会话变量进行赋值操作,支持多种操作类型。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
items |
list[VariableOperationItem] |
操作项列表 |
VariableOperationItem 结构
class VariableOperationItem:
variable_selector: Sequence[str] # 目标变量选择器
input_type: InputType # 输入类型 (VARIABLE, CONSTANT)
operation: Operation # 操作类型
value: Any # 值
支持的操作
| 操作 | 说明 | 适用类型 |
|---|---|---|
overwrite |
覆盖 | 所有类型 |
clear |
清空 | 所有类型 |
append |
追加 | array, string |
extend |
扩展 | array |
set |
设置 (对象属性) | object |
add |
加法 | number |
subtract |
减法 | number |
multiply |
乘法 | number |
divide |
除法 | number |
使用示例
type: assigner
items:
- variable_selector: [conversation, message_history]
input_type: VARIABLE
operation: append
value: [llm_1, text]
- variable_selector: [conversation, turn_count]
input_type: CONSTANT
operation: add
value: 1
16. 参数提取节点 (Parameter Extractor Node)
类型标识: parameter-extractor
功能描述
使用 LLM 从文本中提取结构化参数,支持 Function Calling 和 JSON 模式。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
query_variable_selector |
list[str] |
输入变量选择器 |
model |
ModelConfig |
使用的模型 |
parameters |
list[ParameterConfig] |
参数定义列表 |
instruction |
str |
提取指令 |
memory |
MemoryConfig |
对话记忆配置 |
reasoning_mode |
str |
推理模式 |
ParameterConfig 结构
class ParameterConfig:
name: str # 参数名称
type: SegmentType # 参数类型
description: str # 参数描述
required: bool # 是否必填
options: list[str] # 可选值 (用于 select 类型)
支持的参数类型
string- 字符串number- 数字boolean- 布尔值array[string]- 字符串数组array[number]- 数字数组array[object]- 对象数组array[boolean]- 布尔数组
输出变量
| 变量 | 类型 | 说明 |
|---|---|---|
__is_success |
boolean | 提取是否成功 |
__reason |
string | 失败原因 |
{param_name} |
any | 提取的参数值 |
使用示例
type: parameter-extractor
query_variable_selector: [start, user_input]
model:
provider: openai
name: gpt-4o
mode: chat
parameters:
- name: product_name
type: string
description: 产品名称
required: true
- name: quantity
type: number
description: 购买数量
required: true
- name: delivery_date
type: string
description: 期望送达日期
required: false
instruction: |
从用户的订单描述中提取产品信息。
如果用户没有指定数量,默认为 1。
17. 文档提取节点 (Document Extractor Node)
类型标识: document-extractor
功能描述
从上传的文件中提取文本内容,支持多种文档格式。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
variable_selector |
list[str] |
文件变量选择器 |
支持的文件格式
| 格式 | 扩展名 |
|---|---|
| 纯文本 | .txt, .md, .markdown |
| Word | .doc, .docx |
| Excel | .xls, .xlsx, .csv |
| PowerPoint | .ppt, .pptx |
| 电子书 | .epub |
| 邮件 | .eml, .msg |
| 字幕 | .vtt |
| 配置 | .json, .yaml, .yml, .properties |
输出变量
| 变量 | 类型 | 说明 |
|---|---|---|
text |
string/array[string] | 提取的文本内容 |
使用示例
type: document-extractor
variable_selector: [start, files]
# 如果输入是单个文件,输出 text 为字符串
# 如果输入是文件数组,输出 text 为字符串数组
18. 列表操作节点 (List Operator Node)
类型标识: list-operator
功能描述
对数组数据进行过滤、排序、限制数量和提取操作。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
variable |
list[str] |
输入数组变量选择器 |
filter_by |
FilterBy |
过滤配置 |
order_by |
OrderByConfig |
排序配置 |
limit |
Limit |
数量限制配置 |
extract_by |
ExtractConfig |
提取配置 |
FilterBy 结构
class FilterBy:
enabled: bool # 是否启用
conditions: list[FilterCondition] # 过滤条件
class FilterCondition:
key: str # 过滤字段
comparison_operator: FilterOperator # 比较运算符
value: str | list[str] | bool # 比较值
过滤运算符
字符串条件:
contains/not containsstart with/end withis/is notin/not inempty/not empty
数字条件:
=/≠</>/≤/≥
OrderByConfig 结构
class OrderByConfig:
enabled: bool # 是否启用
key: str # 排序字段
value: Order # 排序方向 (asc/desc)
输出变量
| 变量 | 类型 | 说明 |
|---|---|---|
result |
array | 处理后的数组 |
first_record |
any | 第一条记录 |
last_record |
any | 最后一条记录 |
使用示例
type: list-operator
variable: [knowledge_retrieval_1, result]
filter_by:
enabled: true
conditions:
- key: score
comparison_operator: ">"
value: "0.8"
order_by:
enabled: true
key: score
value: desc
limit:
enabled: true
size: 5
19. Agent 节点
类型标识: agent
功能描述
调用智能代理策略,支持多轮工具调用和复杂任务处理。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
agent_strategy_provider_name |
str |
代理策略提供者 |
agent_strategy_name |
str |
代理策略名称 |
agent_strategy_label |
str |
代理策略标签 |
memory |
MemoryConfig |
对话记忆配置 |
agent_parameters |
dict[str, AgentInput] |
代理参数 |
AgentInput 结构
class AgentInput:
value: Any # 参数值
type: Literal["mixed", "variable", "constant"] # 输入类型
输出变量
| 变量 | 类型 | 说明 |
|---|---|---|
text |
string | Agent 响应文本 |
files |
array[file] | 生成的文件 |
usage |
object | Token 使用统计 |
使用示例
type: agent
agent_strategy_provider_name: langgenius
agent_strategy_name: function_call
agent_parameters:
query:
type: variable
value: [start, user_input]
tools:
type: constant
value:
- provider: google
tool: google_search
- provider: calculator
tool: calculate
memory:
role_prefix:
user: "用户"
assistant: "助手"
window:
enabled: true
size: 10
20. 人工输入节点 (Human Input Node)
类型标识: human-input
功能描述
暂停工作流执行,等待人工审核或输入,支持分支选择。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
required_variables |
list[str] |
必需的输入变量列表 |
pause_reason |
str |
暂停原因说明 |
工作流程
- 工作流执行到该节点时暂停
- 用户可以查看当前状态并提供输入
- 用户选择分支或确认继续
- 工作流恢复执行
分支选择
通过以下键名传递分支选择:
edge_source_handleselected_branchbranchbranch_id
使用示例
type: human-input
required_variables:
- "human_input.approval"
- "human_input.comments"
pause_reason: 请审核 AI 生成的内容,确认是否正确。
21. 数据源节点 (Datasource Node)
类型标识: datasource
功能描述
从外部数据源获取数据,支持在线文档、云存储等。用于 RAG Pipeline。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
plugin_id |
str |
插件 ID |
provider_name |
str |
提供者名称 |
provider_type |
str |
提供者类型 |
datasource_name |
str |
数据源名称 |
datasource_configurations |
dict |
数据源配置 |
datasource_parameters |
dict[str, DatasourceInput] |
数据源参数 |
支持的数据源类型
- 本地文件
- 在线文档 (Notion, Google Docs 等)
- 云存储 (Google Drive, Dropbox 等)
- 网页抓取
使用示例
type: datasource
plugin_id: notion
provider_name: notion
provider_type: online_document
datasource_name: notion_page
datasource_configurations:
workspace_id: "xxx"
datasource_parameters:
page_id:
type: variable
value: [start, page_id]
22. 知识索引节点 (Knowledge Index Node)
类型标识: knowledge-index
功能描述
将数据写入知识库,支持多种索引方式。用于 RAG Pipeline。
配置参数
| 参数 | 类型 | 说明 |
|---|---|---|
index_chunk_variable_selector |
list[str] |
分块变量选择器 |
chunk_structure |
str |
分块结构类型 |
index_method |
IndexMethod |
索引方式配置 |
retrieval_setting |
RetrievalSetting |
检索设置 |
索引方式
class IndexMethod:
indexing_technique: Literal["high_quality", "economy"]
embedding_setting: EmbeddingSetting
economy_setting: EconomySetting
使用示例
type: knowledge-index
index_chunk_variable_selector: [code_1, chunks]
chunk_structure: general
index_method:
indexing_technique: high_quality
embedding_setting:
embedding_provider_name: openai
embedding_model_name: text-embedding-3-small
retrieval_setting:
search_method: semantic_search
top_k: 4
score_threshold: 0.5
错误处理
所有节点都支持统一的错误处理配置:
错误策略
| 策略 | 说明 |
|---|---|
fail-branch |
执行失败分支 |
default-value |
使用默认值 |
重试配置
class RetryConfig:
max_retries: int # 最大重试次数
retry_interval: float # 重试间隔 (秒)
retry_enabled: bool # 是否启用重试
配置示例
error_strategy: fail-branch
retry_config:
retry_enabled: true
max_retries: 3
retry_interval: 1.0
系统变量
在工作流中可以访问以下系统变量:
| 变量路径 | 说明 |
|---|---|
sys.query |
用户查询 |
sys.files |
上传的文件 |
sys.conversation_id |
会话 ID |
sys.user_id |
用户 ID |
sys.dialogue_count |
对话轮次 |
sys.app_id |
应用 ID |
sys.workflow_id |
工作流 ID |
sys.workflow_run_id |
工作流执行 ID |
最佳实践
1. 变量引用
- 使用
{{#node_id.variable#}}在模板中引用变量 - 使用
[node_id, variable]作为变量选择器
2. 错误处理
- 对关键节点配置重试策略
- 使用 If-Else 节点处理异常情况
- 为 HTTP 请求配置超时
3. 性能优化
- 使用迭代节点的并行模式处理大量数据
- 合理配置知识检索的 top_k 和分数阈值
- 避免在循环中进行不必要的 LLM 调用
4. 模块化设计
- 将复杂逻辑封装在代码节点中
- 使用工具节点调用外部服务
- 利用模板转换节点格式化输出
更多推荐



所有评论(0)