奧推網

選單
科技

“我把 ChatGPT 和蘋果的 Siri 組了個隊,發現無敵了!”

【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 等精美大禮等你拿!