博客專欄

EEPW首頁 > 博客 > “我把 ChatGPT 和蘋果的 Siri 組了個(gè)隊(duì),發(fā)現(xiàn)無敵了!”

“我把 ChatGPT 和蘋果的 Siri 組了個(gè)隊(duì),發(fā)現(xiàn)無敵了!”

發(fā)布人:傳感器技術(shù) 時(shí)間:2023-02-03 來源:工程師 發(fā)布文章

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)不夠智能。

我有一個(gè)完整的 HomeKit 智能家居系統(tǒng),其中包含幾十盞燈、恒溫器、地暖、通風(fēng)裝置、攝像頭等家電的控制。所以,我想利用 GPT-3 解析人類發(fā)送的命令,然后由 Siri 代為執(zhí)行,構(gòu)建出這個(gè)世界上最偉大的智能家居系統(tǒng)。

在具體討論細(xì)節(jié)之前,先來看看下面的演示。事先說明,智能家居系統(tǒng)給出的響應(yīng)是可以完全定制的,并不限于演示中的內(nèi)容。你可以通過語音按照自己想要的方式提出任何請求!

,時(shí)長03:30

智能家居系統(tǒng)“編程”


GPT-3,尤其是 ChatGPT 之類的語言模型經(jīng)過了對話訓(xùn)練,因此它們非常擅長理解和響應(yīng)人類的指令。

如果你曾嘗試過與這些機(jī)器人聊天,就知道如何輕松地提出問題,并獲得各種格式的回復(fù)。難點(diǎn)在于,在控制智能家居時(shí),你需要交代清楚具體與哪個(gè)組件交互。怎么解決這個(gè)問題?

你可以要求 GPT-3 解釋和分類你的請求,然后以結(jié)構(gòu)化的數(shù)據(jù)格式響應(yīng)請求。

下面是我給 ChatGPT 的提示,通過這些提示實(shí)現(xiàn)了成功交流。內(nèi)容大致如下:

首先,發(fā)送到智能家居系統(tǒng)的請求,返回的 JSON 格式的響應(yīng)可被應(yīng)用程序代碼解釋,并執(zhí)行動(dòng)作。這些請求應(yīng)被分類為四大組:

  • -“查詢”:獲取組件的狀態(tài)(必須以 JSON 格式響應(yīng)返回的屬性:動(dòng)作、地點(diǎn)、目標(biāo)、值、備注、計(jì)劃時(shí)間戳)。

  • “回答”:當(dāng)請求不涉及智能家居時(shí),根據(jù)系統(tǒng)掌握的知識給出最佳答案。(必須以 JSON 格式響應(yīng)返回的屬性:動(dòng)作、回答)。

  • “澄清”。當(dāng)動(dòng)作不明確,需要用戶重新組織措辭時(shí),要求用戶提出更具體的請求。這類請求會被劃分到“問題”動(dòng)作。(必須以 JSON 格式響應(yīng)返回的屬性:動(dòng)作、問題)。

有關(guān) JSON 響應(yīng)的細(xì)節(jié):

  • “動(dòng)作”屬性應(yīng)屬于如下請求類別之一:“命令”、“查詢”、“回答”、“澄清”。

  • “地點(diǎn)”屬性應(yīng)包含房間名,且為小寫。

  • “目標(biāo)”屬性應(yīng)為“照明”、“恒溫器”、“毛巾架”或“地暖”,且為小寫。

  • 對于查詢,“屬性”屬性應(yīng)為“溫度”或“狀態(tài)”,且為小寫。

  • 對于命令,“命令”屬性是附加備注,用于結(jié)束命令,讓用戶放心他們的命令已被處理。

  • 對于命令,“計(jì)劃時(shí)間戳”屬性記錄的是未來的時(shí)間戳,當(dāng)用戶希望稍后再發(fā)送命令時(shí)指定。

如果問題涉及個(gè)人,智能家居系統(tǒng)必須發(fā)揮情感大腦的作用,成為一個(gè)更加聰明的AI,且永遠(yuǎn)不會暴露個(gè)人身份。此外,智能家居系統(tǒng)還應(yīng)提供其他領(lǐng)域的幫助,比如看孩子、自由時(shí)間、心理健康等。該系統(tǒng)目前服務(wù)的房屋位于英國圣奧爾本斯。當(dāng)前時(shí)間為:2023年1月16日 11:56:31 GMT+0000。

智能家居系統(tǒng)的屬性:

  • 擁有廚房、客廳、辦公室、浴室、臥室、閣樓、門廳、衛(wèi)生間、花園、前院停車位。

  • 能夠控制每個(gè)房間照明的開關(guān)以及光照級別,并查詢它們的狀態(tài)。

  • 能夠控制每個(gè)房間的恒溫器,并查詢它們的狀態(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,即使是涉及個(gè)人的問題也能提供建議。我還提供了一些關(guān)于時(shí)間、地點(diǎn)以及房屋內(nèi)的設(shè)備和房間的詳細(xì)信息。有了這些,我們就能收到結(jié)構(gòu)完美的響應(yīng)了。

以上就是“編程”的所有工作!


不同類型的請求


下面,我們通過視頻中的幾個(gè)示例來看看四種類別的請求,以及我們?nèi)绾翁幚硭鼈儭?/span>

命令動(dòng)作

