让小爱更智能:小爱同学接入ChatGPT
编辑小爱同学在现在大模型超速发展的背景下,已经不能称之为一个人工智能助手,在小米的大模型未发力前,小爱同学的对话能力始终是有待提高的。本文将介绍通过开源项目将小爱同学接入目前最强人工智能ChatGPT,来提升小爱同学的可玩性。
效果演示
相关地址
xiaogpt-使用小米 AI 扬声器播放 ChatGPT 和其他 LLM
https://github.com/yihong0618/xiaogpt
MiService-获取小米设备ID
https://github.com/yihong0618/MiService
OpenAI-ChatGPT
ChatGLM-国产大模型
开始☞
主要实现方式是在本地运行xiaogpt项目,就可实现与小爱的对话。
xiaogpt项目介绍
xiaogpt是一个开源项目,旨在帮助用户将小爱同学与ChatGPT及其他大型语言模型(LLM)相结合。通过这个项目,你可以让小爱同学具备更强大的智能对话能力,为用户提供更加丰富和有趣的互动体验。
目前支持的AI类型如下
准备工作
为了实现小爱同学与ChatGPT的结合,需要准备以下条件:
小米AI音箱
能正常联网的环境或代理
需要安装Python环境,3.8以上
我安装的是Python3.9,如果没有的话可以在官网(https://www.python.org/downloads/) 下载安装,安装时记得添加到环境变量。
获取音箱设备ID(MI_DID)
这里借助作者另一开源项目https://github.com/yihong0618/MiService
来获取自己的小爱音箱设备ID。
# 1.安装
pip3 install -U miservice_fork
# 2.导入环境变量,自己的小米账户和密码,windows电脑,如果安装有git,可以通过Git Bash使用export
export MI_USER=<Username>
export MI_PASS=<Password>
# 3.列出自己的设备
micli list
micli list
会列出账号下所有的设备,这里可以通过名称区分出哪一个是小爱音箱的MI_DID。
相关配置
先拉取https://github.com/yihong0618/xiaogpt 代码,可以使用VsCode打开项目,方便后续配置修改,然后通过pip安装
pip install -U --force-reinstall xiaogpt
这里如果网络环境不好,会非常慢,可以自己使用魔法,或者使用阿里的源
# 使用阿里源
pip install library -i <http://mirrors.aliyun.com/pypi/simple/> --trusted-host mirrors.aliyun.com
等待安装完成后,打开项目目录所在文件夹,我这里通过配置文件启动的,也可以使用官方提供的其他启动方式。
官方非配置文件方式
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.
export OPENAI_API_KEY=${your_api_key} xiaogpt --hardware LX06 --use_chatgpt_api # or xiaogpt --hardware LX06 --cookie ${cookie} --use_chatgpt_api # 如果你想直接输入账号密码 xiaogpt --hardware LX06 --account ${your_xiaomi_account} --password ${your_password} --use_chatgpt_api # 如果你想 mute 小米的回答 xiaogpt --hardware LX06 --mute_xiaoai --use_chatgpt_api # 使用流式响应,获得更快的响应 xiaogpt --hardware LX06 --mute_xiaoai --stream # 如果你想使用 gpt3 ai export OPENAI_API_KEY=${your_api_key} xiaogpt --hardware LX06 --mute_xiaoai --use_gpt3 # 如果你想用 edge-tts xiaogpt --hardware LX06 --cookie ${cookie} --use_chatgpt_api --tts edge # 如果你想使用 LangChain + SerpApi 实现上网检索或其他本地服务(目前仅支持 stream 模式) export OPENAI_API_KEY=${your_api_key} export SERPAPI_API_KEY=${your_serpapi_key} xiaogpt --hardware Lx06 --use_langchain --mute_xiaoai --stream --openai_key ${your_api_key} --serpapi_api_key ${your_serpapi_key}
使用 git clone 运行
export OPENAI_API_KEY=${your_api_key} python3 xiaogpt.py --hardware LX06 # or python3 xiaogpt.py --hardware LX06 --cookie ${cookie} # 如果你想直接输入账号密码 python3 xiaogpt.py --hardware LX06 --account ${your_xiaomi_account} --password ${your_password} --use_chatgpt_api # 如果你想 mute 小米的回答 python3 xiaogpt.py --hardware LX06 --mute_xiaoai # 使用流式响应,获得更快的响应 python3 xiaogpt.py --hardware LX06 --mute_xiaoai --stream # 如果你想使用 gpt3 ai export OPENAI_API_KEY=${your_api_key} python3 xiaogpt.py --hardware LX06 --mute_xiaoai --use_gpt3 # 如果你想使用 ChatGLM api python3 xiaogpt.py --hardware LX06 --mute_xiaoai --use_glm --glm_key ${glm_key} # 如果你想使用 google 的 bard python3 xiaogpt.py --hardware LX06 --mute_xiaoai --use_bard --bard_token ${bard_token} # 如果你想使用 LangChain+SerpApi 实现上网检索或其他本地服务(目前仅支持 stream 模式) export OPENAI_API_KEY=${your_api_key} export SERPAPI_API_KEY=${your_serpapi_key} python3 xiaogpt.py --hardware Lx06 --use_langchain --mute_xiaoai --stream --openai_key ${your_api_key} --serpapi_api_key ${your_serpapi_key}
我是用的配置文件方式,步骤如下
打开项目目录,将xiao_config.json.example
文件复制一份,并改名为xiao_config.json
然后修改其中信息为自己的即可,以下是我的配置文件内容(我使用的ChatGLM,国产的,不需要魔法,ChatGPT同理)
{
"hardware": "L05B", # 型号,小爱屁股底下有
"account": "xxxxx", #账号
"password": "xxxxx", #密码
"use_glm": true,
"glm_key": "xxxxxxxxxxxxxxxxxxxxxxx.xxxxx", # ChatGLM的APIkey
"mi_did": "xxxxxx", #之前获取到的小米设备ID DID
"use_command": true,
"mute_xiaoai": true,
"verbose": false,
"bot": "glm",
"tts": "mi",
"edge_tts_voice": "zh-CN-XiaoxiaoNeural",
"prompt": "请用100字以内回答",
"keyword": [
"请"
],
"change_prompt_keyword": [
"更改提示词"
],
"start_conversation": "开始持续对话",
"end_conversation": "结束持续对话",
"stream": false
}
配置内容的说明如下,可以根据自己情况进行调整,来源于官方
参数 | 说明 | 默认值 |
---|---|---|
hardware | 设备型号 | |
account | 小爱账户 | |
password | 小爱账户密码 | |
openai_key | openai的apikey | |
serpapi_api_key | serpapi的key 参考 https://serpapi.com/ | |
glm_key | chatglm 的 apikey | |
bard_token | bard 的 token 参考 https://github.com/dsdanielpark/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路径,参考https://github.com/acheong08/EdgeGPT#getting-authentication-required获取 | 也可通过环境变量 COOKIE_FILE 设置 |
bing_cookies | NewBing使用的cookie字典,参考https://github.com/acheong08/EdgeGPT#getting-authentication-required获取 | |
deployment_id | Azure OpenAI 服务的 deployment ID | 参考这个https://github.com/yihong0618/xiaogpt/issues/347#issuecomment-1784410784 |
api_base | 如果需要替换默认的api,或者使用Azure OpenAI 服务 |
启动🚀
在项目目录下,执行如下命令,
xiaogpt --config xiao_config.json
输出如上内容就可以开始和小爱对话了,使用请开头的将会发送一份给ChatGPT,小爱会回答来自于ChatGPT的内容。
可以看到,小爱的回答答非所问,ChatGLM可以回答最新的新闻信息。
注意事项
目前已知 LX04、X10A 和 L05B L05C 可能需要使用
-use_command
,否则可能会出现终端能输出GPT的回复但小爱同学不回答GPT的情况
我使用的是
结尾
以上就是小爱同学的进化之旅,玩玩还是可以的,如果没有魔法,可以接入国产ChatGLM,也是不错的,不过ChatGLM好像没有流式输出?需要等待响应结束后,小爱才会朗读回答。当然作者也一直在增加不同AI类型的支持,大家可以关注下这个仓库。还有个问题就是在屏蔽原生小爱回答上,我这个型号的小爱屏蔽不是很彻底,大家可以试试自己的。
至此完结🎉
- 23
- 2
-
分享