跳到主要内容

脚本执行节点

脚本执行节点用于在工作流中运行自定义脚本,支持使用 Python、JavaScript 等语言来处理、转换或生成流程变量,从而实现灵活的数据处理能力。

节点示意图

应用场景

脚本执行节点可广泛应用于以下场景:

  • 数据解析:解析复杂嵌套结构的 JSON,对结构化或非结构化数据进行清洗和抽取。
  • 计算统计:实现自定义逻辑的数值计算、统计汇总等。
  • 变量处理:合并多个变量,或将变量进行统一格式化处理。

节点配置详解

输入变量配置

在节点右侧配置面板中,可以设置该脚本节点的输入变量:

  • 左侧输入框:填写变量名;
  • 右侧下拉框:选择变量来源节点,变量必须来自当前节点之前的节点,不能引用后续或并行节点。
输入变量配置示意

选择与编写脚本

脚本节点支持多种脚本语言,包括:

  • JavaScript(JS)
  • Python
  • Groovy
  • Kotlin
  • Aviator
脚本语言选择

脚本格式要求:

  • JS/Groovy/Kotlin:需实现一个名为 main(params) 的主函数,返回一个对象;
  • Python/Aviator:可直接书写代码,通过设置变量 resp = {...} 来返回结果。

脚本示例

脚本会接收一个输入对象,该对象包含了所有输入变量,处理完成后返回一个对象,该对象包含了所有输出变量.

JavaScript 示例

function main(params) {
if (params.llmRes) {
let resLength = params.llmRes.length;
params.llmRes = params.llmRes + '\n字数:' + resLength;
}
return {
result: params.llmRes,
};
}

Groovy 示例

def main(params) {
if (params.llmRes) {
def resLength = params.llmRes.length()
params.llmRes += "\n字数:" + resLength
}
return [result: params.llmRes]
}

Kotlin 示例

fun main(params: MutableMap<String, Any?>): Map<String, Any?> {
if (params["llmRes"] is String) {
val llmRes = params["llmRes"] as String
val resLength = llmRes.length
params["llmRes"] = "$llmRes\n字数1:$resLength"
}
return mapOf("result" to params["llmRes"])
}

Python 示例

if isinstance(params.get("llmRes"), basestring):
llm_res = params["llmRes"]
res_length = len(llm_res)
params["llmRes"] = u"{}\n字数1:{}".format(llm_res, res_length)

resp = {"result": params["llmRes"]}

Aviator 示例

let llmRes = params.llmRes;
let resLength = length(llmRes);
let res = llmRes + "\n字数1:" + resLength;
let resp = seq.map("result", res);

输出变量配置

脚本节点返回的结果为一个对象,其中每个字段都可以作为输出变量使用。

例如:若返回结果为:{"result": "处理后的文本"}

则在输出变量中配置变量名 result,即可获取对应值用于下游节点使用。