Play ChatGPT and other LLM with Xiaomi AI Speaker
系統和Shell | Linux *sh | Windows CMD用戶 | Windows PowerShell用戶 |
---|---|---|---|
1、安裝包 | pip install miservice_fork | pip install miservice_fork | pip install miservice_fork |
2、設定變數 | export MI_USER=xxx export MI_PASS=xxx | set MI_USER=xxx set MI_PASS=xxx | $env:MI_USER="xxx" $env:MI_PASS="xxx" |
3、取得MI_DID | micli list | micli list | micli list |
4.設定MI_DID | export MI_DID=xxx | set MI_DID=xxx | $env:MI_DID="xxx" |
不用root 使用小愛同學和ChatGPT 互動折騰記
pip install -U --force-reinstall xiaogpt[locked]
micli list
拿到你音響的DID 成功別忘了設定export MI_DID=xxx這個MI_DID 用xiaogpt --hardware ${your_hardware} --use_chatgpt_api
hardware 你看小愛屁股上有型號,輸入進來,如果在屁股上找不到或型號不對,可以用micli mina
找到型號--cookie '${cookie}'
cookie 別忘了用單引號包裹--use_command
來使用command 來tts--mute_xiaoai
選項,可以快速停止小愛的回答--account ${account} --password ${password}
--use_chatgpt_api
的api 那樣可以更流暢的對話,速度特別快,達到了對話的體驗, openai api, 指令--use_chatgpt_api
--api_base ${url}
來替換。請注意,這裡你輸入的api應該是' https://xxxx/v1
'的字樣,網域需要用引號包裹--use_moonshot_api
and other models please refer below开始持续对话
自動進入持續對話狀態,结束持续对话
結束持續對話狀態。--tts edge
來獲得更好的tts 能力--tts fish --fish_api_key <your-fish-key> --fish_voice_key <fish-voice>
來取得fish-audio 能力(如何取得fish voice 見下)--tts openai
來取得openai tts 能力--tts azure --azure_tts_speech_key <your-speech-key>
來取得Azure TTS 能力--use_langchain
替代--use_chatgpt_api
來呼叫LangChain(預設chatgpt)服務,實現上網檢索、數學運算..eg
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
# 如果你想使用 google 的 gemini
xiaogpt --hardware LX06 --mute_xiaoai --use_gemini --gemini_key ${gemini_key}
# 如果你想使用自己的 google gemini 服务
python3 xiaogpt.py --hardware LX06 --mute_xiaoai --use_gemini --gemini_key ${gemini_key} --gemini_api_domain ${gemini_api_domain}
# 如果你想使用阿里的通义千问
xiaogpt --hardware LX06 --mute_xiaoai --use_qwen --qwen_key ${qwen_key}
# 如果你想使用 kimi
xiaogpt --hardware LX06 --mute_xiaoai --use_moonshot_api --moonshot_api_key ${moonshot_api_key}
# 如果你想使用 llama3
xiaogpt --hardware LX06 --mute_xiaoai --use_llama --llama_api_key ${llama_api_key}
# 如果你想使用 01
xiaogpt --hardware LX06 --mute_xiaoai --use_yi_api --ti_api_key ${yi_api_key}
# 如果你想使用 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
# 如果你想使用 ChatGLM api
python3 xiaogpt.py --hardware LX06 --mute_xiaoai --use_glm --glm_key ${glm_key}
# 如果你想使用 google 的 gemini
python3 xiaogpt.py --hardware LX06 --mute_xiaoai --use_gemini --gemini_key ${gemini_key}
# 如果你想使用自己的 google gemini 服务
python3 xiaogpt.py --hardware LX06 --mute_xiaoai --use_gemini --gemini_key ${gemini_key} --gemini_api_domain ${gemini_api_domain}
# 如果你想使用阿里的通义千问
python3 xiaogpt.py --hardware LX06 --mute_xiaoai --use_qwen --qwen_key ${qwen_key}
# 如果你想使用 kimi
xiaogpt --hardware LX06 --mute_xiaoai --use_moonshot_api --moonshot_api_key ${moonshot_api_key}
# 如果你想使用 01
xiaogpt --hardware LX06 --mute_xiaoai --use_yi_api --ti_api_key ${yi_api_key}
# 如果你想使用豆包
python3 xiaogpt.py --hardware LX06 --mute_xiaoai --use_doubao --stream --volc_access_key xxxx --volc_secret_key xxx
# 如果你想使用 llama3
python3 xiaogpt.py --hardware LX06 --mute_xiaoai --use_llama --llama_api_key ${llama_api_key}
# 如果你想使用 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}
如果想透過單一設定檔啟動也是可以的, 可以透過--config
參數指定設定檔, config 檔案必須是合法的Yaml 或JSON 格式參數優先權
python3 xiaogpt.py --config xiao_config.yaml
# or
xiaogpt --config xiao_config.yaml
或者
cp xiao_config.yaml.example xiao_config.yaml
python3 xiaogpt.py
若要指定OpenAI 的模型參數,如model, temporature, top_p, 請在config.yaml 中指定:
gpt_options :
temperature : 0.9
top_p : 0.9
具體參數作用請參考Open AI API 文件。 ChatGLM 文檔
參數 | 說明 | 預設值 | 可選值 |
---|---|---|---|
hardware | 設備型號 | ||
account | 小愛帳戶 | ||
password | 小愛帳戶密碼 | ||
openai_key | openai的apikey | ||
moonshot_api_key | moonshot kimi 的apikey | ||
yi_api_key | 01 wanwu 的apikey | ||
llama_api_key | groq 的llama3 apikey | ||
serpapi_api_key | serpapi的key 參考SerpAPI | ||
glm_key | chatglm 的apikey | ||
gemini_key | gemini 的apikey 參考 | ||
gemini_api_domain | gemini 的自訂網域參考 | ||
qwen_key | qwen 的apikey 參考 | ||
cookie | 小愛帳號cookie (如果用上面密碼登入可以不填) | ||
mi_did | 設備did | ||
use_command | 使用MI command 與小愛交互 | false | |
mute_xiaoai | 快速停止小愛自己的回答 | true | |
verbose | 是否列印詳細日誌 | false | |
bot | 使用的bot 類型,目前支援chatgptapi,newbing, qwen, gemini | chatgptapi | |
tts | 使用的TTS 類型 | mi | edge 、 openai 、 azure 、 volc 、 baidu 、 google 、 minimax |
tts_options | TTS 參數字典,參考tetos 取得可用參數 | ||
prompt | 自訂prompt | 请用100字以内回答 | |
keyword | 自訂請求詞列表 | ["请"] | |
change_prompt_keyword | 更改提示詞觸發列表 | ["更改提示词"] | |
start_conversation | 開始持續對話關鍵字 | 开始持续对话 | |
end_conversation | 結束持續對話關鍵字 | 结束持续对话 | |
stream | 使用串流響應,獲得更快的回應 | true | |
proxy | 支援HTTP 代理,傳入http proxy URL | "" | |
gpt_options | OpenAI API 的參數字典 | {} | |
deployment_id | Azure OpenAI 服務的deployment ID | 參考這個如何找到deployment_id | |
api_base | 如果需要替換預設的api,或使用Azure OpenAI 服務 | 例如: https://abc-def.openai.azure.com/ | |
volc_access_key | 火山引擎的access key 請在這裡獲取 | ||
volc_secret_key | 火山引擎的secret key 請在這裡獲取 |
--use_command
,否則可能會出現終端能輸出GPT的回應但小愛同學不回答GPT的情況。這幾款也只支援小愛原本的tts.C:Users用户名
下面找到.mi.token,然後丟到你無法登入的伺服器去若是linux則請放到目前使用者的home資料夾,此時你可以重新執行先前的指令,不出意外即可正常登入(但cookie可能會過一段時間失效,需要重新獲取)https://www.youtube.com/watch?v=K4YA8YwzOOA
X86/ARM Docker Image: yihong0618/xiaogpt
docker run -e OPENAI_API_KEY= < your-openapi-key > yihong0618/xiaogpt <命令行参数>
如
docker run -e OPENAI_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來處理,如
docker run -v < your-config-dir > :/config yihong0618/xiaogpt --config=/config/config.yaml
docker run -v < your-config-dir > :/config --network=host yihong0618/xiaogpt --config=/config/config.yaml
docker build -t xiaogpt .
如果在安裝依賴時建置失敗或安裝緩慢時,可以在建置Docker 映像時使用--build-arg
參數來指定國內來源位址:
docker build --build-arg PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple -t xiaogpt .
如果需要在Apple M1/M2上編譯x86
docker buildx build --platform=linux/amd64 -t xiaogpt-x86 .
我們目前支援是三種第三方TTS:edge/openai/azure/volc/baidu/google
edge-tts 提供了類似微軟tts的能力azure-tts 提供了微軟azure tts 的能力openai-tts 提供了類似openai tts 的能力fish-tts 提供了fish tts 的能力
你可以透過參數tts
, 來啟用它
tts : edge
For edge 查看更多語言支援, 從中選擇一個
edge-tts --list-voices
e80ea225770f42f79d50aa98be3cedfc
tts : fish
# TTS 参数字典,参考 https://github.com/frostming/tetos 获取可用参数
tts_options : {
" api_key " : " xxxxx " ,
" voice " : " xxxxxx "
}
由於Edge TTS 啟動了一個本地的HTTP 服務,所以需要將容器的連接埠對應到宿主機器上,並且指定本機的hostname:
docker run -v < your-config-dir > :/config -p 9527:9527 -e XIAOGPT_HOSTNAME= < your ip > yihong0618/xiaogpt --config=/config/config.yaml
注意連接埠必須對應為與容器內一致,XIAOGPT_HOSTNAME 需要設定為宿主機的IP 位址,否則小愛無法正常播放語音。
持续会话功能
謝謝就夠了