更新时间:2026-02-06 GMT+08:00
分享

基于API创建插件

在AgentArts智能体平台中,当官方插件市场无法满足特定业务需求时,开发者需要自主创建插件。根据实现机制与运行形态的不同,自定义插件主要分为“API类型插件”和“函数类型插件”两种形态。函数型插件介绍及创建请参考基于函数创建插件

前提条件

API形态插件

API类型插件是将现有的RESTful API(HTTP/HTTPS 接口)封装为Agent可调用的工具。他不承载业务逻辑,而是将大模型的自然语言指令“翻译”为标准的API请求,发送给外部系统。

典型适用场景:

  • 数据检索:如天气查询、网络搜索、新闻查询。
  • 状态变更:如发送信息、触发创建任务。
  • 复杂业务逻辑处理:售后退换货处理(API后台校验商品是否满足退货条件、换货库存是否充足、生成退订链接、发送通知消息……)。

不适用场景:纯逻辑计算(简单数值计算)、简单的字符串处理(延迟高且浪费网络资源)。

插件调用链路:

  1. 用户输入:帮我查一下订单12345的状态。
  2. Agent分析:命中插件get_order_status。
  3. 参数生成:Agent中模型生成结构化参数 { "order_id": "12345" }。
  4. 请求构建:Agent组装API插件请求。
  5. 网络交互:Agent向API服务器发起GET /api/orders/12345请求。
  6. 响应解析:服务器返回 JSON 数据,Agent将其清洗后注入模型上下文。
  7. 最终回复:模型根据数据生成自然语言:“订单12345当前状态为已发货...”。

约束限制

  • 单个插件最多支持添加30个工具。

步骤1:创建插件

创建插件过程中,将结合“使用文字识别API创建插件”作为示例进行讲解,文字识别API、插件与工具说明请参考插件介绍

示例讲解使用“文字识别服务 > 通用文字识别API”,请提前在文字识别服务控制台开通该API。

  1. 登录AgentArts智能体平台,在左侧导航栏“个人空间”区域,选择目标空间。
  2. 在左侧导航栏中选择“开发中心 > 组件库”,在“插件”页签,单击页面右上角“创建插件”。

    图1 创建插件

  3. 在“创建插件”页面中的“插件类型”中选择“API类型”,然后根据以下步骤配置插件信息。

    表1 基本信息

    参数

    说明

    示例

    插件类型

    根据实现机制与运行形态的不同,插件分为“API类型”和“函数类型”两种形态。

    API类型

    插件图标

    单击默认图标按钮,可上传本地图片作为插件的自定义图标。

    支持jpg、jpeg、png格式,不超过200KB。

    系统默认图标

    展示名称

    用于标识当前插件,在“组件库 > 插件”页面会展示该名称。

    命名规则:按照插件的实际功能命名,有助于Agent进行插件的精准识别和调度。

    命名要求:可以包含中文、英文、数字、特殊字符等;

    长度限制:1~64个字符。

    文字识别

    名称

    插件的英文名称。

    命名规则:按照插件的实际功能命名,有助于Agent进行插件的精准识别和调度。

    命名要求:字母、数字和下划线(_)的组合,不允许使用其他特殊字符或空格;

    长度限制:1~64个字符。

    TextRecognitionPlugin

    描述

    描述当前插件的类型、功能和适用场景。

    需要按照插件的实际功能填写描述,有助于Agent进行插件的精准识别和调度。

    提供通用文字识别能力,可以对图片中的文字精准提取与解析,输出结构化文本结果,适配各类场景文字识别需求。

  4. 单击“下一步”,在“配置信息”步骤中配置插件信息,请参照表2完成配置。

    表2 配置信息

    参数

    说明

    示例

    协议

    API服务接口通信协议。

    • https
    • http

    https

    服务域名

    提供API服务的服务域名。

    单击右侧的按钮,在服务域名中添加变量。添加变量后,可以在变量参数部分设置参数的描述。

    以华为云通用文字识别API为例https://{endpoint}/v2/{project_id}/ocr/general-text,该API中{endpoint}即表示服务域名。

    文字识别服务在“华北-北京四”区域的“endpoint”为“ocr.cn-north-4.myhuaweicloud.com”

    ocr.cn-north-4.myhuaweicloud.com

    基准URL

    基准URL(Base URL)是指域名的根路径(可理解为API的公共路径),默认为/,请根据实际API接口进行适配。

    例如,华为云文字识别服务,中不同API接口都有相同的基准URL:/v2/{project_id}/ocr

    /v2/{project_id}/ocr

    注意需要单击右侧的按钮添加{project_id}变量。该变量表示项目ID,用于标识用户在华为云特定区域下的资源归属。

    图2 配置示例

    权限校验

    选择调用API时是否需要鉴权。

    • 无需鉴权:API可以公开访问,不需要任何形式的身份验证或授权。
    • API Key:在调用API时提供一个唯一的API Key进行鉴权。需配置以下信息

      需填写密钥位置、密钥参数名称和取值。Agent在发起请求时,会自动把这个API Key塞到请求的 Header(请求头) 或 Query(URL参数) 中

      • 密钥位置:密钥是从Header中读取还是从Query中读取。
      • 参数名称:API Key的鉴权参数名称。
      • 参数值:API Key的具体值。
      • 开通配置:设置在使用插件时,是否需要手动填写API Key。
        • 无需手动开通:填写的API Key值将作为预置信息。
        • 手动创建:填写的API Key值将作为插件后续调试使用,在Agent正式使用插件时,需要填写新的API Key值。
    • 华为云认证:华为云IAM认证,通过IAM账号获取用户Token进行认证。
      • IAM认证url:获取IAM用户Token信息的接口。例如,https://{iam_host}/v3/auth/tokens。
      • 账号名:IAM用户所属账号信息,即账号名。
      • 项目:该服务所属区域信息。例如,cn-north-4。
      • 验证方式
        • IAM用户名/密码

          IAM用户名:IAM用户名称。

          IAM用户密码:IAM用户的登录密码。

        • Access Key ID/Secret Access Key

          Access Key ID:访问密钥ID。

          Secret Access Key:与访问密钥ID结合使用的密钥。

    华为云文字识别服务采用“华为云认证”。

    IAM认证url:https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens

    项目:cn-north-4

    验证方式:IAM用户名/密码

    账号名、IAM用户名、IAM用户密码:账号名、IAM用户名请登录“我的凭证”页面查询,密码按实际填入。

    图3 查询账号名、IAM用户名
    图4 配置示例

  5. 配置完单击“确定”。平台会自动跳转至工具信息页面,请参考步骤2:创建工具为插件添加工具。

