type
status
date
slug
summary
tags
category
icon
password
小爱同学在现在大模型超速发展的背景下,已经不能称之为一个人工智能助手,在小米的大模型未发力前,小爱同学的对话能力始终是有待提高的。本文将介绍通过开源项目将小爱同学接入目前最强人工智能ChatGPT,来提升小爱同学的可玩性。
效果演示
相关地址
- xiaogpt-使用小米 AI 扬声器播放 ChatGPT 和其他 LLM
xiaogpt
yihong0618 • Updated Sep 9, 2024
- MiService-获取小米设备ID
MiService
yihong0618 • Updated Sep 1, 2024
- OpenAI-ChatGPT
- ChatGLM-国产大模型
开始☞
主要实现方式是在本地运行xiaogpt项目,就可实现与小爱的对话。
xiaogpt项目介绍
xiaogpt是一个开源项目,旨在帮助用户将小爱同学与ChatGPT及其他大型语言模型(LLM)相结合。通过这个项目,你可以让小爱同学具备更强大的智能对话能力,为用户提供更加丰富和有趣的互动体验。
目前支持的AI类型如下
- GPT3
- ChatGPT
- New Bing
准备工作
为了实现小爱同学与ChatGPT的结合,需要准备以下条件:
- 小米AI音箱
- 能正常联网的环境或代理
- 需要安装Python环境,3.8以上
我安装的是Python3.9,如果没有的话可以在官网(https://www.python.org/downloads/)下载安装,安装时记得添加到环境变量。
获取音箱设备ID(MI_DID)
这里借助作者另一开源项目 来获取自己的小爱音箱设备ID。
MiService
yihong0618 • Updated Sep 1, 2024
micli list
会列出账号下所有的设备,这里可以通过名称区分出哪一个是小爱音箱的MI_DID。相关配置
先拉取 代码,可以使用VsCode打开项目,方便后续配置修改,然后通过pip安装
xiaogpt
yihong0618 • Updated Sep 9, 2024
这里如果网络环境不好,会非常慢,可以自己使用魔法,或者使用阿里的源
等待安装完成后,打开项目目录所在文件夹,我这里通过配置文件启动的,也可以使用官方提供的其他启动方式。
官方非配置文件方式
pip install -U --force-reinstall xiaogpt
- 参考我 fork 的 MiService 项目 README 并在本地 terminal 跑
micli list
拿到你音响的 DID 成功 别忘了设置 export MI_DID=xxx 这个 MI_DID 用
- run
xiaogpt --hardware ${your_hardware} --use_chatgpt_api
hardware 你看小爱屁股上有型号,输入进来,如果在屁股上找不到或者型号不对,可以用micli mina
找到型号
- 跑起来之后就可以问小爱同学问题了,“帮我"开头的问题,会发送一份给 ChatGPT 然后小爱同学用 tts 回答
- 如果上面不可用,可以尝试用手机抓包,https://userprofile.mina.mi.com/device_profile/v2/conversation 找到 cookie 利用
-cookie '${cookie}'
cookie 别忘了用单引号包裹
- 默认用目前 ubus, 如果你的设备不支持 ubus 可以使用
-use_command
来使用 command 来 tts
- 使用
-mute_xiaoai
选项,可以快速停掉小爱的回答
- 使用
-account ${account} --password ${password}
- 如果有能力可以自行替换唤醒词,也可以去掉唤醒词
- 使用
-use_chatgpt_api
的 api 那样可以更流畅的对话,速度特别快,达到了对话的体验, openai api, 命令-use_chatgpt_api
- 使用 gpt-3 的 api 那样可以更流畅的对话,速度快, 请 google 如何用 openai api 命令 --use_gpt3
- 如果你遇到了墙需要用 Cloudflare Workers 替换 api_base 请使用
-api_base ${url}
来替换。 请注意,此处你输入的api应该是'https://xxxx/v1
'的字样,域名需要用引号包裹
- 可以跟小爱说
开始持续对话
自动进入持续对话状态,结束持续对话
结束持续对话状态。
- 可以使用
-tts edge
来获取更好的 tts 能力
- 可以使用
-use_langchain
替代-use_chatgpt_api
来调用 LangChain(默认 chatgpt)服务,实现上网检索、数学运算..
e.g.
使用 git clone 运行
我是用的配置文件方式,步骤如下
打开项目目录,将
xiao_config.json.example
文件复制一份,并改名为xiao_config.json
然后修改其中信息为自己的即可,以下是我的配置文件内容(我使用的ChatGLM,国产的,不需要魔法,ChatGPT同理)
配置内容的说明如下,可以根据自己情况进行调整,来源于官方
参数 | 说明 | 默认值 |
hardware | 设备型号 | ㅤ |
account | 小爱账户 | ㅤ |
password | 小爱账户密码 | ㅤ |
openai_key | openai的apikey | ㅤ |
serpapi_api_key | serpapi的key 参考 SerpAPI | ㅤ |
glm_key | chatglm 的 apikey | ㅤ |
bard_token | bard 的 token 参考 Bard-API | ㅤ |
cookie | 小爱账户cookie (如果用上面密码登录可以不填) | ㅤ |
mi_did | 设备did | ㅤ |
use_command | 使用 MI command 与小爱交互 | false |
mute_xiaoai | 快速停掉小爱自己的回答 | true |
verbose | 是否打印详细日志 | false |
bot | 使用的 bot 类型,目前支持gpt3,chatgptapi和newbing | chatgptapi |
tts | 使用的 TTS 类型( mi | edge |
tts_voice | TTS 的嗓音 | zh-CN-XiaoxiaoNeural (edge) |
prompt | 自定义prompt | 请用100字以内回答 |
keyword | 自定义请求词列表 | ["请"] |
change_prompt_keyword | 更改提示词触发列表 | ["更改提示词"] |
start_conversation | 开始持续对话关键词 | 开始持续对话 |
end_conversation | 结束持续对话关键词 | 结束持续对话 |
stream | 使用流式响应,获得更快的响应 | false |
proxy | 支持 HTTP 代理,传入 http proxy URL | "" |
gpt_options | OpenAI API 的参数字典 | {} |
bing_cookie_path | NewBing使用的cookie路径,参考这里获取 | 也可通过环境变量 COOKIE_FILE 设置 |
bing_cookies | NewBing使用的cookie字典,参考这里获取 | ㅤ |
deployment_id | Azure OpenAI 服务的 deployment ID | |
api_base | 如果需要替换默认的api,或者使用Azure OpenAI 服务 | 例如: https://abc-def.openai.azure.com/ |
启动🚀
在项目目录下,执行如下命令,
输出如上内容就可以开始和小爱对话了,使用请开头的将会发送一份给ChatGPT,小爱会回答来自于ChatGPT的内容。
可以看到,小爱的回答答非所问,ChatGLM可以回答最新的新闻信息。
注意事项
目前已知 LX04、X10A 和 L05B L05C 可能需要使用-use_command
,否则可能会出现终端能输出GPT的回复但小爱同学不回答GPT的情况
我使用的是
结尾
以上就是小爱同学的进化之旅,玩玩还是可以的,如果没有魔法,可以接入国产ChatGLM,也是不错的,不过ChatGLM好像没有流式输出?需要等待响应结束后,小爱才会朗读回答。当然作者也一直在增加不同AI类型的支持,大家可以关注下这个仓库。还有个问题就是在屏蔽原生小爱回答上,我这个型号的小爱屏蔽不是很彻底,大家可以试试自己的。
至此完结🎉