
# 创建脚本组件
#### 脚本组件使用场景
脚本组件适用于简单的代码处理任务，特别是可以通过单个代码文件解决的问题。例如，将读取本地数据功能设置为脚本组件。
脚本组件仅支持Python脚本，脚本组件可以将代码进行整合，使得代码更加模块化，同时也提高了代码的可读性和可维护性。
#### 脚本组件使用规范
- 脚本语言：脚本组件仅支持Python脚本。
- 类定义：脚本组件必须定义一个名为Template的类。这个类名是固定的，不可修改。
- 方法定义：Template类中必须实现两个方法：__init__和process。这两个方法的名称是固定的，不可修改。
- 方法参数：__init__和process方法不允许添加额外参数。__init__方法没有参数，process方法有一个参数params_dict。
- 类初始化：__init__方法在脚本组件的生命周期中只会被执行一次。这个方法通常用于进行一些初始化操作。
- 数据处理：process方法是脚本组件的核心，它负责处理数据。这个方法可以从params_dict参数中获取输入数据。params_dict是一个字典，它包含了所有的输入参数，如示例注释中，a和b对应组件的两个输入参数。
- 返回值：process方法的返回值必须是一个字典。这个字典包含了处理结果，对应组件的所有输出参数，如示例注释中，a对应该组件的一个输出参数。
- 编码声明：脚本组件的文件必须在文件头部声明编码方式，通常为# -\*- coding: utf-8 -\*-。
- 注释：脚本组件的代码应该包含足够的注释，以帮助其他人理解代码的功能和工作原理。
脚本组件示例：
```
#!/usr/bin/env python 
# -*- coding: utf-8 -*-
 class Template:
    def __init__(self):
        # todo
        pass
     def process(self, params_dict):
       # 获取入参 
       # a = params_dict.get("a") 
       # b = params_dict.get("b") 
       # todo 
       # return {"a": a} 
       return None
```
#### 创建脚本组件
1. 登录ModelArts Studio平台，进入所需空间。
2. 在左侧导航栏中选择"垂域应用开发 \> 应用组件 \> 组件管理"，在"自定义"页签，单击右上角"创建组件"，选择"脚本组件"算法类型，单击"确定"。
   图1脚本组件   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571047824.png) 
3. 进入"创建脚本组件"页面，参考[表1]设置基础信息。
    表1创建脚本组件基础信息参数说明 
   | 参数名称 | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   |:---|:---|
   | 英文名称 | 组件的英文名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 中文名称 | 组件的中文名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 业务类型 | 用于区分脚本组件的业务场景。包括以下类型： 数据读写、数据预处理、数据后处理、特征加工、优化场景定义、机理模型、过程控制、图像组件、视频组件、其他。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | 标签   | - 用于给组件绑定标签，支持绑定已有或者自定义的新标签，每个组件最多可绑定10个标签。  - 标签输入框支持创建新的标签和删除已有标签，单个空间最多可创建200个标签。 - 创建标签：输入框中输入标签名称并回车即可创建该标签。 图2创建标签 ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571047820.png)   - 删除标签：下拉框单击指定标签的"X"号，单击"确认"，即可删除标签。 图3删除标签 ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002601607021.png) ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571047826.png) 注意： 如果已有组件绑定该标签，删除操作会同步删除该组件与标签的绑定关系，且删除后不可找回，请谨慎操作。      |
      
   图4创建脚本组件   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571207464.png) 
4. 基础信息设置完成后，参考[表2]设置属性参数。
   属性参数具备多种功能。例如，在编排静态应用时，通常需要组合多个组件来实现某一功能，不同的组件需要定义清楚输入、输出参数的引用关系，实现数据在不同的组件间流转。
    表2创建属性参数说明 
   | 参数名称  | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   |:---|:---|
   | 英文名称  | 参数的英文名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | 中文名称  | 参数的中文名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | 参数类型  | - 入参：在编排应用时，该节点的入参，支持三种方式，包括：界面填写、其他组件节点的输出参数作为当前节点的入参、画布参数传入。  - 出参：表示执行组件后生成的结果，出参可以被其他组件节点使用。  - 流式出参：nlp等场景下支持流式出参，支持出参以流式方式展示，使用时组件应该仅包含一个流式出参，并且不包含其他出参。  - 环境变量：在组件运行时可用的全局变量，可以用环境变量存储一些共享的配置信息。例如应用需要从数据库中获取待处理的数据，可以用环境变量存储数据库的位置信息、账密信息、API密钥等。   |
   | 数据类型  | 组件参数的数值类型。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | 业务类型  | 参数的业务类型。非必填参数，默认为空，支持模型和模型服务两种类型。 模型：用于在静态应用界通过"选择模型"，自动填充所选模型的obs地址； 模型服务：用于在静态应用界通过"选择服务"，自动填充所选模型服务的访问地址，实现组件服务调用所选模型服务。                                                                                                                                                                                                                                                                                                                                                                                           |
   | 父参数   | 父参数通常用于配置复杂的结构体，可以使用一个已经添加的数据参数作为这个结构的父参数，即父参数必须是一个已经定义的组件参数。 配置复杂结构体使用，父参数只能是已经添加的数据类型为对象的组件参数。                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   | 默认值   | 参数的默认值。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 有效值   | 参数可以接受的合法取值范围。举例：整数：\[0,10\]，浮点数：\[0.1,10.1\]，枚举：A\|B\|C。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | 是否必填  | 该参数是否为必填参数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | 是否敏感  | 设置参数是否为敏感参数，敏感参数将不允许在画布中填入，只能通过画布参数传入。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | 是否为数组 | 该参数是否为数组类型。如果一个参数是数组类型，意味着它可以包含多个值。例如，一个名为"标签"的参数可以是一个字符串数组，其中包含多个标签名称。如果参数不是数组类型，那么它只能接受单个值。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
      
   
5. 填完参数无误后，填写脚本的内容，完成后单击"立即创建"，组件创建成功。
   图5修改脚本   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002601726971.png) 
6. 组件创建完成后，在脚本列表页面，单击操作列"编辑"可以对中文名称、参数、脚本等进行修改更新。其中，组件参数有批量导入的功能，如果一个组件参数比较多，并且在其他组件中已经创建，可以复制参数代码，在需要导入的组件参数中通过"导入参数"功能填入代码，进行参数的批量导入。
   图6查看组件参数   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002601607015.png)
   图7导入参数   
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002601726975.png) 
7. 组件开发完成后，单击"保存并生效"后，该组件可用于[创建静态应用](https://support.huaweicloud.com/usermanual-pangulm/pangulm_04_0143.html)中使用。
8. 在组件列表页面，可以根据名称、标签对组件进行筛选。
   图8组件列表
   ![](https://support.huaweicloud.com/usermanual-pangulm/zh-cn_image_0000002571047822.png)
   
 