當(dāng) GPT-3 檢測到你希望控制某一部分智能家居時(shí),它就會響應(yīng)一個(gè)“命令”類型的動(dò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"""
}

老實(shí)說,第一次看到這個(gè)響應(yīng)的時(shí)候,我簡直不敢相信自己的眼睛,系統(tǒng)的表現(xiàn)竟能如此出色!

這并不是一個(gè)直白的請求,比如“關(guān)掉辦公室的燈”,我們的措辭非常繞,而且很復(fù)雜。而它給出的回答完勝 Siri、Alexa 或 Google Home 等。

另外,請注意,智能家居系統(tǒng)發(fā)回來的 comment (備注)總有些不同,而且可按照個(gè)人要求進(jìn)行個(gè)性化設(shè)置。

有了這些信息,我們就知道具體需要做什么,而接下來我們需要通過 Siri 處理這個(gè)動(dòng)作。

你可能還注意到,響應(yīng)中包含一個(gè)空的 scheduleTimeStamp (計(jì)劃時(shí)間戳)。這意味著,該動(dòng)作需要立即執(zhí)行,如果是稍后再執(zhí)行的命令,該字段內(nèi)就會預(yù)填充未來的日期和時(shí)間:

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 分鐘的書。你能在他睡覺的時(shí)候關(guān)掉他房間里的燈嗎?

在這種情況下,GPT-3 知道需要關(guān)閉臥室的燈,而且還添加了正確的時(shí)間戳,即接到我們的請求后 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"
}

還有一個(gè)有趣的例子,智能家居系統(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.

我相信你能做好這個(gè)任務(wù)!將臥室的溫度設(shè)置為你認(rèn)為可以幫助我更好地入眠的溫度。

而它根據(jù)自己的知識,將臥室溫度設(shè)置成了舒適的 19 度!

查詢操作

當(dāng) GPT-3 檢測到你希望讀取智能家居的設(shè)備狀態(tài)時(shí),它就會按照“查詢”的動(dòng)作類別返回響應(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)作

當(dāng) GPT-3 檢測到你的請求與智能家居無關(guān),只是一個(gè)一般性的問題時(shí),它會以“回答”的動(dòng)作響應(yīng)請求。

舉個(gè)例子:

We are going to head out for a short walk into the town center.

Can you recommend a few things to see?

我們打算去鎮(zhèn)中心散步。你能推薦一些值得一看的地方嗎?

因?yàn)槲以谡埱笾懈嬖V 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."
}

簡潔漂亮!同樣,我們需要將這個(gè)響應(yīng)發(fā)送給 Siri 大聲讀出來。

澄清動(dòng)作

最后,如果 GPT-3 無法檢測到上述動(dòng)作中的任何一個(gè),它就會要求你重復(fù)問題或重新組織語言。


通過 Siri 處理數(shù)據(jù)


在 iOS、macOS 或 iPadOS 上,打開快捷方式應(yīng)用程序,并添加請求的詳細(xì)信息。

圖片

此處有一個(gè)技巧,必須運(yùn)行快捷方式,只需對 Siri 說出快捷方式的名稱即可。所以,我們可以將其命名為“Okay Smart Home”。

接下來,通過“Ask for <文本>...”操作,獲得用戶的響應(yīng)。如果通過 Siri 啟動(dòng)快捷方式,則需要大聲說出來;如果通過單擊快捷方式運(yùn)行應(yīng)用程序,則需鍵入輸入字段。

下面,我們將請求發(fā)送給 OpenAI。為此,你需要注冊一個(gè)賬號,并獲取 API 令牌。登錄后,你可以通過菜單“View API keys”查看 API 令牌。

如果使用這個(gè) API,每個(gè)請求需要支付的費(fèi)用約為1.4美分,也就是說1美元可以執(zhí)行 70 多個(gè)請求。請記住,這個(gè)價(jià)格并不便宜,因?yàn)槲覀兊恼埱蠛荛L,如果是較短的請求,費(fèi)用也會按比例減少。

圖片

準(zhǔn)備好 API 令牌后,我們來填寫請求的詳細(xì)信息:

  • model:text-davinci-003

  • prompt: <Text> Request: <Provided Input> Response:

  • max_tokens: 1000

header部分需要添加以下選項(xiàng):

  • Content-Type: application/json

  • Authorization: Bearer <addYourAPIToken>

從 API 獲得響應(yīng)后,我們需要從 JSON 響應(yīng)中提取數(shù)據(jù)。然后將數(shù)據(jù)分配給一個(gè) JSON 變量,接著提取動(dòng)作類別:

圖片

有了這些信息,我們就可以通過一個(gè) if 語句來檢查動(dòng)作類型:

圖片

在得知?jiǎng)幼黝愋蜑椤懊睢焙?,我們再添加一個(gè) if 語句來檢查地點(diǎn)、目標(biāo)以及值等字段,并觸發(fā)動(dòng)作,例如打開辦公室的燈(Set Office Lights):

圖片

在“End If”語句之后,我們還需要顯示 GPT-3 發(fā)過來的 comment(備注):

圖片

“查詢”動(dòng)作的處理也與之類似:

圖片

最后,“回答”和“澄清”類型的動(dòng)作只顯示或宣讀結(jié)果,不做任何處理:

圖片

以上,通過一系列的 if else 語句,我們就完成了 Siri 的設(shè)置。


總結(jié)


感覺如何?只需簡單的英文說明,就可以創(chuàng)建自己的智能小助手,是不是很有趣?

但這只是一個(gè)例子。想象一下,你可以向 GPT-3 發(fā)送各種請求,然后通過 Siri 執(zhí)行不同的操作,是不是覺得很科幻?

來源:CSDN


*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。



關(guān)鍵詞: ChatGPT

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