目录
本案例首发于华为云论坛:【案例共创】基于仓颉编程语言+Cangjie Magic智能体框架+华为云IoTDA+DeepSeek推动智能家居智能体落地_社区活动_华为云论坛
案例介绍
本案例帮助开发者了解仓颉编程语言的能力,以及如何利用仓颉编程语言和Cangjie Magic智能体框架,基于华为云提供的DeepSeek服务开发出功能强大的智能家居智能体,在其中演示了如何通过华为云IoTDA平台和物联网设备进行交互,以推动智能家居智能体技术的落地应用,为用户提供更加智能、便捷的服务体验。
原创声明: 本案例的内容均为原创,部分内容曾经在作者的CSDN博客(https://blog.csdn.net/bit_mike/)发表过,不涉及抄袭。
案例内容
1 概述
1.1 案例介绍
大型语言模型(LLM)的常识推理能力和广泛的通用知识使其非常适合在智能家居场景中理解用户请求。然而,LLM 缺乏关于用户及其家庭的特定知识,这限制了其潜力。我们使用仓颉编程语言和Cangjie Magic智能体框架构建了基于华为云IoTDA的智能家居智能体 克服了现有智能家居App的限制:通过 IoTDA的用户侧API 读取所有设备信息,无需任何编码即可访问任何智能设备,并由智能体工具根据这些设备信息和用户的场景需求自动产生操作设备的指令,并调用IoTDA的用户侧API 发送给智能设备。例如,当用户的请求是“我想看大片”时,智能体就能够自动做出决策:打开客厅电视,调低客厅灯的亮度并关闭客厅窗帘制作影院式的氛围。本案例的架构图参见图1。
图1 案例架构图
1.2 适用对象
- 企业
- 个人开发者
- 高校学生
本案例需要使用者有仓颉语言编程、大语言模型、智能体以及智能物联网的基本知识。
1.3 案例时间
本案例总时长预计60分钟。
1.4 资源总览
本案例预计花费总计0元。
资源名称 | 规格 | 单价(元) | 时长(分钟) |
---|---|---|---|
云主机 | 2vCPU 4GB X86 Ubuntu 或4vCPUs 8GB ARM Ubuntu | 免费 | 60 |
IoTDA接入服务 | 标准版 | 免费 |
2 基于Cangjie Magic开发智能家居智能体
2.1 准备开发环境
有关华为开发者空间云主机安装仓颉语言开发板环境的详细说明,可参考以下链接:https://devstation.connect.huaweicloud.com/space/devportal/casecenter/5a7144a66d1b43e088592ae447d518ed/1
2.2 下载并阅读案例代码
访问Gitcode网站可以下载本案例的代码。进入云主机桌面,右键选择Open Terminal Here打开终端命令窗口,克隆仓颉示例代码仓库。
git clone https://gitcode.com/zealsoft/iotagent.git
使用CodeArts IDE for Cangjie打开IoTAgent示例项目。左上点击文件—打开项目,选择前面克隆的示例代码目录。
2.3 Cangjie对接DeepSeek接口
华为云提供了单模型200万免费Tokens,包含DeepSeek-R1&V3满血版,我们可以登录华为云ModelArts Studio(MaaS)控制台领取免费额度,这里我们选择DeepSeek-V3满血版来搭建我们的智能家居智能体。之所以选择V3而不是R1,主要原因是R1的推理速度太慢了,而智能家居智能体应该有较快的反应速度,所以选择V3版本。
在云主机桌面底部菜单栏,点击打开火狐浏览器。用火狐浏览器访问ModelArts Studio首页:https://www.huaweicloud.com/product/modelarts/studio.html,点击ModelArts Studio控制台跳转到登录界面,按照登录界面提示登录,即可进入ModelArts Studio控制台。
进入ModelArts Studio控制台首页,区域选择西南-贵阳一,在左侧菜单栏,选择在线推理 > 预置服务 > 免费服务,选择DeepSeek-V3-32K模型,点击领取额度,领取200万免费token。
领取后点击调用说明,可以获取到对应的API地址、模型名称。
点击API Key管理-创建API Key。(注意保存好API Key,这个Key只显示一次,以后就无法复制了)
至此,华为云MaaS提供的免费DeepSeek Tokens就领取完成啦,记录对应的API地址、模型名称、API Key留作下面步骤使用。
2.4 创建IAM用户
登录华为云,在右上角单击“控制台”。在控制台页面,鼠标移动至右上方的用户名,在下拉列表中选择“统一身份认证”。在左侧导航窗格中,选择“用户”,单击右上方的“创建用户”。在“创建用户”界面配置用户基本信息。
单击右下角的“下一步”,进入“加入用户组(可选)”界面。选择“按身份策略配置”,确保用户拥有IoTDA相关的权限。单击右下角的“创建用户”,用户创建成功。
管理员在用户列表中,单击用户名称,或单击右侧的“安全设置”,进入用户详情页面。选择“安全设置”页签。单击“登录凭证>登录密码”右侧的
,重置IAM用户的登录密码。
记录下IAM用户名和密码,后面会用到。
2.5 在IoTDA中建立智能设备
首先进入华为云 IoTDA 网站: https://www.huaweicloud.com/product/iothub.html,点击控制台按钮进行登录。 在控制台界面处点击左上角三条横线,会出现菜单,选择“IoT 物联网” ——“设备接入 IoTDA” , 在左侧栏目中选择 IoTDA 实例,在标准版处选择购买实例。 每位用户都有一次免费的使用机会,在其中选择免费单元即可。
点击“产品”进入页面,然后点击“创建产品”。在产品名称部分输入“智能灯”,协议类型为“MQTT”,数据格式为JSON,其他内容随便填写,然后点击确定。
类似的,创建“智能电视”和“智能窗帘”。
点击左侧的“所有设备”,然后点击“注册设备”,选择所属的资源空间,然后在“所属产品”中选择“智能灯”,设备标识码为livingroomlight。然后点击确定。
进入到“客厅智能灯”的详情页,点击“MQTT连接参数”后的“查看”,会出现下图窗口,记住其中的参数,下面会用到。
类似的,建立两个设备“客厅窗帘”和“客厅电视”。
2.6 使用MQTTX模拟设备
MQTTX是一个免费的MQTT协议客户端,我们借助它来模拟智能家居设备。首先从MQTTX网站下载软件:https://mqttx.app/zh。
在 MQTTX 中点击左侧的加号创建一个 MQTT 连接,其中 name 设置为 “客厅照明灯”, Client ID、Host和username password请参照上一节记录的连接参数填写, Port 为 1883,不支持 SSL/TLS。设置如下图所示:
然后点击Connect按钮建立模拟设备到云端的连接。
类似的建立另外两个设备的连接。
在IoTDA的控制台可以看到3个设备在线。
2.7 运行智能家居智能体案例
修改main.cj中main函数,添加华为云DeepSeek V3密钥:
Config.env["DEEPSEEK_API_KEY"] = "XXXXXXXXXXXXXXXX"
按照实际情况修改下面的参数(请使用华为云账号登录“我的凭证”页面。在“我的凭证”页面,“项目列表”区域可以查看项目ID,账号名就是下面的domain name):
iotda.iotdaEndpoint = "https://bde4cbe7aa.st1.iotda-app.cn-north-4.myhuaweicloud.com"
iotda.projectId = "<yourprojectid>"
iotda.region = "cn-north-4"
iotda.token = iotda.getToken("<domain name>", "<iamusername", "<iampassword>")
先运行Cangjie SDK目录中的envsetup.h设置环境变量,然后执行cjpm run --name iotagent执行智能体程序。可以看到智能体会发送3条指令给设备。
此时,在MQTTX中可以看到云端下发的指令。
到此整个项目案例创建完成。
3. 案例的扩展
考虑到案例的篇幅有限,并且难度不宜过大,有些内容没有包括在本案例中,有兴趣的朋友可以对案例做如下扩展。
3.1 设备指令模型
目前由于缺乏设置指令的信息,所以智能体发出的指令内容有点随机。IoTDA缺乏对设备支持的指令的描述。所以我们可以在智能体中增加关于设备指令的模型,从而确保大模型发出的指令信息是设备所支持的。
3.2 用户偏好记忆
Cangjie Magic智能体框架提供了记忆组件,支持多轮对话和长期记忆,我们可以通过对话分析用户的偏好(比如用户喜欢什么风格的音乐和电影),从而提供更好的用户体验。
欢迎朋友们和我一起扩展智能家居智能体。Cangjie Magic智能体框架好啊,要学,真程序员必学仓颉编程语言。