Package: xiaogpt
xiaogpthttps://user-images.githubusercontent.com/15976103/226803357-72f87a41-a15b-409e-94f5-e2d262eecd53.mp4Play ChatGPT and other LLM with Xiaomi AI Speaker支持的 AI 类型GPT3ChatGPTNew BingChatGLMGeminiBard通义千问Windows 获取小米音响DIDpip install miservice_forkset MI_USER=xxxxset MI_PASS=xxxmicli list得到didset MI_DID=xxxx如果获取did报错时，请更换一下无线网络，有很大概率解决问题。一点原理不用 root 使用小爱同学和 ChatGPT 交互折腾记准备ChatGPT id小爱音响能正常联网的环境或 proxypython3.8+使用pip install -U --force-reinstall xiaogpt参考我 fork 的MiService项目 README 并在本地 terminal 跑micli list拿到你音响的 DID 成功别忘了设置 export MI_DID=xxx这个 MI_DID 用runxiaogpt --hardware ${your_hardware} --use_chatgpt_apihardware 你看小爱屁股上有型号，输入进来，如果在屁股上找不到或者型号不对，可以用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 能力可以使用--tts openai来获取 openai tts 能力可以使用--use_langchain替代--use_chatgpt_api来调用 LangChain（默认 chatgpt）服务，实现上网检索、数学运算..e.g.exportOPENAI_API_KEY=${your_api_key}xiaogpt--hardwareLX06--use_chatgpt_api# orxiaogpt--hardwareLX06--cookie${cookie}--use_chatgpt_api# 如果你想直接输入账号密码xiaogpt--hardwareLX06--account${your_xiaomi_account}--password${your_password}--use_chatgpt_api# 如果你想 mute 小米的回答xiaogpt--hardwareLX06--mute_xiaoai--use_chatgpt_api# 使用流式响应，获得更快的响应xiaogpt--hardwareLX06--mute_xiaoai--stream# 如果你想使用 gpt3 aiexportOPENAI_API_KEY=${your_api_key}xiaogpt--hardwareLX06--mute_xiaoai--use_gpt3# 如果你想使用 google 的 geminixiaogpt--hardwareLX06--mute_xiaoai--use_gemini--gemini_key${gemini_key}# 如果你想使用阿里的通义千问xiaogpt--hardwareLX06--mute_xiaoai--use_qwen--qen_key${qwen_key}# 如果你想用 edge-ttsxiaogpt--hardwareLX06--cookie${cookie}--use_chatgpt_api--ttsedge# 如果你想使用 LangChain + SerpApi 实现上网检索或其他本地服务（目前仅支持 stream 模式）exportOPENAI_API_KEY=${your_api_key}exportSERPAPI_API_KEY=${your_serpapi_key}xiaogpt--hardwareLx06--use_langchain--mute_xiaoai--stream--openai_key${your_api_key}--serpapi_api_key${your_serpapi_key}使用 git clone 运行exportOPENAI_API_KEY=${your_api_key}python3xiaogpt.py--hardwareLX06# orpython3xiaogpt.py--hardwareLX06--cookie${cookie}# 如果你想直接输入账号密码python3xiaogpt.py--hardwareLX06--account${your_xiaomi_account}--password${your_password}--use_chatgpt_api# 如果你想 mute 小米的回答python3xiaogpt.py--hardwareLX06--mute_xiaoai# 使用流式响应，获得更快的响应python3xiaogpt.py--hardwareLX06--mute_xiaoai--stream# 如果你想使用 gpt3 aiexportOPENAI_API_KEY=${your_api_key}python3xiaogpt.py--hardwareLX06--mute_xiaoai--use_gpt3# 如果你想使用 ChatGLM apipython3xiaogpt.py--hardwareLX06--mute_xiaoai--use_glm--glm_key${glm_key}# 如果你想使用 google 的 bardpython3xiaogpt.py--hardwareLX06--mute_xiaoai--use_bard--bard_token${bard_token}# 如果你想使用 google 的 geminipython3xiaogpt.py--hardwareLX06--mute_xiaoai--use_gemini--gemini_key${gemini_key}# 如果你想使用阿里的通义千问python3xiaogpt.py--hardwareLX06--mute_xiaoai--use_qwen--qen_key${qwen_key}# 如果你想使用 LangChain+SerpApi 实现上网检索或其他本地服务（目前仅支持 stream 模式）exportOPENAI_API_KEY=${your_api_key}exportSERPAPI_API_KEY=${your_serpapi_key}python3xiaogpt.py--hardwareLx06--use_langchain--mute_xiaoai--stream--openai_key${your_api_key}--serpapi_api_key${your_serpapi_key}config.json如果想通过单一配置文件启动也是可以的, 可以通过--config参数指定配置文件, config 文件必须是合法的 JSON 格式
参数优先级cli args > default > configpython3xiaogpt.py--configxiao_config.json# orxiaogpt--configxiao_config.json或者cpxiao_config.json.examplexiao_config.json
python3xiaogpt.py若要指定 OpenAI 的模型参数，如 model, temporature, top_p, 请在config.json中指定：{..."gpt_options":{"temperature":0.9,"top_p":0.9,}}具体参数作用请参考Open AI API 文档。
ChatGLM文档Bard-API参考配置项说明参数说明默认值可选值hardware设备型号account小爱账户password小爱账户密码openai_keyopenai的apikeyserpapi_api_keyserpapi的key 参考SerpAPIglm_keychatglm 的 apikeygemini_keygemini 的 apikey参考qwen_keyqwen 的 apikey参考bard_tokenbard 的 token 参考Bard-APIcookie小爱账户cookie （如果用上面密码登录可以不填）mi_did设备diduse_command使用 MI command 与小爱交互falsemute_xiaoai快速停掉小爱自己的回答trueverbose是否打印详细日志falsebot使用的 bot 类型，目前支持gpt3,chatgptapi和newbingchatgptapitts使用的 TTS 类型miedge、openaitts_voiceTTS 的嗓音zh-CN-XiaoxiaoNeural(edge),alloy(openai)prompt自定义prompt请用100字以内回答keyword自定义请求词列表["请"]change_prompt_keyword更改提示词触发列表["更改提示词"]start_conversation开始持续对话关键词开始持续对话end_conversation结束持续对话关键词结束持续对话stream使用流式响应，获得更快的响应falseproxy支持 HTTP 代理，传入 http proxy URL""gpt_optionsOpenAI API 的参数字典{}bing_cookie_pathNewBing使用的cookie路径，参考这里获取也可通过环境变量COOKIE_FILE设置bing_cookiesNewBing使用的cookie字典，参考这里获取deployment_idAzure OpenAI 服务的 deployment ID参考这个如何找到deployment_idapi_base如果需要替换默认的api,或者使用Azure OpenAI 服务例如：https://abc-def.openai.azure.com/注意请开启小爱同学的蓝牙如果要更改提示词和 PROMPT 在代码最上面自行更改目前已知 LX04、X10A 和 L05B L05C 可能需要使用--use_command，否则可能会出现终端能输出GPT的回复但小爱同学不回答GPT的情况。这几个型号也只支持小爱原本的 tts.在wsl使用时, 需要设置代理为http://wls的ip:port(vpn的代理端口), 否则会出现连接超时的情况, 详情报错： Error communicating with OpenAIQA用破解么？不用你做这玩意也没用啊？确实。。。但是挺好玩的，有用对你来说没用，对我们来说不一定呀想把它变得更好？PR Issue always welcome.还有问题？提 Issue 哈哈Exception: Errorhttps://api2.mina.mi.com/admin/v2/device_list?master=0&requestId=app_ios_xxx: Login failed@KJZH001这是由于小米风控导致，海外地区无法登录大陆的账户，请尝试cookie登录
无法抓包的可以在本地部署完毕项目后再用户文件夹C:\Users\用户名下面找到.mi.token，然后扔到你无法登录的服务器去若是linux则请放到当前用户的home文件夹，此时你可以重新执行先前的命令，不出意外即可正常登录（但cookie可能会过一段时间失效，需要重新获取）详情请见https://github.com/yihong0618/xiaogpt/issues/332视频教程https://www.youtube.com/watch?v=K4YA8YwzOOADocker常规用法X86/ARM Docker Image:yihong0618/xiaogptdockerrun-eOPENAI_API_KEY=<your-openapi-key>yihong0618/xiaogpt<命令行参数>如dockerrun-eOPENAI_API_KEY=<your-openapi-key>yihong0618/xiaogpt--account=<your-xiaomi-account>--password=<your-xiaomi-password>--hardware=<your-xiaomi-hardware>--use_chatgpt_api使用配置文件xiaogpt的配置文件可通过指定volume /config，以及指定参数--config来处理，如dockerrun-v<your-config-dir>:/configyihong0618/xiaogpt--config=/config/config.json本地编译Docker Imagedockerbuild-txiaogpt.如果在安装依赖时构建失败或安装缓慢时，可以在构建 Docker 镜像时使用--build-arg参数来指定国内源地址：dockerbuild--build-argPIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple-txiaogpt.如果需要在Apple M1/M2上编译x86dockerbuildxbuild--platform=linux/amd64-txiaogpt-x86.第三方 TTS我们目前支持两种第三方 TTS：edge/openaiedge-tts提供了类似微软tts的能力Usage你可以通过参数tts, 来启用它{"tts":"edge","tts_voice":"zh-CN-XiaoxiaoNeural"}查看更多语言支持, 从中选择一个edge-tts--list-voices在容器中使用edge-tts由于 Edge TTS 启动了一个本地的 HTTP 服务，所以需要将容器的端口映射到宿主机上，并且指定本地机器的 hostname:dockerrun-v<your-config-dir>:/config-p9527:9527-eXIAOGPT_HOSTNAME=<yourip>yihong0618/xiaogpt--config=/config/config.json注意端口必须映射为与容器内一致，XIAOGPT_HOSTNAME 需要设置为宿主机的 IP 地址，否则小爱无法正常播放语音。推荐的 forkXiaoBot-> Go语言版本的Fork, 带支持不同平台的UI感谢xiaomiPDM@Yonsm的MiService@pjq给了这个项目非常多的帮助@frostming重构了一些代码，支持了持续会话功能赞赏谢谢就够了