文章

使用 mi-gpt 将你的小爱音箱接入 ChatGPT

1、前言

(本文基于 mi-gpt 4.1.0 版本)

ChatGPT 刚出来的时候我就在想:我的小爱音箱怎么不能接到大语言模型里啊,这样我就能和它智能对话了,而不是只能对着一个人工智障的小爱天天让它打开空调,雷总发发力啊

结果前几天忽然发现了这么个项目:mi-gpt ,它的介绍是

🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。

哦,原来是雷总还没发发力,就已经有大佬发力了,这我不得赶紧体验下?于是三下五除二,搭好了

mi-gpt 依赖于小米IoT生态开放的接口来对你的音箱进行操作,我们先问问智能的小爱:小米IoT是什么(它这里听成LoT了)

可以看到,它还是挺聪明的

总之我的评价是体验不错,不过缺点也很明显,具体见这里

那么废话不多说,接下来我们正式开始 mi-gpt 的搭建

2、开始搭建 mi-gpt

如果你已有 OpenAI / Azure OpenAI API_KEY,那么可以直接跳过 2.1 的全部步骤,直接开始 2.2

2.1、搭建One API

因为 mi-gpt 需要用到标准的 OpenAI API ,并且 OpenAI / Azure OpenAI API_KEY 对于很多人来说并不容易获得并使用,所以我们可以使用一些境内的大语言模型服务商的接口,通过 One API 转换成标准的 OpenAI API 并使用

由于我只知道腾讯混元大模型和讯飞星火大模型提供了完全免费的子模型(hunyuan-liteSpark Lite),所以这里我只提供这两个大模型的申请和对接教程

2.1.1、申请腾讯混元大模型

首先你需要有一个腾讯云账号,并完成实名

打开 腾讯混元大模型控制台 https://console.cloud.tencent.com/hunyuan ,并开通服务(现在已经下发了 10w Tokens 的资源包供你使用付费版本,只要你没在图中的设置里开启 后付费 就不会扣你的钱)

点击 创建密钥

出现高风险提示先不用管,点击 继续使用 即可

点击 新建密钥

记录下此处的 SecretIdSecretKey

记录下此处的 APPID

此时已经算是申请完成可以使用了,但是出于安全考量,还是建议把这个主账号密钥禁用并删除,创建子账号密钥来使用混元大模型;若是对密钥安全性不敏感,可忽略下面的子账号密钥创建流程

打开 https://console.cloud.tencent.com/cam/user/userType ,点击自定义创建

点击下一步

用户名随意,勾选 编程访问 ,点击下一步

在搜索框中搜索 hunyuan ,勾选 QcloudHunYuanFullAccess ,点击下一步

点击下一步

拉到最下方,点击完成

记录下此处给出的 SecretIdSecretKey ,还有别忘了刚才获取的 APPID

2.1.2、申请讯飞星火大模型

首先你需要打开 https://passport.xfyun.cn/login ,登录讯飞开放平台,并完成实名

打开 https://console.xfyun.cn/app/myapp ,点击创建新应用

随意填写,点击提交

打开 https://xinghuo.xfyun.cn/sparkapi?scr=true ,点击免费领取

选择你刚刚创建的应用,拉到最下面,点击确认下单

现在你获得了1年期的 Spark 3.5Max 的 200w Tokens 资源包,够用很久了

打开 https://console.xfyun.cn/services/cbm ,记录下你的 APPID APISecret APIKey

2.1.3、运行One API

这里我提供三种运行方式,各有优劣,任选其一即可

docker run 运行简单方便,但是多容器不便于管理

docker compose 运行可以把多个容器配置放到同一个 compose.yaml 里,便于统一管理,不过运行单容器没有 docker run 方式那么简单方便

1panel 应用商店 可以一键安装 One API ,并且后续也可以在应用商店里一键更新新版本,但是需要安装 1panel 面板

2.1.3.1、docker run 运行

直接运行如下命令

docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /data/one-api/data:/data justsong/one-api:latest

2.1.3.2、docker compose 运行

依次运行以下命令(若没有curl请自行安装)

mkdir -p /data/one-api
cd /data/one-api
curl -sSLk https://www.minq.cn/one-api.yaml -o compose.yaml
docker compose up -d

2.1.3.3、1panel 应用商店

打开1panel面板,点击应用商店,点击AI/大模型,找到One API,点击安装

这台机器还没有安装mysql,点击去安装

直接点击确认,若提示没有开启端口外部访问直接确定即可

再次点击全部,点击AI/大模型,找到One API,点击安装

下拉,勾选 端口外部访问 ,点击确认

2.1.4、配置One API

我们需要为 One API 配置反向代理并添加HTTPS,这很重要

请自行编写Nginx配置文件或使用面板类产品反代 127.0.0.1:3000 ,这里不再赘述

浏览器打开你反代后的域名 ,进入One API,点击登录

初始用户名和密码分别为 root 123456 ,点击登录

输入新的用户名密码,点击提交,提交完不会跳转到新页面,看到右上角提示成功即可

2.1.4.1、添加腾讯混元大模型渠道

点击 渠道 点击 添加新的渠道

类型选择 腾讯混元

名称随意,密钥按照 Appld|Secretld|SecretKey 的格式和顺序填入前面获取到的 APPID SecretIdSecretKey,用竖线 | 隔开,点击提交

