小愛音箱集成 ChatGPT 的不完全教程。

2023年三月對於金融和科技領域來說,可謂是『冰火兩重天』。矽谷銀行倒閉事件像一枚深水炸彈一樣在金融領域擴散開來,而 OpenAI 則憑借 ChatGPT 這款產品一路『狂飆』,成為當下最負盛名的爆款話題。就在百度推出同類產品『文心一言』的前夕,OpenAI 正式發佈了 GPT-4,直至微軟高調宣佈在 Office 全家桶中集成了 GPT-4,將這場技術狂歡推向高潮。作為一個關注聊天機器人的人,我從大學時期就開始通過 AIML 標記語言構建語料庫,並逐漸接觸 NLP 領域的知識。我認為這一波人工智能的熱度代表了 OpenAI 主張的大語言模型(LLM)的勝利。ChatGPT 雖然始於聊天機器人,但絕不會止於聊天機器人。它的最終形態或許會是鋼鐵俠的智能管家『賈維斯』,抑或是《流浪地球》裡超級人工智能 MOSS。事實上,我日常會用 ChatGPT 寫程序原型、翻譯文本、提取主題/關鍵詞,這段時間更是嘗鮮了智能家居。因此,我想和大家分享一下小愛音箱集成 ChatGPT 的過程。

基本原理

如果你像博主一樣是一名智能家居新手玩家,那麼在正式接觸智能家居之前,你應該至少聽說過 WIFI、ZigBee、BLE 這些名詞。這些是指智能家居中的通信協議,例如小愛音箱可以作為藍牙 Mesh 網關去連接那些使用藍牙通信的設備,而 ZigBee 則是一種短距離、低功耗、支持自組網的無線通信協議。雖然 ZigBee 對外宣稱是一個開放標準,但不同的廠商出於利益考慮,並不完全兼容彼此的設備,離真正的萬物互聯始終還有一段距離。因此,你會發現米家有類似多模網關這樣的產品,現階段的智能家居是一個多種協議混合使用的局面,2C 市場更青睞藍牙和 WIFI 方案,2B 市場更青睞 ZigBee 方案。為了讓更多的設備加入整個智能家居生態,開源的智能家居方案 HomeAssistant 就此誕生。其中的 IFTTT 組件可以擴展出更多的智能玩法;為了讓設備加入蘋果公司的 HomeKit 生態,HomeBridge 這樣一個『曲線救國』的方案就此誕生。可以說,現階段智能家居的高階玩法,基本都是圍繞這兩個平臺展開。作為一名普通的消費者,你並沒有機會去選擇使用哪種協議,更多的是去選擇使用哪一個平臺。

小愛音箱集成 ChatGPT 的不完全教程。Smart Home Protocols: WiFi vs Bluetooth vs ZigBee vs Z-Wave

前面提到 ZigBee 的自組網具有離線可用的特性。與 WIFI 不同,WIFI 需要接入互聯網,一旦斷網就無法對設備進行有效控制,而藍牙和 ZigBee 就沒有這種煩惱。唯一的問題是它們都需要對應的網關。目前,米家的設備控制主要有遠程控制和本地控制兩種方式。遠程控制需要發送指令到米家的服務器,這種方式對小米來說更有利,唯獨不利於實現『萬物互聯』這一偉大遠景。本地控制至少需要一個智能家庭屏或中樞網關,其好處是延遲低、離線可用、保障隱私。從某種角度來說,這與人們開始使用 NAS 搭建私有雲的初衷一致,都是為了更好地保護隱私和數據安全。由於博主不具備本地控制的條件,所以,我們還是采用遠程控制的方案,即通過向米家的服務器發送指令來達到控制設備的目的。在這個過程中,接入 ChatGPT 的 API,再控制小愛音箱將其響應內容朗讀出來。這個方案可以實現遠程控制的同時,利用 ChatGPT 彌補小愛同學『智能』上的不足。如圖所示,下面是一個簡單的示意圖:

米家遠程控制及 ChatGPT 接入示意圖

如何控制米家

接下來,我們來探討如何控制米家設備。米家通過 HTTP 協議實現遠程控制,為此,我們推薦使用兩個非常實用的庫:MiService 和 python-miio。這兩個庫各有優缺點。如果你對米家物聯網協議更感興趣,我們建議使用 python-miio;如果你希望更快、更容易地上手米家智能家居,我們則推薦使用 MiService。從使用方式上來看,MiService 使用 DID 來區分不同的設備,而 python-miio 使用 Token 和 IP 來區分不同的設備。下面,我們以 MiService 為例來演示如何通過編程控制米家設備。

小愛音箱集成 ChatGPT 的不完全教程。網關在整個智能家居中的地位

在開始前,請確保你安裝了 MiService ,你可以選擇下面兩種方式之一進行安裝:

# 從包管理器安裝python -m pip install MiService# 從源代碼安裝git clone [email protected]:Yonsm/MiService.gitcd MiServicepython -m pip install .