使用 mi-gpt 将小爱音箱接入大模型
无意间发现了开源项目 mi-gpt,该项目可以将家里的小爱音箱接入到 GPT 中,增强小爱音箱的功能。在跟小爱音箱对话的过程中,可以根据特定的提示词走 GPT 来回答,而不是用小爱音箱原生的回复。
必备条件:
- 必须有一个小米音箱。
- 必须要有可以长期运行的服务器,可以是树莓派等设备。
- 要有一个 OpenAI 的账号,也可以用兼容 ChatGPT API 的国内大模型。
部署
部署比较简单,下面为我的部署过程,供大家参考。更详细的信息大家可以直接参考 github 项目中的相关文档。
创建配置文件 .migpt.js
:
参考项目中的文件 .migpt.example.js内容:
1 | // 小爱音箱扮演角色的简介 |
必须要修改的内容涉及到如下字段,其他字段可以根据含义来定义:
- speaker.userId:小米的用户 ID。
- speaker.password:小米的账号密码。
- speaker.did:小爱音箱的 ID 或者小爱音箱在米家的设备名字。
- ttsCommand:需要设置。如果设置不正常,会导致小爱音箱无法播放 GPT 回复内容的情况。
- wakeUpCommand:需要设置。
- streamResponse:在某些音箱设备上需要关闭。我的设备因为无法读完完整的句子,选择了关闭该功能,相关参考:小爱音箱没有读完整个句子,总是戛然而止。
ttsCommand 和 wakeUpCommand 需要在 https://home.miot-spec.com 页面搜索对应的音箱型号
点击规格后任选一个,选择 Intelligent Speaker
,其中的 [3, 1]
对应的为 ttsCommand,[3, 2]
对应的为 wakeUpCommand。
创建配置文件 .env
该文件中需要配置 OPENAI 的账号信息,我这里直接采用了阿里云的通义千问大模型服务,API 是完全兼容的。
参考文档《开通DashScope并创建API-KEY》 阿里云上开通大模型服务,获取到 API-KEY
参考项目中的文件.env.example
1 |
|
主要修改如下两个值:
启动服务
提供了两种方式:docker 和 宿主机 Node.js 方式运行,我自然会选择更加简洁的 docker 方式。
执行 docker run -d --name mi-gpt --env-file $(pwd)/.env -v $(pwd)/.migpt.js:/app/.migpt.js idootop/mi-gpt:3.1.0
即可本地运行。
功能演示
提问小爱同学:“请问一下太阳的重量是多少”,小爱同学可以顺利的回答出答案。
通过 docker logs mi-gpt -f
可以看到如下的输出日志:
1 | 2024/06/12 16:15:38 Speaker 🔥 请问一下太阳的重量是多少 |