给小爱音箱接入GPT
需求
早一阵子就看到有人搞这种玩法了,但是一直懒得折腾,最近听朋友说现在这个东西已经比较成熟了,搞起来不难,就试一试吧。
方案
目前被用得比较的多的两个方案分别是Python实现的xiaogpt和NodeJS实现的mi-gpt。
我当然是先试python版本,结果一开始就碰壁了,用MiService的micli list
无法取得设备列表,问了作者,他说他那边是正常的……我看了一下日志,是接口返回就是空,但是账号是登录成功的,不知道小米API那边是什么情况,搞了半天浪费时间。因为这个功能不能用,就无法取得MI_DID,就没法用。
只好改用NodeJS版本,因为这个可以用设备名称做MI_DID,但实际测试下来也没成功。还好打开调试日志后,在日志里找到了MI_DID。
然后把两个模型都试了一下,因为是用DeepSeek的API,xiaogpt不支持,最后还是只能用mi-gpt。
mi-gpt配置
主要是配置migpt.js文件和环境变量配置文件env,参考官方文档。
其中migpt.js主要是配置小米账号密码和设备的did,另外就是需要根据音箱的型号配置合适的tts命令和唤醒命令。
我用的Redmi小爱音箱Play是小米小爱音箱Play2019版的简配版本,标注的型号是L07A,但实际上在spec里用的型号是l7a,对应的配置在issue里可以查到。
env文件配置的是GPT API,主要是OPENAI开头的几个环境变量,具体配置内容按你用的API服务商说明来写。
我是用docker来跑的,用的docker-compose.yaml如下:
migpt:
image: idootop/mi-gpt
container_name: migpt
restart: unless-stopped
env_file:
- /path_to_migpt/env
volumes:
- /pat_to_migpt/migpt.js:/app/.migpt.js
最后用docker-compose up -d
启动,可以用docker logs -f migpt
查看日志。
如果没错的话就可以跟小爱同学对话了,单次对话提示词或连续对话唤醒词根据你在migpt.js里的配置使用。
xiaogpt配置
如果使用它支持的GPT API,也可以用这个,配置方法是创建一个config.yaml配置文件(从xiao_config.yaml.example复制而来),其中主要修改的配置是小米账号,设备did,设备型号,GPT API配置等。
启动服务的docker-compose.yaml类似这样:
xiaogpt:
image: yihong0618/xiaogpt
container_name: xiaogpt
restart: unless-stopped
network_mode: host
volumes:
- /path_to_xiaogpt:/config
command: --config=/config/config.yaml
其中network_mode按官方说明是需要的,可能不用也可以。
问题处理
如果启动时报登录失败,可以试一下在相同内网里找个电脑用同一账号登录小米官网mi.com
,再启动应该就不会报登录失败了。可能是小米的安全限制导致。
推送到[go4pro.org]