更新时间:2025-09-15 GMT+08:00
分享

代码

代码节点支持通过编写Python或Node.js代码来处理文本等复杂逻辑,生成业务期望的返回值。

前提条件

已完成工作流搭建,如果未搭建工作流,请参考搭建工作流

配置代码节点

  1. 登录Versatile智能体平台,在左侧导航栏“个人空间”区域,选择进入所需空间。

    如果已选择团队空间,界面显示为实际的团队空间名称,而非“个人空间”。

    图1 选择团队空间

  2. 在左侧导航栏选择“开发中心 > 应用管理 > 工作流应用”,单击您创建的工作流。
  3. 单击“添加节点”并选择“代码”节点。
  4. 通过单击该节点打开节点配置页面。根据“执行方式”不同,支持两种配置方式。

    • 安全沙箱:用于隔离程序运行的环境,以防止潜在的恶意代码对系 统造成损害。安全沙箱配置方式请参照安全沙箱执行方式配置说明
    • FunctionGraph:使用FunctionGraph函数,只需编写业务函数代码并设置运行的条件,无需配置和管理服务器等基础设施,函数以弹性、免运维、高可靠的方式运行。FunctionGraph配置方式请参照FunctionGraph执行方式配置说明
      • 单击图标,可修改代码节点名称,修改完成后单击名称旁边的进行保存。
      • 单击图标,可重命名代码节点名称,复制一个代码节点或删除代码节点。
      • 单击图标,可对代码点进行测试。

  5. 节点配置完成后,单击“确定”。
  6. 连接代码节点和其他节点。

安全沙箱执行方式配置说明

图2 安全沙箱执行方式配置示例
表1 安全沙箱执行方式配置说明

参数

说明

执行方式

安全沙箱

输入参数

配置代码运行需要的输入参数。

当单击图标时,可新增输入参数。

  • 参数名称:仅支持输入字母、数字、下划线,且不能以数字开头。
  • 类型、值:支持“引用”和“输入”两种类型。
    • 引用:支持用户选择工作流中已包含的前置节点输出参数和全局配置的记忆变量。
    • 输入:支持用户自定义取值。

输出参数

配置代码运行后需要输出的参数,需要与return返回的对象保持一致。

当单击图标时,可新增输出参数。

  • 参数名称:只允许输入字母、数字、下划线,且不能以数字开头。
  • 参数类型:输出参数的类型,可选String、Integer、Number、Boolean、Object、Array平台支持的类型。
  • 描述:对于该输出参数的描述。
  • 必填:选择当前输出参数是否必填。

代码

编写代码时不要更改第一行函数定义。

编写Python代码片段,仅支持python系统库,不支持引入依赖包;代码配置示例请参考示例

FunctionGraph执行方式配置说明

如果使用FunctionGraph执行方式,请确保当前华为账号或IAM用户具备FunctionGraph的权限,如何获取FunctionGraph的权限请参见授权使用FunctionGraph

表2 FunctionGraph执行方式配置参数说明

参数

说明

函数名称

选择下拉列表中的函数,即之前已定义保存的函数,也可以进行以下操作。

  • 单击:可以直接在弹出的创建函数页面快速创建函数,参数说明如表3所示,参数配置完成后可单击“创建”保存函数。
  • 单击:选择函数后,单击该图标可以在弹出的“编辑函数”页面中快速编辑函数,参数编辑完成后可单击“更新”保存函数。

输入参数

按照函数定义中指定的参数列表配置入参,即传递给函数的实际值。

输入参数或选择前序节点的输出作为输入。

输出参数

配置代码运行后需要输出的参数。

表3 创建函数参数说明

参数

说明

名称

函数名,用于调用函数。

描述

函数功能描述。

入参

输入参数。

出参

输出参数。每个变量都可在后置节点中引用。

执行语言

当前支持Python3.9、Node.js14.18,即运行函数的环境,请查看Python函数开发指南Node.js函数开发指南

编辑源码

在源码编辑区,编写函数内部的代码运行逻辑,如图3所示,图中各模块说明如下:

