当前位置: 首页 > news >正文

鸿蒙智能体开发实战:11.自定义插件

前言

插件是智能体能力扩展的核心方式。通过插件,智能体可以调用外部API访问数据库执行复杂计算等。鸿蒙智能体平台支持多种插件类型,包括云插件MCP插件端插件,满足不同场景的需求。

本文将详细介绍如何开发和配置自定义插件,让智能体具备更强大的能力。无论是接入天气查询订单管理还是AI绘图等外部服务,都可以通过插件快速实现。

插件是一个工具集,一个插件内可以包含一个或多个工具(API)。合理设计插件结构和工具划分,是构建高质量智能体的关键。

一、插件概述

1.1 什么是插件

插件是一种能力扩展单元,它封装了对外部服务的调用逻辑。智能体在运行时,大模型会根据用户的输入自动选择合适的插件和工具进行调用。

插件的工作流程:

用户输入 → 大模型理解意图 → 选择插件/工具 → 调用外部API → 返回结果 → 大模型整合输出

1.2 插件类型

鸿蒙智能体平台支持三种插件类型:

插件类型说明适用场景
云插件部署在云端的API服务查询天气、订单管理、数据分析等
MCP插件基于MCP协议的标准化插件跨平台工具集成、标准协议对接
端插件运行在鸿蒙设备端的插件设备控制、本地文件操作、端侧AI能力

插件类型选择示意图:

上图展示了在小艺开放平台中创建 MCP 插件的入口位置,开发者可以根据业务需求选择对应的插件类型。

1.3 插件 vs 工作流

对比维度插件工作流
粒度单个工具或多个相关工具多个步骤的组合流程
执行方式由大模型自动调用按预设流程执行
复杂度低到中中到高
适用场景单一API调用多步骤业务处理

二、创建云插件

2.1 插件创建入口

在小艺开放平台,通过「资源库」→「插件」→「新建插件」进入创建页面。

创建插件需要填写以下基本信息:

配置项说明示例
插件名称插件的展示名称“天气查询”
插件描述说明插件功能,供大模型理解“查询指定城市的天气信息”
插件图标可选,展示用图标
插件分类按功能分类工具类/生活类/娱乐类

2.2 定义工具(API)

一个插件可以包含一个或多个工具。每个工具对应一个API接口:

{"openapi":"3.0.0","info":{"title":"天气查询插件","description":"查询城市天气信息","version":"1.0.0"},"servers":[{"url":"https://api.weather-service.com/v1"}],"paths":{"/weather/current":{"get":{"summary":"查询当前天气","operationId":"getCurrentWeather","parameters":[{"name":"city","in":"query","required":true,"schema":{"type":"string"},"description":"城市名称,如:北京、上海"}],"responses":{"200":{"description":"成功返回天气信息","content":{"application/json":{"schema":{"type":"object","properties":{"temperature":{"type":"number","description":"当前温度(摄氏度)"},"weather":{"type":"string","description":"天气状况,如:晴、多云、雨"},"humidity":{"type":"number","description":"湿度百分比"}}}}}}}}}}}

2.3 工具参数说明

工具参数定义遵循OpenAPI 3.0规范,核心参数如下:

参数属性说明是否必填
name参数名称
in参数位置:query/header/path/body
required是否必须
schema.type参数类型:string/number/integer/boolean/array
description参数描述,越详细越好推荐
example示例值

提示:参数描述越详细,大模型越能准确提取用户输入中的参数值。

三、插件参数设置

3.1 执行设置

对于执行耗时较长的插件,可以配置异步任务模式:

{"async_config":{"enabled":true,"timeout":300,"callback_url":"https://your-server.com/callback"}}

异步任务说明:

配置项说明
开启异步任务插件耗时较长时,执行完自动Push通知用户
Webhook回调任务完成后通过Webhook通知智能体
超时设置任务执行超时时间

3.2 输入参数设置

输入参数支持默认值启用控制

