在HarmonyOS应用开发中,如何高效地集成AI大模型能力,成为许多开发者关注的焦点。本文将基于华为云码道(CodeArts)代码智能体与MaaS(Model as a Service)大模型服务平台,通过一个完整的鸿蒙原生健身助手案例,讲解从环境搭建、代码生成到API集成的全流程实践。
一、环境准备与资源获取
开发环境需要安装DevEco Studio,并创建HarmonyOS工程。打开DevEco Studio的模拟器管理器,创建一个本地模拟器,用于后续调试。在DevEco Studio中安装华为云码道代码智能体插件,该插件能以对话方式生成代码。
此外,需要前往华为云MaaS平台领取大模型Tokens福利。领取后,记录下API地址、模型名称和API Key,这些将在后续步骤中用于替换项目中的常量配置。
二、使用码道代码智能体生成初始代码
启动DevEco Studio中的华为云码道插件,在对话框中输入详细的提示词,描述应用的功能需求,包括用户信息录入、私教建议生成、加载状态提示等。码道会根据提示词自动生成基础版的ArkTS代码。
然而,由于模型的局限性,生成的代码可能存在语法或逻辑错误,为了保持开发效率,本案例直接使用提供的完整源码。项目结构清晰,包含bean(数据封装)、model(数据请求与解析)、pages(页面)、utils(工具类,如HttpHelper和ModelConstants)等模块。
三、核心页面实现:用户信息录入(MainPage.ets)
MainPage.ets是应用的主界面,使用ArkUI的@Component装饰器。界面包含性别选择、身高、年龄、当前体重、目标体重等输入项。性别通过TextPickerDialog实现单选,身高、年龄、体重通过循环生成数组供选择器使用。所有输入项绑定到@State变量,确保响应式更新。
当用户填写完信息后,点击“获取私教建议”按钮,将用户信息封装成PersonInfo对象,通过NavPathStack.pushPathByName跳转至详情页。
关键代码片段:
- @Entry
- @Component
- struct Index {
- @State sex: string = "男";
- @State currentHeight: string = "175cm";
- // 其他状态变量略...
- build() {
- Column() {
- // 使用自定义组件TextCommonComponent展示各项
- TextCommonComponent({ title: $r('app.string.sex'), content: this.sex, onItemClick: () => {
- this.getUIContext().showTextPickerDialog({
- range: this.sexArray,
- selected: this.select,
- onAccept: (value) => { this.sex = value.value; }
- });
- }});
- // 身高、年龄、体重类似...
- Button('获取私教建议').onClick(() => {
- let personInfo = new PersonInfo(this.sex, this.currentHeight, this.currentAge, this.currentWeight, this.targetWeight);
- this.pageInfos.pushPathByName('detailPage', personInfo);
- });
- }
- }
- }
复制代码
四、详情页与MaaS API集成(DetailPage.ets & HttpHelper.ets)
DetailPage.ets在页面显示时,从NavDestination中获取传递的personInfo参数,构造提示词,然后调用DetailViewModel.requestModelData发起网络请求。网络请求工具类HttpHelper.ets封装了HTTP POST方法,向华为云MaaS API发送请求。
配置常量(ModelConstants.ets)中存储API_URL、MODEL_NAME和API_KEY。请求体包含system和user消息,设定temperature为0.6以平衡生成结果的多样性与稳定性。响应数据经过formatString方法清洗(移除冗余字符、保留数字范围中的横线),然后展示在Text组件中。同时,请求期间显示UploadingLayout加载状态,防止重复点击。
- // DetailPage.ets 部分
- let prompt = `...请给出健身建议!`;
- DetailViewModel.requestModelData(prompt).then((content) => {
- this.isUploading = false;
- this.content = content;
- });
复制代码
五、本地模拟器调试与体验
在DevEco Studio中选择之前创建的本地模拟器,点击运行。模拟器会启动并加载应用,可在模拟器中输入各项身体数据,点击按钮获取AI建议。调试过程中可以观察网络请求日志,确认API调用是否成功,响应数据是否正常展示。
六、总结
本案例展示了如何将华为云MaaS大模型能力集成到鸿蒙原生应用中,并利用华为云码道辅助代码生成。开发者可以以此为基础,快速构建依赖AI分析的各类健康、教育、咨询类应用。整个开发流程体现了HarmonyOS生态与华为云的深度融合,有效降低了AI应用的开发门槛。 |