大家好,我是陈杨。相信大家也都认识我了,我们前面也写了很多篇文章,感兴趣可以打开我的主页去了解一下。觉得写的好的,不要忘记给我点赞哦,感谢!!

最近智能体超级火,相信大家都体会到了,薅了不少羊毛吧。但是我们想自己开发一个智能体,那肯定很难,也很复杂,成本也很高。那鸿蒙为了解决鸿蒙所有APP都可以开发自己的智能体,让用户能直接唤起小艺开放平台上的智能体,那今天说的Agent Framework Kit(智能体框架服务)绝对能帮上忙。它不用你从零开发复杂的交互逻辑,靠现成的组件就能实现智能体拉起,操作起来还挺简单。

一、先搞懂:这个Kit到底能干嘛?

简单说,Agent Framework Kit就是个“桥梁”——你的App在小艺开放平台上完线智能体后,用这个Kit就能快速添加一个入口(比如图标或按钮),用户点击后就能直接唤起对应的智能体,实现“App+智能体”的组合服务。

比如你做了个办公App,想加个“智能生成文档”的功能,只要在小艺开放平台创建好这个智能体,再通过这个Kit在App里放个按钮,用户点一下就能唤起智能体帮着写文档,不用再跳转到其他地方,体验特别顺。

它的核心就是Function组件,分两种类型:

  • 图标组件:没设置标题的时候默认显示,就像个“总入口”,不带具体功能指向,适合当App里智能体的主入口;
  • 按钮组件:可以自定义文字描述,比如“智能创建”“一键生成”,用户一看就知道点了能干嘛,针对性更强。

二、哪些设备能用?有啥限制?

先把使用范围说清楚,避免白忙活:

  • 支持设备:目前只支持手机和平板,其他设备暂时用不了;
  • 适用地区:仅限中国境内(不含香港、澳门、台湾地区);
  • 模拟器:暂时不支持,得用真实设备测试才靠谱。

三、一步步教你:怎么用Function组件拉起智能体

其实开发步骤不复杂,跟着走就能搞定,咱们用通俗的话拆解一下:

1. 开发前准备

  • 先在小艺开放平台创建好你的智能体(具体步骤可以看平台的“快速创建智能体”指南);
  • 测试用的设备要登录华为账号,而且得联网,不然拉不起智能体。

2. 引入必要的“工具”

打开项目里的src/main/ets/pages/Index.ets文件,先把需要的组件和工具引进来,就像做饭前先把食材准备好:

import { FunctionComponent, FunctionController } from '@kit.AgentFrameworkKit';
import { BusinessError } from "@kit.BasicServicesKit";
import { hilog } from "@kit.PerformanceAnalysisKit";

3. 写核心代码:添加智能体入口

接下来就是创建一个页面,把智能体入口(图标或按钮)放上去。这里有几个关键信息要注意:

  • agentId:相当于智能体的“身份证”,必须填对,不然找不到要唤起的智能体;
  • onError:出错处理,比如智能体拉不起来的时候,这里可以写点提示逻辑;
  • 可选参数:比如title(按钮标题)、queryText(给智能体的提示文字),可以根据需求加。

简单的代码示例长这样(复制过去改改agentId就能用):

@Entry
@Component
export struct AgentExample {
  // 创建控制器,相当于“开关”,用来控制智能体的打开关闭
  private controller: FunctionController = new FunctionController();
  // 你的智能体ID,替换成自己的就行
  private agentId: string = 'agentproxy65481da1fa2293a8482d45';

  build() {
    Column() {
      // 智能体入口组件
      FunctionComponent({
        agentId: this.agentId, // 智能体身份证
        onError: (err: BusinessError) => {
          // 出错了可以在这里加提示,比如弹个“智能体暂时不可用”
          console.log(`出错啦:${err.message}`);
        },
        options: {
          title: '智能创建', // 按钮标题,填了就显示按钮,不填显示图标
          queryText: '创建一个新的情景', // 告诉智能体要做什么
          isShowShadow: true // 给按钮加个阴影,看着更立体
        },
        controller: this.controller
      })
    }
  }
}

4. 可选优化:先判断智能体是否能用

有时候可能会遇到智能体ID无效,或者设备不支持的情况,这时候可以先做个判断,能用再显示入口,避免用户点了没反应:

@State isAgentSupport: boolean = false;

// 页面加载前先检查
aboutToAppear () {
  this.checkAgentSupport()
}

// 检查智能体是否可用
async checkAgentSupport () {
  try {
    let context = this.getUIContext()?.getHostContext() as common.UIAbilityContext;
    // 调用控制器的方法,判断当前智能体能不能用
    this.isAgentSupport = await this.controller.isAgentSupport(context, this.agentId)
  } catch (err) {
    console.log(`检查失败:${err.message}`)
  }
}

// 只有能用的时候才显示入口
build() {
  Column() {
    if (this.isAgentSupport) {
      FunctionComponent({
        agentId: this.agentId,
        onError: (err: BusinessError) => {},
        options: {
            title: '智能创建',
            queryText: '创建一个新的模式'
        }
      })
    }
  }
}

5. 加个“监听”:知道智能体什么时候打开/关闭

如果想知道用户什么时候打开了智能体,什么时候关掉了,还能加个监听事件,比如统计使用次数:

// 页面加载时初始化监听
aboutToAppear () {
  this.initListeners()
}

// 设置监听:打开和关闭智能体时触发
initListeners () {
  this.controller?.on('agentDialogOpened', () => {
    console.log('用户打开了智能体');
    // 这里可以加统计逻辑,比如上报“智能体打开次数”
  })
  this.controller?.on('agentDialogClosed', () => {
    console.log('用户关闭了智能体');
  })
}

// 页面消失时取消监听,避免占用资源
aboutToDisappear () {
  this.controller?.off('agentDialogOpened')
  this.controller?.off('agentDialogClosed')
}

四、最后提个醒

  1. agentId一定要复制正确,错一个字符都拉不起智能体;
  2. 测试的时候必须用真实手机/平板,模拟器不管用;
  3. 只有中国境内的设备能使用,海外版本的App暂时用不了这个功能;
  4. 可以根据自己的App风格,自定义按钮的标题、提示文字,让入口更融入App界面。

总的来说,Agent Framework Kit就是个“懒人工具”,不用自己写复杂的唤起逻辑,靠现成组件就能快速给App加智能体入口,对HarmonyOS开发者来说还挺实用的。如果你的App需要集成智能体功能,不妨试试这个Kit,操作简单还省时间~

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