{"parameters":[{"name":"city","defaultValue":"北京","enabled":true,"description":"城市名称,启用时大模型可读取并修改"},{"name":"api_key","defaultValue":"sk-xxxx","enabled":false,"description":"API密钥,关闭时大模型无法读取,使用默认值"}]}

参数启用控制策略:

  1. 启用 + 默认值:大模型可以读取并自主决定是否使用其他值
  2. 关闭 + 默认值:大模型无法读取,始终使用默认值(适合API密钥等敏感参数)
  3. 启用 + 无默认值:大模型必须从用户输入中提取

3.3 输出参数设置

输出参数控制大模型是否对插件结果进行融合生成

配置项说明效果
融合生成开启大模型会基于结果重新组织语言回复更自然,但可能丢失细节
融合生成关闭直接展示插件返回的原始数据数据准确,但不够口语化

四、插件模拟集

4.1 模拟集的作用

插件模拟集允许开发者在不调用真实API的情况下测试插件的执行效果。这在开发调试阶段非常有用。

4.2 创建模拟集

{"mock_data":[{"name":"北京晴天模拟","trigger":{"city":"北京"},"response":{"temperature":25,"weather":"晴","humidity":30}},{"name":"上海雨天模拟","trigger":{"city":"上海"},"response":{"temperature":18,"weather":"小雨","humidity":85}}]}

五、插件调试

5.1 调试方法

在小艺开放平台上,添加插件后可以直接调试:

  1. 进入智能体的调试页面
  2. 发送包含插件触发条件的消息
  3. 查看插件的调用参数和返回结果

调试信息包括:

  • 插件名称:被调用的插件
  • 工具名称:被调用的具体工具
  • 请求参数:大模型提取的参数值
  • 插件结果:API返回的原始数据

5.2 调试注意事项

问题说明
云插件调试直接在网页端调试即可
端插件调试依赖设备端应用,需要在真机上调试
参数错误检查参数定义和用户输入提取逻辑
超时检查API响应时间,考虑配置异步任务

六、插件升级

6.1 升级策略

插件支持版本管理,每次修改后可以创建新版本:

{"version":"1.1.0","changelog":["新增:支持查询未来7天天气预报","优化:API响应时间减少50%","修复:特殊字符导致的参数解析错误"]}

6.2 版本兼容性

变更类型是否兼容说明
新增工具兼容不影响现有工具调用
新增参数兼容现有参数保持不变
修改参数名不兼容需要更新智能体配置
删除工具不兼容移除后相关调用会失败

七、最佳实践

7.1 插件设计原则

  1. 单一职责:每个插件聚焦于一个业务领域
  2. 合理粒度:一个插件包含3-5个相关工具为宜
  3. 描述详尽:插件和工具的描述要清晰准确
  4. 参数示例:为参数提供示例值,帮助大模型理解

7.2 常见问题

# 问题1:插件调用失败检查项: ① 插件是否已上架 ② API地址是否可访问 ③ 参数是否匹配# 问题2:大模型未正确调用插件检查项: ① 插件描述是否清晰 ② 参数描述是否完整 ③ 工具名称是否有意义

提示:建议先在模拟集环境中充分测试,再切换到真实API环境。

八、完整开发示例

以下是一个订单查询插件的完整示例:

{"openapi":"3.0.0","info":{"title":"订单查询插件","version":"1.0.0","description":"支持订单查询、物流追踪和订单状态变更"},"servers":[{"url":"https://api.example.com"}],"paths":{"/order/query":{"post":{"summary":"查询订单详情","operationId":"queryOrder","parameters":[{"name":"orderId","in":"query","required":true,"schema":{"type":"string"},"description":"订单号"}],"responses":{"200":{"description":"订单信息","content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string"},"status":{"type":"string","enum":["pending","paid","shipped","completed","cancelled"]},"amount":{"type":"number"},"createTime":{"type":"string"}}}}}}}}},"/order/track":{"post":{"summary":"查询物流信息","operationId":"trackOrder","parameters":[{"name":"orderId","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"物流追踪信息","content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string"},"company":{"type":"string"},"trackingNumber":{"type":"string"},"status":{"type":"string"},"updates":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string"},"location":{"type":"string"},"description":{"type":"string"}}}}}}}}}}}}}}

