定义
代码节点允许用户在工作流中运行Python代码,以实现定制化的数据处理和复杂逻辑的实施。

快速入门/如何使用
节点配置:在GoInsight.AI中,右键单击并选择“添加节点”以将“代码”节点添加到工作流中。

1. 配置代码节点的输入变量
您可以通过点击右侧的“+”按钮添加新的输入变量。为每个输入变量指定一个名称,并从工作流中选择相应的变量值。

确保输入变量的数据类型与代码中使用的类型匹配,以避免执行错误。例如,在Python代码中执行数学运算时,确保输入数据类型为数值(Number),否则将导致类型错误。
2. 配置代码节点的Python3代码
您可以在代码编辑器中编写Python代码来处理和计算输入变量。代码需要定义一个主函数,该主函数以输入变量为参数,并返回一个字典作为输出结果。

在Python中,字典是一种用于存储键值对的数据类型。它是无序、可变的数据结构,键是唯一的,允许通过键快速访问值。
- 插入变量功能如果在编写代码时需要引用上一个节点的变量,可以通过输入{或/快速打开插入变量功能。
- AI代码调试器如果您缺乏Python背景并且难以编写代码,可以使用“AI编码”功能,该功能利用AI能力快速生成高质量的Python代码。为此,“需求描述”中的描述需要足够清晰;步骤越详细越好。然后,您可以根据AI编码返回的变更建议逐步完善需求描述,并多次修改您的代码,直到成功运行。

3. 配置代码节点的变量输出模式
“变量输出模式”提供了两个选项:“提取字段”和“整个输出”。“提取字段”选项允许用户直接从代码结果中提取特定字段作为输出变量,可以有一个或多个输出。“整个输出”选项允许用户将代码结果中的整个字典作为单个变量输出,只产生一个输出变量。

使用“提取字段”模式时,确保返回语句中的每个键都对应一个配置好的输出变量。如果代码返回的任何键未在输出变量中配置,将出现错误消息。
4. 配置代码节点的输出变量

输出变量需要指定“变量名称”并选择“数据类型”。输出的“变量名称”必须与Python代码返回语句中的键完全匹配,以避免因不匹配而导致的错误。代码节点中输出变量的数据类型如下:
数据类型 | 描述 |
---|---|
字符串 (String) | 用于存储文本信息,例如用户名、地址等。 |
数值 (Number) | 用于存储整数或浮点数,用于记录年龄或价格等数值数据。 |
布尔 (Bool) | 布尔类型,只能为真或假,常用于表示逻辑判断结果。 |
布尔数组 (Array[Bool]) | 存储多个布尔值的集合,例如任务完成状态。 |
数值数组 (Array[Number]) | 存储多个数值的集合,例如产品价格或数量。 |
对象数组 (Array[Object]) | 每个元素为对象的数组,用于存储复杂数据结构,例如用户信息。 |
字符串数组 (Array[String]) | 可以包含多个字符串的集合,例如产品名称或城市名称。 |
对象 (Object) | 以键值对形式存储数据,例如详细的用户信息或订单详情。 |
典型用例:
- 字符串拼接
- 此示例代码拼接两个输入变量arg1和arg2,并将结果存储在输出变量“result”中。例如,如果arg1是“Hello”,arg2是“World”,那么result的值将是“HelloWorld”。
def main(arg1, arg2): return { "result": arg1 + arg2, }
- 在此示例中,“变量输出模式”可以选择“提取字段”来将result设置为输出变量,数据类型选择为字符串。若选择“整个输出”,则会将整个字典{"result": "HelloWorld"}作为输出变量,数据类型为对象。
算术运算
- 此示例代码对两个输入变量arg1和arg2执行算术运算(包括加法、减法、乘法和除法),并将结果分别存储在输出变量“sum”、“difference”、“product”和“quotient”中。例如,如果arg1是10,arg2是5,那么sum将为15,difference将为5,product将为50,quotient将为2.0。
def main(arg1, arg2): return { "sum": arg1 + arg2, "difference": arg1 - arg2, "product": arg1 * arg2, "quotient": arg1 / arg2, }
数据筛选
- 此示例代码接收一个数组类型的输入变量数据,并从中筛选出大于0的元素,将结果存储在输出变量“filtered_data”中。例如,如果数据是[-1, 2, -3, 4, 5],则filtered_data的值将是[2, 4]。
def main(data): return { "filtered_data": [item for item in data if item > 0], }
数据转换
- 此示例代码接收一个字符串数组类型的输入变量数据,并将其中的每个字符串转换为大写形式,将结果存储在输出变量“converted_data”中。例如,如果数据是["hello", "world"],则converted_data的值将是["HELLO", "WORLD"]。
def main(data): return { "converted_data": [item.upper() for item in data], }
异常处理
- 此示例代码对两个输入变量 arg1 和 arg2 执行除法运算,并将结果存储在输出变量“result”中。如果arg2为0,则捕获ZeroDivisionError异常并返回存储在输出变量“error”中的错误消息。例如,如果arg1是10,arg2是0,则error的值将是“Division by zero is not allowed.”
def main(arg1, arg2): try: result = arg1 / arg2 return { "result": result, } except ZeroDivisionError: return { "error": "Division by zero is not allowed.", }
实际应用场景:

以下是提取Instagram视频评论的步骤:
- 开始节点创建输入变量 'Instagram ID'
- 代码节点使用代码节点对输入的 Instagram ID 进行预处理,检查并去除其中的空格和特殊符号。如果用户输入的是 URL,代码应从中提取 ID 以进行后续操作。
- HTTP请求节点使用HTTP节点通过 API 搜索对应的 Instagram 视频评论。
这样可以对用户输入的 Instagram ID 进行代码检查,确保ID的格式始终正确。
注意事项:
- Python 3解释器的限制沙盒环境:仅支持Python 3,只能使用Python标准库(如datetime、json、re等)和requests 库。
- 不支持其他第三方库(如pandas、numpy等)。
- 无法读取或写入本地文件
- 无法将文件保存到服务器
- 无法访问数据库
常见问题解答
Q1: 如何解决“主键”错误?
在输入变量部分,如果Python代码中的参数名称与工作流中定义的输入参数名称不匹配,只需将其更改为相同的名称。
Q2: 如何解决“缺失错误”?
如果代码中缺少错误参数,请添加错误输出参数,类型设置为字符串。
Q3: 这与使用LLM大模型节点有什么不同?
LLM大模型节点无法处理复杂问题,也不能同时处理多个问题,而代码执行可以在严格的编码要求下完成各种任务,并能够同时处理多个复杂操作。