步骤2:创建工具

如需了解插件与工具的关系,请参考插件介绍

  1. 在“工具信息”页面,单击“创建工具”,请参照表3进行配置。

    表3 工具基础信息配置

    参数

    说明

    示例

    展示名称

    用于标识当前工具。

    命名规则:按照工具的实际功能命名,有助于Agent进行插件的精准识别和调度。

    通用文字识别

    名称

    工具的英文名称。

    • 命名规则:按照工具的实际功能命名,有助于Agent进行插件的精准识别和调度。
    • 命名要求:可以包含大小写字母、数字、下划线。
    • 长度限制:1~64个字符。

    RecognizeGeneralText

    描述

    描述当前工具的类型、功能和适用场景。

    需要按照工具的实际功能填写描述,有助于Agent进行插件的精准识别和调度。

    识别图片上的文字信息,以JSON格式返回识别的文字和坐标。

  2. 参考下表,继续完成工具URL、请求参数、相应参数等信息的配置。

    表4 工具配置

    参数

    说明

    示例

    导入并解析

    -

    AI自动解析API请求参数,需填入API的cURL或openAPI的原始内容。

    本示例使用手动创建,不适用自动解析功能。

    工具URL

    请求方式

    API的请求方式,支持POSTGET

    POST

    工具path

    工具path是API完整调用地址中,用于定位具体功能的后缀片段。

    /general-text

    请求参数

    参数封装

    满足某些接口强制要求入参为数组的规定,将对象类型 (Object)参数变为数组 (Array) ,也就是将入参放到一对中括号 [] 中。

    • 原参数列表:{"a":"string", "b":1}。
    • 开启后:[{"a":"string", "b":1}]。

    不启用

    请求头(Header)

    HTTP请求消息的组成部分之一,请求头负责通知服务器有关于客户端请求的信息。

    单击参数列表右侧的“添加参数”可以新增参数,参数配置说明请参见表5

    新增两个请求头参数,并设置为必选:

    X-Auth-Token:获取代码请参考附录

    Content-Type:取值为application/json

    图5 配置示例

    请求体(Body)

    HTTP请求消息的组成部分之一,请求体呈现发送给服务器的数据。

    单击参数列表右侧的“添加参数”可以新增参数,参数配置说明请参见表5

    文字识别支持2种请求方式,使用图片的url,或者图片的Base64编码。

    此处使用url,并设置为必选,使用base64编码需要填写为image。

    图6 配置示例

    查询参数(Query)

    HTTP请求消息的组成部分之一,用于向服务器传递额外的参数信息。这些参数通常以键值对的形式出现,并且附在URL的路径后面,通过?分隔。

    例如,在 /items?id=123 中,查询参数为ID,值为123。

    单击参数列表右侧的“添加参数”可以新增参数,参数配置说明请参见表5

    文字识别插件不涉及

    路径参数(Path)

    自动解析工具path中包含的路径参数。工具path中支持可变参数配置。

    例如:/weather/weatherInfo{path_1}/{path_2}。

    文字识别插件不涉及

    响应参数

    流式响应

    当插件调用的是一个带有思考效果的模型(如DeepSeek)或者耗时较长的接口,开启这个功能可以让API将获取的响应随时吐出,而不是等API完全获取结果后再一次性显示出来。

    不启用

    参数封装

    满足后续插件使用过程中(如工作流的循环节点批量读取数组)要求输入为数组的规定,将对象类型 (Object) 响应变为数组 (Array),也就是将出参放到一对中括号 [] 中。

    • 原参数列表:{"a":"string", "b":1}。
    • 开启后:[{"a":"string", "b":1}]。

    不启用

    参数列表

    响应参数清单,按照API实际的响应参数结构进行填写。

    增加一个响应参数,名称为result,并设置为必选。

    图7 配置示例
    表5 参数配置说明

    参数

    说明

    参数名称

    设置请求参数的名称,参数名称会作为大模型解析参数含义的依据。

    命名规则:仅支持字母、数字、下划线或短横线。

    说明:
    • 单击参数列表右侧的“添加参数”按钮,可以添加请求参数。
    • 单击右侧的,可以删除添加的请求参数。

    中文名称

    设置参数的中文名称,便于用户理解参数含义。

    参数类型

    设置请求参数的数据类型。

    注意:

    请求头(Header)中,所有参数的值必须是字符串类型,不能设置其他类型。

    默认值

    设置参数的默认值,当参数未提供时使用该值。

    描述

    设置请求参数的详细描述信息,准确说明参数的含义、用途和格式要求,以提高大模型对参数识别和提取的准确性。

    参数校验

    设置当前参数是否需要进行校验。

    校验规则:

    • 参数名称:需要校验的参数名称。
    • 校验类型:
      • 字符最大长度
      • 枚举值
      • 时间日期
    • 校验规则:可设置指定格式和自定义格式。
      • 指定格式:选择系统预置的标准校验规则。当校验类型为时间日期时,支持指定格式。
      • 自定义格式:根据实际需求自定义校验规则。

    必填

    设置该参数是否为必填项。

  3. 单击“工具调测”按钮,输入参数值,单击“开始调测”检查调测结果。

    对于文字识别插件示例,由于在创建插件的基准URL过程中,将{project_id}设置为变量,因此要填充该值。请登录“我的凭证”页面查询“华北-北京四”区域对应的项目ID。

    图8 获取文字识别插件项目ID
    图9 工具调测

  4. 确保输出符合预期,再单击工具调测页面右下角的“自动解析”按钮,系统将自动生成响应参数。
  5. 工具调试完成后,单击“确定”

    工具创建完成后,可以在工具列表中查看创建完成的工具。

