Miirvis米维斯,将大模型能力整合进小米智能音箱中,实现类似于Jarvis的功能。
朋友转发了mi-gpt项目,了解后发现自己家里就有个小米音箱,于是想着跑着玩玩。但是发现项目启动搞了半天,一气之下就想自己用python写了。
在Github上找到的MiService和xiaogpt,前者是比较全的小米音箱的接入服务,后者是魔改前者后接入了GPT、多种TTS、Agent(还不太算)。
本项目主要是做音箱 + Agent,在音箱交互上还是用MiService,参考大佬的xiaogpt消息处理方式,将Agent整合进去。
$ pip install -r requirements.txt
$ cp .env.example .env
在.env上配置自己的信息
# LLM config
API_KEY=************************** # openai的key (或是能用openai库的模型服务)
MODEL=deepseek-chat # 模型名称
BASE_URL=https://api.deepseek.com # 模型服务请求地址
# Mi config
MI_USER=123456789 # 小米账号(米家APP上的账号)
MI_PASS=******** # 小米密码(米家APP上的密码)
MI_DID=0123456789 # 小米音箱设备ID(使用cli.py查看)
DEVICE_TYPE=X08A # 小米音箱型号(音箱的贴纸上有写)
$ python run.py
- xiaogpt : Python实现的小米音箱接入GPT,还适配了多种tts,非常棒的项目
- mi-gpt : Typescript实现的小米音箱接入GPT(我的入坑项目hhh)
- MiService : Python实现的小米音箱接入服务,我看了一圈大部分做python的魔改小米音箱小应用都用的这个库,感谢大佬的开源!
- 项目中stop(pause)功能并不能终止小爱的回复,只能终止播放音乐或是播客内容。所以,你要打断小爱只能主动wake up或是主动tts说话(暂时我只成功过这两种)。
- 这俩id完全不同,device_id是设备硬件id唯一标识,did是设备id。项目中miioservice的ubus和部分查询接口用的是device_id,miiocommand的接口中用的是did。
- 一直不支持访问,导致开发过程中spec一些参数不知道咋传到服务那边,因为可能MiService那套有些地方leg了,我这边一直调用不成功。有小伙伴有文档的话,麻烦分享到issue一下,感谢。
- [√] Add the Mi common service.
- [√] Add GPT in the Mi Video Box.
- [×] Add the base agent module.
- [×] Add multi tts.