让小爱更智能-小爱接入ChatGPT

NotionNext - 2023-12-4
发布于:2023-12-4|最后更新: 2023-12-4|
type
status
date
slug
summary
tags
category
icon
password
 
小爱同学在现在大模型超速发展的背景下,已经不能称之为一个人工智能助手,在小米的大模型未发力前,小爱同学的对话能力始终是有待提高的。本文将介绍通过开源项目将小爱同学接入目前最强人工智能ChatGPT,来提升小爱同学的可玩性。

效果演示

相关地址

  • xiaogpt-使用小米 AI 扬声器播放 ChatGPT 和其他 LLM
xiaogpt
yihong0618Updated Sep 9, 2024
  • MiService-获取小米设备ID
MiService
yihong0618Updated 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)

这里借助作者另一开源项目
MiService
yihong0618Updated Sep 1, 2024
来获取自己的小爱音箱设备ID。
micli list 会列出账号下所有的设备,这里可以通过名称区分出哪一个是小爱音箱的MI_DID。

相关配置

先拉取
xiaogpt
yihong0618Updated Sep 9, 2024
代码,可以使用VsCode打开项目,方便后续配置修改,然后通过pip安装
这里如果网络环境不好,会非常慢,可以自己使用魔法,或者使用阿里的源
等待安装完成后,打开项目目录所在文件夹,我这里通过配置文件启动的,也可以使用官方提供的其他启动方式。
官方非配置文件方式
  • 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 回答
  • 默认用目前 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/

启动🚀

在项目目录下,执行如下命令,
notion image
输出如上内容就可以开始和小爱对话了,使用请开头的将会发送一份给ChatGPT,小爱会回答来自于ChatGPT的内容。
notion image
可以看到,小爱的回答答非所问,ChatGLM可以回答最新的新闻信息。
 
注意事项
目前已知 LX04、X10A 和 L05B L05C 可能需要使用 -use_command,否则可能会出现终端能输出GPT的回复但小爱同学不回答GPT的情况
我使用的是

结尾

以上就是小爱同学的进化之旅,玩玩还是可以的,如果没有魔法,可以接入国产ChatGLM,也是不错的,不过ChatGLM好像没有流式输出?需要等待响应结束后,小爱才会朗读回答。当然作者也一直在增加不同AI类型的支持,大家可以关注下这个仓库。还有个问题就是在屏蔽原生小爱回答上,我这个型号的小爱屏蔽不是很彻底,大家可以试试自己的。
至此完结🎉
本站搭建全过程记录-Notion NextSystemd启动配置常用参数