跳转到主要内容
⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考英文原版
代码节点执行自定义 Python 或 JavaScript 来处理工作流中复杂的数据转换、计算和逻辑。当预设节点无法满足你的特定处理需求时可以使用它。
Code node interface

代码节点配置界面

配置

定义输入变量以访问工作流中其他节点的数据,然后在代码中引用这些变量。你的函数必须返回一个包含你已声明的输出变量的字典。
def main(input_variable: str) -> dict:
    # Process the input
    result = input_variable.upper()
    return {
        'output_variable': result
    }

语言支持

根据你的需求和熟悉程度在 PythonJavaScript 之间进行选择。两种语言都在安全沙箱中运行,并可访问用于数据处理的常用库。
  • Python
  • JavaScript
Python 包含标准库,如 jsonmathdatetimere。非常适合数据分析、数学运算和文本处理。
def main(data: list) -> dict:
    import json
    import math
    
    average = sum(data) / len(data)
    return {'result': math.ceil(average)}

错误处理和重试

为失败的代码执行配置自动重试行为,并定义代码遇到错误时的回退策略。
Code Error handling

错误处理配置选项

重试设置允许最多 10 次自动重试,并可配置间隔(最大 5000ms)。启用此功能来处理临时处理问题。 错误处理让你在代码执行失败时定义回退路径,使你的工作流即使在代码遇到问题时也能继续运行。
Retry settings

重试配置界面

输出验证和限制

代码输出会自动验证并有严格限制:
  • 字符串:最大长度 80,000 个字符,空字节会被移除
  • 数字:范围从 -999999999 到 999999999,浮点数限制为 10 位小数
  • 对象/数组:最大深度 5 级,以防止复杂的嵌套结构
这些限制确保工作流的性能并防止内存问题。

安全考虑

代码在严格的沙箱中执行,阻止文件系统访问、网络请求和系统命令。这在提供编程灵活性的同时保持安全性。 出于安全原因,某些操作会被自动阻止。避免尝试访问系统文件或执行可能危险的操作:
Cloudflare WAF blocking

Cloudflare WAF 安全过滤

如果你的代码无法保存,请检查浏览器的网络选项卡 - 安全过滤器可能正在阻止潜在危险的操作。

依赖支持

代码节点支持 Python 和 JavaScript 的外部依赖:
# Python: Import numpy, pandas, requests, etc.
import numpy as np
import pandas as pd

def main(data: list) -> dict:
    df = pd.DataFrame(data)
    return {'mean': float(np.mean(df['values']))}
// JavaScript: Import lodash, moment, etc.
const _ = require('lodash');

function main(data) {
    return { unique: _.uniq(data) };
}
依赖已预装在沙箱环境中。请检查你的 Dify 安装中的可用包列表。

自托管设启动沙箱服务以进行安全的代码执行:

docker-compose -f docker-compose.middleware.yaml up -d
沙箱服务需要 Docker,并将代码执行与你的主系统隔离以确保安全。

常见用例

数据解析 - 从 API 或其他节点返回的复杂 JSON 结构中提取特定值。 数学运算 - 执行预设节点无法处理的计算、统计分析或数据聚合。 数据转换 - 转换数据格式、组合多个数据源或重构信息以供下游处理。 条件逻辑 - 实现超越简单 if-else 条件的复杂决策逻辑。