鸿蒙智能体开发实战: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密钥关闭时大模型无法读取使用默认值}]}参数启用控制策略启用 默认值大模型可以读取并自主决定是否使用其他值关闭 默认值大模型无法读取始终使用默认值适合API密钥等敏感参数启用 无默认值大模型必须从用户输入中提取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 调试方法在小艺开放平台上添加插件后可以直接调试进入智能体的调试页面发送包含插件触发条件的消息查看插件的调用参数和返回结果调试信息包括插件名称被调用的插件工具名称被调用的具体工具请求参数大模型提取的参数值插件结果API返回的原始数据5.2 调试注意事项问题说明云插件调试直接在网页端调试即可端插件调试依赖设备端应用需要在真机上调试参数错误检查参数定义和用户输入提取逻辑超时检查API响应时间考虑配置异步任务六、插件升级6.1 升级策略插件支持版本管理每次修改后可以创建新版本{version:1.1.0,changelog:[新增支持查询未来7天天气预报,优化API响应时间减少50%,修复特殊字符导致的参数解析错误]}6.2 版本兼容性变更类型是否兼容说明新增工具兼容不影响现有工具调用新增参数兼容现有参数保持不变修改参数名不兼容需要更新智能体配置删除工具不兼容移除后相关调用会失败七、最佳实践7.1 插件设计原则单一职责每个插件聚焦于一个业务领域合理粒度一个插件包含3-5个相关工具为宜描述详尽插件和工具的描述要清晰准确参数示例为参数提供示例值帮助大模型理解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}}}}}}}}}}}}}}总结本文详细介绍了鸿蒙智能体自定义插件的开发全流程插件概述插件类型、工作流程、与工作流的对比创建云插件插件创建、OpenAPI工具定义、参数说明参数设置执行设置、输入/输出参数控制模拟集创建和使用模拟数据进行调试调试升级插件调试方法和版本管理策略最佳实践设计原则和常见问题排查插件是智能体能力的肌肉掌握插件开发可以让智能体实现几乎任何功能。下一篇文章将介绍如何在智能体中使用和管理插件。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源插件开发指南 - 华为开发者联盟插件参数设置 - 华为开发者联盟插件绑卡 - 华为开发者联盟插件调试 - 华为开发者联盟插件升级 - 华为开发者联盟插件模拟集 - 华为开发者联盟OpenAPI 3.0 规范MCP协议规范