①:导入模块,是Python标准库中的模块,无需修改。

②:用户自定义导入模块。

③:公共函数使用方法示例,提供了如何使用公共函数和mssiAuthData参数的示例,无需修改。

④:函数定义和注释,extractRequestParam函数和handler函数是系统预置的模板代码,无需修改。

⑤:系统方法,无需修改。

⑥:用户自定义函数中的逻辑。输出为JOSN格式,请参考示例的输出格式。

依赖包

单击“添加”,可以选择自定义依赖包。自定义依赖包上传方法请参见创建自定义依赖包

一个函数最多添加20个依赖包。

图3 源码编辑区

示例

开发语言

代码节点以Python语言为例。

Python

基于Python 3.11.3的标准库,大多数模块都能正常运行,如下面白名单所示模块,不在白名单中的模块可能不能正常运行。

  • 三方库白名单
    sys,time,numpy,warnings,enum,os,functools,collections,types,datetime,numbers,abc,io,executor_sdk,contextlib,dataclasses,math,operator,pickle,contextvars,_contextvars,ast,re,ctypes,copyreg,weakref,textwrap,platform,typing,__future__,sympy,mpmath,bisect,cmath,colorsys,keyword,linecache,timeit,gc,random,decimal,_decimal,fractions,flint,gmpy2,unicodedata,tokenize,gmpy,copy,inspect,string,struct,importlib,array,shutil,pathlib,tempfile,subprocess,json,xml.etree.ElementTree,uuid,_uuid,urandom
  • 内置函数白名单
    exec,print,id,issubclass,compile,__build_class__,hasattr,eval,chr,next,ord,callable,repr,sorted,iter,min,max,weakref,all,any,hash,locals,sum,vars,open,abs,round,divmod,pow,delattr

配置示例:

  • 文本拼接示例代码。
    def main(args: dict) -> dict:
    # 注意在输入参数中定义名为input1的变量
    input1 = args.get('input1')
    # 注意在输入参数中定义名为input2的变量
    input2 = args.get('input2')
    res = {
    # 注意在输出参数中定义名为res的变量
    "res": input1 + input2,
    }
    return res
  • 数学计算示例代码。
    def main(args: dict) -> dict:
    # 注意在输入参数中定义名为input1的变量
    input1 = args.get('input1')
    try:
    input1 = int(input1)
    return {
    # 注意输出参数中定义res变量
    'res': input1 * input1
    }
    except Exception as e:
    return {
    # 注意输出参数中定义res变量
    'res': "输入类型错误或者数字大小超出限制"
    }

创建自定义依赖包

  1. 登录Versatile智能体平台,在左侧导航栏“个人空间”区域,选择进入所需空间。

    如果已选择团队空间,界面显示为实际的团队空间名称,而非“个人空间”。

    图4 选择团队空间

  2. 在左侧导航栏选择“开发中心 > 应用管理 > 工作流应用”,单击您创建的工作流。
  3. 单击“代码”节点,进入节点配置界面,“执行方式”选择为“FunctionGraph”。
  4. 选择已有函数,进入编辑函数界面,如图5所示。

    图5 创建函数

  5. 单击“依赖包”后的“添加”,如图6所示。

    图6 选择依赖包

  6. 单击“创建依赖包”,设置依赖包的基本配置信息,具体的参数说明如表4所示。

    表4 新建依赖包参数说明

    参数

    说明

    依赖包名称

    自定义依赖包的名称,支持英文、数字、下划线,仅支持以英文开头,长度为2-32个字符。

    执行语言

    运行函数的环境,当前仅支持Python3.9、Node.js14.18。

    描述(可选)

    依赖包的描述信息,最多支持200个字符。

    上传(支持多个文件)

    上传.zip格式文件,文件大小限制为10MB以内。

    上传文件时,如果文件中包含敏感信息(如账户密码等),请您自行加密,防止信息泄露。

  7. 单击“确定”。

    创建完成后,可以在代码节点中添加并使用该依赖包。

相关文档