加载中…
No Results
  • 开始使用
    • 欢迎使用GoInsight.AI
    • 快速入门
  • 知识百科
    • 关键概念
    • 知识库
    • LLM 选择指南
    • 数据安全
  • 轻聊机器人
    • 构建轻聊机器人
  • Insight Chat
    • 认识&了解如何使用Insight Chat
  • InsightFlow
    • InsightFlow介绍
    • InsightFlow类型
    • 服务与工具
      • 工具
      • 服务
      • 代理策略
    • 节点
      • 开始节点
      • 回复输出节点
      • 大模型节点
      • 知识库检索节点
      • 文档读取节点
      • 文档写入节点
      • HTTP 请求节点
      • 知识聚焦大模型节点
      • 代理节点
      • 进度更新节点
      • 工具调用节点
      • 条件跳转节点
      • 自然语义分类器节点
      • 分支聚合器节点
      • 多分支选择节点
      • 循环节点
      • 自动继续节点
      • 文本模板节点
      • 代码执行
      • JSON 变量提取器节点
      • 自然语义变量提取器节点
      • 变量赋值节点
      • 结束节点
      • 节点错误处理策略
    • 发布
      • 发布对话式工作流
      • 发布服务式工作流
      • 创建您的第一个工作流
    • 团队管理
      • 访问控制
      • 使用详情
首页 > 使用文档 > InsightFlow > 节点

代码执行

定义

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

code node

快速入门/如何使用

节点配置:在GoInsight.AI中,右键单击并选择“添加节点”以将“代码”节点添加到工作流中。

add code node

1. 配置代码节点的输入变量

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

code input variables
确保输入变量的数据类型与代码中使用的类型匹配,以避免执行错误。例如,在Python代码中执行数学运算时,确保输入数据类型为数值(Number),否则将导致类型错误。

2. 配置代码节点的Python3代码

您可以在代码编辑器中编写Python代码来处理和计算输入变量。代码需要定义一个主函数,该主函数以输入变量为参数,并返回一个字典作为输出结果。

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

3. 配置代码节点的变量输出模式

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

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

4. 配置代码节点的输出变量

input variables

输出变量需要指定“变量名称”并选择“数据类型”。输出的“变量名称”必须与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,
          }
      
    • 在此示例中,“变量输出模式”可以选择“提取字段”来将sum、difference、product和quotient设置为输出变量,类型分别为数值。若选择“整个输出”,则会将整个字典{"sum": 15, "difference": 5, "product": 50, "quotient": 2.0}作为输出变量,类型为对象。
  • 数据筛选
    • 此示例代码接收一个数组类型的输入变量数据,并从中筛选出大于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],
          }
      
    • 在此示例中,“变量输出模式”可以选择“提取字段”来将filtered_data设置为输出变量,类型为布尔数组 (Array[Number])。若选择“整个输出”,则会将整个字典{"filtered_data": [2, 4]}作为输出变量,类型为对象。
  • 数据转换
    • 此示例代码接收一个字符串数组类型的输入变量数据,并将其中的每个字符串转换为大写形式,将结果存储在输出变量“converted_data”中。例如,如果数据是["hello", "world"],则converted_data的值将是["HELLO", "WORLD"]。
    • def main(data):
          return {
              "converted_data": [item.upper() for item in data],
          }
      
    • 在此示例中,“变量输出模式”可以选择“提取字段”来将converted_data设置为输出变量,类型为字符串数组 (Array[String])。若选择“整个输出”,则会将整个字典{"converted_data": ["HELLO", "WORLD"]}作为输出变量,类型为对象。
  • 异常处理
    • 此示例代码对两个输入变量 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.",
              }
      
    • 在此示例中,“变量输出模式”可以选择“提取字段”来将result和error指定为输出变量,类型分别为数值和字符串。若选择“整个输出”,则会将整个字典{"result": 2.0}和{"error": "Division by zero is not allowed."}作为输出变量,类型为对象。

实际应用场景:

code workflow

以下是提取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大模型节点无法处理复杂问题,也不能同时处理多个问题,而代码执行可以在严格的编码要求下完成各种任务,并能够同时处理多个复杂操作。
更新于: Aug 26, 2025
上一篇 文本模板节点
下一篇 JSON 变量提取器节点
本文内容
  • 定义
  • 快速开始/使用方法
    • 输入变量
    • Python3
    • 变量输出模式
    • 输入变量
  • 典型用例
  • 实际案例场景
  • 注意事项
  • 常见问题解答
加载中…
No Results