总结

本文详细介绍了鸿蒙智能体自定义插件的开发全流程:

  1. 插件概述:插件类型、工作流程、与工作流的对比
  2. 创建云插件:插件创建、OpenAPI工具定义、参数说明
  3. 参数设置:执行设置、输入/输出参数控制
  4. 模拟集:创建和使用模拟数据进行调试
  5. 调试升级:插件调试方法和版本管理策略
  6. 最佳实践:设计原则和常见问题排查

插件是智能体能力的"肌肉",掌握插件开发可以让智能体实现几乎任何功能。下一篇文章将介绍如何在智能体中使用和管理插件。

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源:

  • 插件开发指南 - 华为开发者联盟
  • 插件参数设置 - 华为开发者联盟
  • 插件绑卡 - 华为开发者联盟
  • 插件调试 - 华为开发者联盟
  • 插件升级 - 华为开发者联盟
  • 插件模拟集 - 华为开发者联盟
  • OpenAPI 3.0 规范
  • MCP协议规范
http://www.jsqmd.com/news/1154489/

相关文章:

  • SD-PPP:在Photoshop中无缝集成AI绘图的全新工作流革命
  • 逃离塔科夫离线版存档编辑神器:SPT-AKI Profile Editor完全指南
  • 直流有刷电机驱动方案:TC78H653FTG与GD32VF103VBT6组合应用
  • STM32与TB6593FNG直流电机控制优化方案
  • 生图提示词不会写?教你用大语言模型改写需求的选型攻略
  • 【Bug已解决】CC Switch configuration conflict / Multiple API keys mixed — Claude Code 多配置冲突解决方案
  • cursor无法连接centos7,显示node版本太低
  • 如何为你的音乐应用添加Apple Music级别的歌词体验?
  • 3分钟搞定!让你的Mac微信消息永远不被撤回
  • 工业负载控制方案:TPD2017FN与PIC18LF4585应用设计
  • PyTorch 2.2.2 cu121 在 Tesla T4 上的部署:从驱动到模型推理的 5 步验证
  • 基于PIC18F4515与PAM8904的多功能声光报警系统设计
  • 大疆上云API 1.10.0 媒体上传优化:3种文件指纹策略对比与性能实测
  • Claude驱动的OpenClaw测试案例揭秘
  • 高精度模拟信号采集:ADS1262与PIC18F47K42的工业应用
  • 如何5分钟找回丢失的QQ空间记忆?GetQzonehistory终极指南
  • 从清洁度、清洗剂、清洗设备,教你如何找到最适合的清洗方案
  • Paperxie 分层式 AI 毕业论文撰写系统,一站式搞定毕业撰文全流程
  • 专业Android设备完整性检测:Play Integrity API Checker全面指南
  • 2026年Agent开发爆发!小白程序员必备,收藏学起来,高薪就业不是梦!
  • LV3296与MKV46F128VLH16嵌入式数据采集系统开发指南
  • 2026最新英语单词学习软件推荐 适合学生党用的实用款汇总
  • 插件的生成及使用 - NPM
  • MA12070音频放大器与MKV44微控制器的集成应用
  • STM32 GPIO上拉下拉配置与I2C信号优化实践
  • 终极指南:如何在Linux上完美运行Steam动态壁纸的5个专业技巧
  • 企业号码认证怎么选?先看这六个维度
  • 电气工程及其自动化未来10年就业趋势深度预测
  • AD7175-8与PIC18LF27K42在精密测量中的设计与优化
  • EM3080-W与PIC18F4620的条码识别系统设计