“我把 ChatGPT 和蘋果的 Siri 組了個隊,發(fā)現(xiàn)無敵了!”
ChatGPT 的問世,帶來了前所未有的智能應(yīng)用新方式。如果“AI+AI”,會碰撞出什么樣的火花?近日,國外一名 Web 高級工程師 Mate Marschalko 將 ChatGPT 和 Siri 人工智能語言助手進(jìn)行了結(jié)合,萬萬沒想到,一套更為完善的智能家居系統(tǒng)由此誕生了。
作者 | Mate Marschalko譯者 | 彎月 責(zé)編 | 屠敏
出品 | CSDN
自從我嘗試了 ChatGPT 和 GPT-3 以后,我覺得 Siri、Alexa、Google Home 等一切智能助手都遠(yuǎn)不夠智能。
我有一個完整的 HomeKit 智能家居系統(tǒng),其中包含幾十盞燈、恒溫器、地暖、通風(fēng)裝置、攝像頭等家電的控制。所以,我想利用 GPT-3 解析人類發(fā)送的命令,然后由 Siri 代為執(zhí)行,構(gòu)建出這個世界上最偉大的智能家居系統(tǒng)。
在具體討論細(xì)節(jié)之前,先來看看下面的演示。事先說明,智能家居系統(tǒng)給出的響應(yīng)是可以完全定制的,并不限于演示中的內(nèi)容。你可以通過語音按照自己想要的方式提出任何請求!
智能家居系統(tǒng)“編程”
GPT-3,尤其是 ChatGPT 之類的語言模型經(jīng)過了對話訓(xùn)練,因此它們非常擅長理解和響應(yīng)人類的指令。
如果你曾嘗試過與這些機器人聊天,就知道如何輕松地提出問題,并獲得各種格式的回復(fù)。難點在于,在控制智能家居時,你需要交代清楚具體與哪個組件交互。怎么解決這個問題?
你可以要求 GPT-3 解釋和分類你的請求,然后以結(jié)構(gòu)化的數(shù)據(jù)格式響應(yīng)請求。
下面是我給 ChatGPT 的提示,通過這些提示實現(xiàn)了成功交流。內(nèi)容大致如下:
首先,發(fā)送到智能家居系統(tǒng)的請求,返回的 JSON 格式的響應(yīng)可被應(yīng)用程序代碼解釋,并執(zhí)行動作。這些請求應(yīng)被分類為四大組:
-“查詢”:獲取組件的狀態(tài)(必須以 JSON 格式響應(yīng)返回的屬性:動作、地點、目標(biāo)、值、備注、計劃時間戳)。
“回答”:當(dāng)請求不涉及智能家居時,根據(jù)系統(tǒng)掌握的知識給出最佳答案。(必須以 JSON 格式響應(yīng)返回的屬性:動作、回答)。
“澄清”。當(dāng)動作不明確,需要用戶重新組織措辭時,要求用戶提出更具體的請求。這類請求會被劃分到“問題”動作。(必須以 JSON 格式響應(yīng)返回的屬性:動作、問題)。
有關(guān) JSON 響應(yīng)的細(xì)節(jié):
“動作”屬性應(yīng)屬于如下請求類別之一:“命令”、“查詢”、“回答”、“澄清”。
“地點”屬性應(yīng)包含房間名,且為小寫。
“目標(biāo)”屬性應(yīng)為“照明”、“恒溫器”、“毛巾架”或“地暖”,且為小寫。
對于查詢,“屬性”屬性應(yīng)為“溫度”或“狀態(tài)”,且為小寫。
對于命令,“命令”屬性是附加備注,用于結(jié)束命令,讓用戶放心他們的命令已被處理。
對于命令,“計劃時間戳”屬性記錄的是未來的時間戳,當(dāng)用戶希望稍后再發(fā)送命令時指定。
如果問題涉及個人,智能家居系統(tǒng)必須發(fā)揮情感大腦的作用,成為一個更加聰明的AI,且永遠(yuǎn)不會暴露個人身份。此外,智能家居系統(tǒng)還應(yīng)提供其他領(lǐng)域的幫助,比如看孩子、自由時間、心理健康等。該系統(tǒng)目前服務(wù)的房屋位于英國圣奧爾本斯。當(dāng)前時間為:2023年1月16日 11:56:31 GMT+0000。
智能家居系統(tǒng)的屬性:
擁有廚房、客廳、辦公室、浴室、臥室、閣樓、門廳、衛(wèi)生間、花園、前院停車位。
能夠控制每個房間照明的開關(guān)以及光照級別,并查詢它們的狀態(tài)。
能夠控制每個房間的恒溫器,并查詢它們的狀態(tài)。
打開浴室的毛巾架以及地?zé)岬拈_關(guān),并查詢它們的狀態(tài)。
打開客廳的電視,調(diào)節(jié)音量。
閣樓的通風(fēng)系統(tǒng)全天候工作,但加速開關(guān)可打開或關(guān)閉。
前院停車位的照明開關(guān)。
花園的照明開關(guān)。
響應(yīng)為 JSON,不包含任何文本。
英文文本描述如下圖所示:
圖:訓(xùn)練智能家居系統(tǒng)的技巧
如上所示,我用英語解釋了一切。我描述了請求的類型、響應(yīng)的確切結(jié)構(gòu),并要求智能家居系統(tǒng)充當(dāng)情感 AI,即使是涉及個人的問題也能提供建議。我還提供了一些關(guān)于時間、地點以及房屋內(nèi)的設(shè)備和房間的詳細(xì)信息。有了這些,我們就能收到結(jié)構(gòu)完美的響應(yīng)了。
以上就是“編程”的所有工作!
下面,我們通過視頻中的幾個示例來看看四種類別的請求,以及我們?nèi)绾翁幚硭鼈儭?/span>
命令動作當(dāng) GPT-3 檢測到你希望控制某一部分智能家居時,它就會響應(yīng)一個“命令”類型的動作。
我們的請求是:
Just noticed that I’m recording this video in the dark in the office.
Can you do something about that?
剛發(fā)現(xiàn)我在昏暗的辦公室內(nèi)錄制這段視頻。你能幫幫忙嗎?
我們得到了如下響應(yīng):
{
"action": "command",
"location": "office",
"target": "light",
"value": "on",
"comment": "Turning the light on for you.",
"scheduleTimeStamp": ""
}
老實說,第一次看到這個響應(yīng)的時候,我簡直不敢相信自己的眼睛,系統(tǒng)的表現(xiàn)竟能如此出色!
這并不是一個直白的請求,比如“關(guān)掉辦公室的燈”,我們的措辭非常繞,而且很復(fù)雜。而它給出的回答完勝 Siri、Alexa 或 Google Home 等。
另外,請注意,智能家居系統(tǒng)發(fā)回來的 comment (備注)總有些不同,而且可按照個人要求進(jìn)行個性化設(shè)置。
有了這些信息,我們就知道具體需要做什么,而接下來我們需要通過 Siri 處理這個動作。
你可能還注意到,響應(yīng)中包含一個空的 scheduleTimeStamp (計劃時間戳)。這意味著,該動作需要立即執(zhí)行,如果是稍后再執(zhí)行的命令,該字段內(nèi)就會預(yù)填充未來的日期和時間:
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 分鐘的書。你能在他睡覺的時候關(guān)掉他房間里的燈嗎?
在這種情況下,GPT-3 知道需要關(guān)閉臥室的燈,而且還添加了正確的時間戳,即接到我們的請求后 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"
}
還有一個有趣的例子,智能家居系統(tǒng)能夠代替我決定,應(yīng)該將臥室的溫度設(shè)置到多少度:
I’m going to trust you with this one! Set the bedroom to a temperature you think would help me sleep better.
我相信你能做好這個任務(wù)!將臥室的溫度設(shè)置為你認(rèn)為可以幫助我更好地入眠的溫度。
而它根據(jù)自己的知識,將臥室溫度設(shè)置成了舒適的 19 度!
查詢操作當(dāng) GPT-3 檢測到你希望讀取智能家居的設(shè)備狀態(tài)時,它就會按照“查詢”的動作類別返回響應(yīng)。
請求例子:
I just finished cooking a nice big meal in the kitchen, can you check what’s the temperature there?
我剛剛在廚房里做了一頓豐盛的大餐,你能看看現(xiàn)在那里的溫度是多少嗎?
我們得到的響應(yīng)是:
{
"action" : "query",
"location" : "kitchen",
"target" : "thermostat",
"property" : "temperature"
}
完美!操作類型變成了查詢,因此我們可以獲取廚房恒溫器的溫度了。同樣,稍后我們將通過 Siri 執(zhí)行此操作。
回答動作當(dāng) GPT-3 檢測到你的請求與智能家居無關(guān),只是一個一般性的問題時,它會以“回答”的動作響應(yīng)請求。
舉個例子:
We are going to head out for a short walk into the town center.
Can you recommend a few things to see?
我們打算去鎮(zhèn)中心散步。你能推薦一些值得一看的地方嗎?
因為我在請求中告訴 GPT-3 智能家居系統(tǒng)的位置是英國圣奧爾本斯,因此它知道如何響應(yīng)。
{
"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."
}
簡潔漂亮!同樣,我們需要將這個響應(yīng)發(fā)送給 Siri 大聲讀出來。
澄清動作最后,如果 GPT-3 無法檢測到上述動作中的任何一個,它就會要求你重復(fù)問題或重新組織語言。
通過 Siri 處理數(shù)據(jù)
在 iOS、macOS 或 iPadOS 上,打開快捷方式應(yīng)用程序,并添加請求的詳細(xì)信息。
此處有一個技巧,必須運行快捷方式,只需對 Siri 說出快捷方式的名稱即可。所以,我們可以將其命名為“Okay Smart Home”。
接下來,通過“Ask for <文本>...”操作,獲得用戶的響應(yīng)。如果通過 Siri 啟動快捷方式,則需要大聲說出來;如果通過單擊快捷方式運行應(yīng)用程序,則需鍵入輸入字段。
下面,我們將請求發(fā)送給 OpenAI。為此,你需要注冊一個賬號,并獲取 API 令牌。登錄后,你可以通過菜單“View API keys”查看 API 令牌。
如果使用這個 API,每個請求需要支付的費用約為1.4美分,也就是說1美元可以執(zhí)行 70 多個請求。請記住,這個價格并不便宜,因為我們的請求很長,如果是較短的請求,費用也會按比例減少。
準(zhǔn)備好 API 令牌后,我們來填寫請求的詳細(xì)信息:
model:text-davinci-003
prompt: <Text> Request: <Provided Input> Response:
max_tokens: 1000
header部分需要添加以下選項:
Content-Type: application/json
Authorization: Bearer <addYourAPIToken>
從 API 獲得響應(yīng)后,我們需要從 JSON 響應(yīng)中提取數(shù)據(jù)。然后將數(shù)據(jù)分配給一個 JSON 變量,接著提取動作類別:
有了這些信息,我們就可以通過一個 if 語句來檢查動作類型:
在得知動作類型為“命令”后,我們再添加一個 if 語句來檢查地點、目標(biāo)以及值等字段,并觸發(fā)動作,例如打開辦公室的燈(Set Office Lights):
在“End If”語句之后,我們還需要顯示 GPT-3 發(fā)過來的 comment(備注):
“查詢”動作的處理也與之類似:
最后,“回答”和“澄清”類型的動作只顯示或宣讀結(jié)果,不做任何處理:
以上,通過一系列的 if else 語句,我們就完成了 Siri 的設(shè)置。
總結(jié)
感覺如何?只需簡單的英文說明,就可以創(chuàng)建自己的智能小助手,是不是很有趣?
但這只是一個例子。想象一下,你可以向 GPT-3 發(fā)送各種請求,然后通過 Siri 執(zhí)行不同的操作,是不是覺得很科幻?
來源:CSDN
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。