2.1.4.2、添加讯飞星火大模型渠道

点击 渠道 点击 添加新的渠道

类型选择 讯飞星火认知

名称随意,模型版本填写 v1.1 ,这个版本对应的是免费的 Spark Lite ,模型只保留一个 SparkDesk-v1.1 即可,密钥按照 APPID|APISecret|APIKey 的格式和顺序填入前面获取到的 APPID APISecret APIKey,用竖线 | 隔开,点击提交

同理,再添加一个,模型版本填写 v3.5 ,这个版本对应的是你领的那 200w Tokens 资源包的 Spark 3.5 Max ,模型只保留一个 SparkDesk-v3.5 即可,密钥同理

2.1.4.3、添加令牌

在添加令牌之前,我们先测试一下前面添加的渠道是否有效

点击 测试所有渠道,然后刷新页面,显示了新的响应时间就没问题

接下来我们点击 令牌,点击 添加新的令牌

名称随意,点击 设为无限额度,点击提交

直接点击这个令牌上的 复制 ,记录下复制出来的 key(形如 sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

2.2、搭建 mi-gpt

2.2.1、下载配置文件

执行如下命令下载配置文件(若没有curl请自行安装)

mkdir -p /data/mi-gpt
cd /data/mi-gpt
curl -sSLk https://mirror.ghproxy.com/https://raw.githubusercontent.com/idootop/mi-gpt/main/.env.example -o .env
curl -sSLk https://mirror.ghproxy.com/https://raw.githubusercontent.com/idootop/mi-gpt/main/.migpt.example.js -o .migpt.js

2.2.2、修改配置文件

我们需要分别修改 /data/mi-gpt/.env/data/mi-gpt/.migpt.js 这两个文件

2.2.2.1、修改 .env 文件

如果你有 OpenAI 的 API_KEY 的话,那么只需要修改 OPENAI_API_KEY 为你的 API_KEY 即可

如果你有 Azure OpenAI 的 API_KEY的话,那么你需要将 OpenAI 相关的三个变量备注,并将 Azure OpenAI 相关的四个变量取消备注,然后按照提示修改框中的四个变量

如果你跟着我 2.1 的步骤搭建了 One API 的话,那么你需要将 OPENAI_BASE_URL 取消备注并修改为 https://你搭建的one-api的域名/v1 ,注意不要只记得填域名忘记了这个 /v1 ,然后将 OPENAI_API_KEY 修改为你在步骤 2.1.4.3 里获取的 key

最后将 OPENAI_MODEL 修改为你要使用的模型,如果按照我的教程在One API里只添加了 腾讯混元 和 讯飞星火 的话,可选项应该有 hunyuan-lite hunyuan-standard hunyuan-standard-256K hunyuan-pro SparkDesk-v1.1 SparkDesk-v3.5 ,其中 hunyuan-liteSparkDesk-v1.1 分别是腾讯混元 和 讯飞星火的免费模型

现稳定版本和最新开发版版本的One API似乎对腾讯混元的模型和这两个免费模型的支持不太好,所以!强烈建议你先使用SparkDesk-v3.5 !!!毕竟现在似乎稳定点,而且你还领了 200w Tokens 的资源包,不用白不用,这么多够你挥霍好久了!

2.2.2.1、修改 .migpt.js 文件

这里我只介绍一些必改项,其它非必改项请自行查看修改

首先是账号基本信息,你需要填写你的 小米ID 和 密码 ,注意小米ID不是手机号,具体是什么你可以在手机的 设置-小米账号(在整个设置的最上面,带头像的那个设置项)-再点一下在最上面的昵称,查看小米ID

did 是你的小爱音箱的设备名,可以在 米家APP 里看到

然后打开 https://github.com/idootop/mi-gpt/issues/92 ,查看你的小爱音箱对应的一些参数值,并对照着修改 ttsCommand wakeUpCommand playingCommand streamResponse 这几个参数,例如我的 小爱音箱Play增强版 :

2.2.3、运行 mi-gpt

这里我提供两种运行方式,各有优劣,任选其一即可

2.2.3.1、docker run 运行

执行以下命令

docker run -d --name mi-gpt --env-file /data/mi-gpt/.env -v /data/mi-gpt/.migpt.js:/app/.migpt.js idootop/mi-gpt:latest

2.2.3.2、docker compose 运行

依次执行以下命令(若没有curl请自行安装)

cd /data/mi-gpt
curl -sSLk https://www.minq.cn/mi-gpt.yaml -o compose.yaml
docker compose up -d

3、使用

终于搭建完了,接下来我们就可以开始使用接入了ChatGPT的智能的小爱了

先运行以下命令监控容器的日志(非必要,只是为了看日志)

docker logs -f mi-gpt

接下来我们可以问小爱问题了,不过要注意,你说的话要以 .migpt.js 文件的如图配置项里的关键词开头

比如我们先喊 小爱同学 ,然后问一下 :“你知道肠粉怎么做吗”

我的评价是:YYDS

你问我连续对话怎么用?我只能说 我也不知道啊,我这音箱用不了连续对话 T v T

另:后续可能会更新自定义TTS,之所以没写是因为我用不上

License:  CC BY 4.0