相关操作

工具创建完成后,您可以在工具列表中查看每个工具的调试状态、智能体引用数和工作流引用数。您可以执行如表6的操作。

表6 相关操作

操作

说明

编辑

在工具信息列表中,找到需要编辑的工具,单击该工具操作列中的“编辑”,可编辑工具信息。

调试

在工具信息列表中,找到需要调试的工具,单击该工具操作列中的“调试”,在展开的弹框中输入参数信息对工具进行调试。

删除

在工具信息列表中,找到需要删除的工具,单击该工具操作列中的“删除”,可删除工具。

查看详情

在工具信息列表中,找到需要查看详细信息的工具,单击该工具名称,可查看工具的详细信息。

附录

创建文字识别插件使用,Token获取方法:

代码中账号名、IAM用户名、IAM用户密码:账号名、IAM用户名请登录“我的凭证”页面查询,密码按实际填入。

图10 查询账号名、IAM用户名
  • cURL
    curl --location --request POST 'https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens' \
    --header 'Content-Type: application/json' \
    --data-raw '{ 
        "auth": { 
            "identity": { 
                "methods": [ 
                    "password" 
                ], 
                "password": { 
                    "user": { 
                        "name": "IAM用户名",
                        "password": "密码",
                        "domain": { 
                            "name": "账号名"
                        } 
                    } 
                } 
            }, 
            "scope": { 
                "project": { 
                    "name": "cn-north-4"
                } 
            } 
        } 
    }'
  • Python
    import requests
    import json
    url = "https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens"
    payload = json.dumps({
      "auth": {
        "identity": {
          "methods": [
            "password"
          ],
          "password": {
            "user": {
              "name": "IAM用户名",
              "password": "密码",
              "domain": {
                "name": "账号名"
              }
            }
          }
        },
        "scope": {
          "project": {
            "name": "cn-north-4"
          }
        }
      }
    })
    headers = {
      'Content-Type': 'application/json'
    }
    response = requests.request("POST", url, headers=headers, data=payload)
    print(response.headers["X-Subject-Token"])
    

相关文档