【CSDN 編者按】ChatGPT 的問世,帶來了前所未有的智慧應用新方式。如果“AI+AI”,會碰撞出什麼樣的火花?近日,國外一名 Web 高階工程師 Mate Marschalko 將 ChatGPT 和 Siri 人工智慧語言助手進行了結合,萬萬沒想到,一套更為完善的智慧家居系統由此誕生了。
原文連結:https://matemarschalko。medium。com/chatgpt-in-an-ios-shortcut-worlds-smartest-homekit-voice-assistant-9a33b780007a
宣告:本文為 CSDN 翻譯,未經允許,禁止轉載。
作者 | Mate Marschalko譯者 | 彎月 責編 | 屠敏
出品 | CSDN(ID:CSDNnews)
自從我嘗試了 ChatGPT 和 GPT-3 以後,我覺得 Siri、Alexa、Google Home 等一切智慧助手都遠不夠智慧。
我有一個完整的 HomeKit 智慧家居系統,其中包含幾十盞燈、恆溫器、地暖、通風裝置、攝像頭等家電的控制。所以,我想利用 GPT-3 解析人類傳送的命令,然後由 Siri 代為執行,構建出這個世界上最偉大的智慧家居系統。
在具體討論細節之前,先來看看下面的演示。事先說明,智慧家居系統給出的響應是可以完全定製的,並不限於演示中的內容。你可以透過語音按照自己想要的方式提出任何請求!
智慧家居系統“程式設計”
GPT-3,尤其是 ChatGPT 之類的語言模型經過了對話訓練,因此它們非常擅長理解和響應人類的指令。
如果你曾嘗試過與這些機器人聊天,就知道如何輕鬆地提出問題,並獲得各種格式的回覆。難點在於,在控制智慧家居時,你需要交代清楚具體與哪個元件互動。怎麼解決這個問題?
你可以要求 GPT-3 解釋和分類你的請求,然後以結構化的資料格式響應請求。
下面是我給 ChatGPT 的提示,透過這些提示實現了成功交流。內容大致如下:
首先,傳送到智慧家居系統的請求,返回的 JSON 格式的響應可被應用程式程式碼解釋,並執行動作。這些請求應被分類為四大組:
-“查詢”:獲取元件的狀態(必須以 JSON 格式響應返回的屬性:動作、地點、目標、值、備註、計劃時間戳)。
“回答”:當請求不涉及智慧家居時,根據系統掌握的知識給出最佳答案。(必須以 JSON 格式響應返回的屬性:動作、回答)。
“澄清”。當動作不明確,需要使用者重新組織措辭時,要求使用者提出更具體的請求。這類請求會被劃分到“問題”動作。(必須以 JSON 格式響應返回的屬性:動作、問題)。
有關 JSON 響應的細節:
“動作”屬性應屬於如下請求類別之一:“命令”、“查詢”、“回答”、“澄清”。
“地點”屬性應包含房間名,且為小寫。
“目標”屬性應為“照明”、“恆溫器”、“毛巾架”或“地暖”,且為小寫。
對於查詢,“屬性”屬性應為“溫度”或“狀態”,且為小寫。
對於命令,“命令”屬性是附加備註,用於結束命令,讓使用者放心他們的命令已被處理。
對於命令,“計劃時間戳”屬性記錄的是未來的時間戳,當用戶希望稍後再發送命令時指定。
如果問題涉及個人,智慧家居系統必須發揮情感大腦的作用,成為一個更加聰明的AI,且永遠不會暴露個人身份。此外,智慧家居系統還應提供其他領域的幫助,比如看孩子、自由時間、心理健康等。該系統目前服務的房屋位於英國聖奧爾本斯。當前時間為:2023年1月16日 11:56:31 GMT+0000。
智慧家居系統的屬性:
擁有廚房、客廳、辦公室、浴室、臥室、閣樓、門廳、衛生間、花園、前院停車位。
能夠控制每個房間照明的開關以及光照級別,並查詢它們的狀態。
能夠控制每個房間的恆溫器,並查詢它們的狀態。
開啟浴室的毛巾架以及地熱的開關,並查詢它們的狀態。
開啟客廳的電視,調節音量。
閣樓的通風系統全天候工作,但加速開關可開啟或關閉。
前院停車位的照明開關。
花園的照明開關。
響應為 JSON,不包含任何文字。
英文文字描述如下圖所示:
圖:訓練智慧家居系統的技巧
如上所示,我用英語解釋了一切。我描述了請求的型別、響應的確切結構,並要求智慧家居系統充當情感 AI,即使是涉及個人的問題也能提供建議。我還提供了一些關於時間、地點以及房屋內的裝置和房間的詳細資訊。有了這些,我們就能收到結構完美的響應了。
以上就是“程式設計”的所有工作!
不同型別的請求
下面,我們透過影片中的幾個示例來看看四種類別的請求,以及我們如何處理它們。
命令動作
當 GPT-3 檢測到你希望控制某一部分智慧家居時,它就會響應一個“命令”型別的動作。
我們的請求是:
Just noticed that I’m recording this video in the dark in the office。
Can you do something about that?
剛發現我在昏暗的辦公室內錄製這段影片。你能幫幫忙嗎?
我們得到了如下響應:
{
“action”: “command”,
“location”: “office”,
“target”: “light”,
“value”: “on”,
“comment”: “Turning the light on for you。”,
“scheduleTimeStamp”: “”
}
老實說,第一次看到這個響應的時候,我簡直不敢相信自己的眼睛,系統的表現竟能如此出色!
這並不是一個直白的請求,比如“關掉辦公室的燈”,我們的措辭非常繞,而且很複雜。而它給出的回答完勝 Siri、Alexa 或 Google Home 等。
另外,請注意,智慧家居系統發回來的 comment (備註)總有些不同,而且可按照個人要求進行個性化設定。
有了這些資訊,我們就知道具體需要做什麼,而接下來我們需要透過 Siri 處理這個動作。
你可能還注意到,響應中包含一個空的 scheduleTimeStamp (計劃時間戳)。這意味著,該動作需要立即執行,如果是稍後再執行的命令,該欄位內就會預填充未來的日期和時間:
I sent my son to bed to read for another 20 minutes。 Can you switch of the lights in his room when it’s time to sleep?
我讓兒子上床再讀 20 分鐘的書。你能在他睡覺的時候關掉他房間裡的燈嗎?
在這種情況下,GPT-3 知道需要關閉臥室的燈,而且還添加了正確的時間戳,即接到我們的請求後 20 分鐘:
{
“action”: “command”,
“location”: “bedroom”,
“target”: “light”,
“value”: “off”,
“comment”: “Switching the lights off in your son‘s bedroom。”,
“scheduleTimeStamp”: “Mon Jan 16 2023 12:16:31 GMT+0000”
}
還有一個有趣的例子,智慧家居系統能夠代替我決定,應該將臥室的溫度設定到多少度:
I’m going to trust you with this one! Set the bedroom to a temperature you think would help me sleep better。
我相信你能做好這個任務!將臥室的溫度設定為你認為可以幫助我更好地入眠的溫度。
而它根據自己的知識,將臥室溫度設定成了舒適的 19 度!
查詢操作
當 GPT-3 檢測到你希望讀取智慧家居的裝置狀態時,它就會按照“查詢”的動作類別返回響應。
請求例子:
I just finished cooking a nice big meal in the kitchen, can you check what’s the temperature there?
我剛剛在廚房裡做了一頓豐盛的大餐,你能看看現在那裡的溫度是多少嗎?
我們得到的響應是:
{
“action” : “query”,
“location” : “kitchen”,
“target” : “thermostat”,
“property” : “temperature”
}
完美!操作型別變成了查詢,因此我們可以獲取廚房恆溫器的溫度了。同樣,稍後我們將透過 Siri 執行此操作。
回答動作
當 GPT-3 檢測到你的請求與智慧家居無關,只是一個一般性的問題時,它會以“回答”的動作響應請求。
舉個例子:
We are going to head out for a short walk into the town center。
Can you recommend a few things to see?
我們打算去鎮中心散步。你能推薦一些值得一看的地方嗎?
因為我在請求中告訴 GPT-3 智慧家居系統的位置是英國聖奧爾本斯,因此它知道如何響應。
{
“action”: “answer”,
“answer”: “St Albans has a great selection of historical sites and attractions。 The St Albans Cathedral is an impressive sight with its Norman architecture。 The Verulamium Park is also a great place to visit with its Roman ruins and lovely gardens。 For a more modern experience, you can visit the Museum of St Albans or the Alban Arena for a show。”
}
簡潔漂亮!同樣,我們需要將這個響應傳送給 Siri 大聲讀出來。
澄清動作
最後,如果 GPT-3 無法檢測到上述動作中的任何一個,它就會要求你重複問題或重新組織語言。
透過 Siri 處理資料
在 iOS、macOS 或 iPadOS 上,開啟快捷方式應用程式,並新增請求的詳細資訊。
此處有一個技巧,必須執行快捷方式,只需對 Siri 說出快捷方式的名稱即可。所以,我們可以將其命名為“Okay Smart Home”。
接下來,透過“Ask for 。。。”操作,獲得使用者的響應。如果透過 Siri 啟動快捷方式,則需要大聲說出來;如果透過單擊快捷方式執行應用程式,則需鍵入輸入欄位。
下面,我們將請求傳送給 OpenAI。為此,你需要註冊一個賬號,並獲取 API 令牌。登入後,你可以透過選單“View API keys”檢視 API 令牌。
如果使用這個 API,每個請求需要支付的費用約為1。4美分,也就是說1美元可以執行 70 多個請求。請記住,這個價格並不便宜,因為我們的請求很長,如果是較短的請求,費用也會按比例減少。
準備好 API 令牌後,我們來填寫請求的詳細資訊:
model:text-davinci-003
prompt: Request: Response:
max_tokens: 1000
header部分需要新增以下選項:
Content-Type: application/json
Authorization: Bearer
從 API 獲得響應後,我們需要從 JSON 響應中提取資料。然後將資料分配給一個 JSON 變數,接著提取動作類別:
有了這些資訊,我們就可以透過一個 if 語句來檢查動作型別:
在得知動作型別為“命令”後,我們再新增一個 if 語句來檢查地點、目標以及值等欄位,並觸發動作,例如開啟辦公室的燈(Set Office Lights):
在“End If”語句之後,我們還需要顯示 GPT-3 發過來的 comment(備註):
“查詢”動作的處理也與之類似:
最後,“回答”和“澄清”型別的動作只顯示或宣讀結果,不做任何處理:
以上,透過一系列的 if else 語句,我們就完成了 Siri 的設定。
總結
感覺如何?只需簡單的英文說明,就可以建立自己的智慧小助手,是不是很有趣?
但這只是一個例子。想象一下,你可以向 GPT-3 傳送各種請求,然後透過 Siri 執行不同的操作,是不是覺得很科幻?
《2022-2023 中國開發者大調查》重磅啟動,歡迎掃描下方二維碼,參與問卷調研,更有 iPad 等精美大禮等你拿!