【啟動AI Maker世代 】2024 MAI 開發者社群大會(5/16-17)
|

Arduino IoT Cloud也搭上了ChatGPT熱潮!

   

作者:陸向陽

Arduino IoT Cloud開始與ChatGPT連線運作(圖片來源:Arduino官網)

近期ChatGPT如雷貫耳,已經不用筆者多解釋,但ChatGPT與創客的最愛Arduino扯上關係,倒是值得關注一下,是怎樣扯上關係呢?

這主要是有人發起一個專案,專案就放在Arduino官方的Project Hub上,該專案可以讓Arduino IoT Cloud雲端服務與ChatGPT溝通互動,中間則透過一片開發板轉介訊息,開發板可以是任何已經與Arduino IoT Cloud雲端服務相容的板子,例如Arduino Nano RP2040 Connect、Arduino MKR WiFi 1010或任何以ESP32/ESP8266為主控晶片的開發板。

一步一步建立連線

要讓Arduino IoT Cloud與ChatGPT溝通互動,還要一些前置準備,首先要到OpenAI公司的網站上申請一個帳號,進而建立一組API金鑰,然後線上刷信用卡付費儲值,儲存一些等待被耗用的token(有時翻譯成令牌),一旦跟ChatGPT文字對話就會開始耗,印象中1,000個token需要0.002美元。

接著,Arduino IoT Cloud網站上要有帳號可以登入,然後建立一個裝置(Device)、建立一個事物(Thing)、設定變數等,而後把裝置與事物關聯起來,以及把裝置設成可透過Wi-Fi連線。

在Arduino IoT Cloud上設定變數(圖片來源:Arduino官網)

再來,開發板上要執行程式(sketch),程式其實已經有範例可用,在專案網站上可以找到,但有一些地方需要改,例如與API金鑰相關的部份要改,進一步的細部修改則可以限定ChatGPT回答的最多字數,以免token的耗用速度失控,這需要改範例程式中的maxTokens變數。

關於token,無論是問(人工打字輸入)或答(ChatGPT回覆)都會耗用的,但輸入既然是人,人可以自我克制來節約使用token,但ChatGPT的回話可能一長串,導致過度耗用token,故需要事先限制。

如果想連輸入的文字也先行計算會使用多少token,其實OpenAI也提供一個線上工具Tokenizer可以試算,例如筆者打:如何買彩券?Tokenizer就回覆我共計用了6個字元,等同於14個token;或筆者打:台灣今年有沒有颱風來?則為11個字元、28個token。token涉及ChatGPT如何拆字解析等機理,在此難以詳述。

OpenAI提供Tokenizer工具供人事先計算輸入的問句會耗去多少個token(圖片來源:OpenAI官網)

或者,也可以改用其他的API端點,這需要改apiEndpoint變數;或者也可以改變使用的語言模型,這需要調整OpenAImodel變數。另外Arduino IoT Cloud上也要建立一個儀表板(dashboard)好用來觀看問答資訊。

附註:上述的相關工作,例如建立裝置、事物、儀表板等,覺得逐一手動操作完成很累,也可以用Arduino CLI命令列方式來完成。

Arduino IoT Cloud上的儀表板觀看ChatGPT問答記錄(圖片來源:Arduino官網)

附帶一提,也不一定要死守在桌機筆電前用瀏覽器來對ChatGPT打字,Arduino官方過往即有一個手機App,即Arduino IoT Cloud Remote,將App安裝於AndroidiPhone手機上就可以用手機輸入文字,然後獲得ChatGPT回覆。

此外,範例程式其實也刻意設計成開發板上的LED燈號每2秒閃爍一次,好告訴使用者板子還活著、還在動作,而不是掛掉無回應(有時問跟答都需要一段反應時間,過久沒回應會真的以為停擺了),如果嫌這個燈號礙眼,也可以事先修改範例程式,將這段功能關閉。

目前只是打地基

講到這裡,各位可能覺得上述作法有點脫褲子放屁,乾脆讓Arduino IoT Cloud直通OpenAI的ChatGPT就好,畢竟兩套服務系統都在雲端,中間何必又經過一片Arduino開發板呢?

其實這是個布局,這個專案目前把Arduino IoT Cloud雲端服務,當成是開發板暫時借用的輸出輸入界面,輸入是在雲端上打字,觀看回覆的輸出也是在雲端上觀看,而更下一步是在開發板上建立更親和的輸入方式,例如接上麥克風與配置語音辨識軟體,如此就可以用發話方式,將語音轉成文字傳給ChatGPT。

反過來,開發板後續可以接上顯示器,ChatGPT的回覆可以透過顯示器輸出,不一定要再透過筆電或手機觀看。或者,也可以透過喇叭與文字轉語音功能,直接用發話方式告知詢問者,如此就形同打造一個Amazon Echo系列智慧喇叭,只是連到雲端的部份不是使用Alexa,而是ChatGPT。同理,也類似使用Google Nest系列喇叭與Google Assistant,或者Apple的HomePod mini與Siri。

事實上確實已有其他專案具備顯示器來顯示ChatGPT回覆的資訊,運用一片128 x 64解析度的OLED顯示器來顯示,開發板則是一片GIGA R1 WiFi,控制程式則用MicroPython撰寫成。

用SSD1315的OLED顯示器來顯示ChatGPT回覆的文字(圖片來源:Arduino官網)

最後,筆者估計未來會有愈來愈多專案用類似的發展手法,只要不是很嚴格要求立即反應的輸入與輸出,都會先用Arduino IoT Cloud或類似的雲端服務來暫時充當開發的輸出入介面,先得到概念驗證(POC),等確實可行後,再給開發板裝配上真的輸出入硬體、人機互動介面等設計,類似的雲端先行開發驗證手法也已經用於一些晶片設計、車用資訊系統設計,看來往後雲端服務與技能對創客而言將愈來愈重要。

(責任編輯:謝嘉洵)

陸向陽
陸向陽

Author: 陸向陽

從電子科系畢業後,即以媒體人的角色繼續這段與「電子科技」的不解之緣。歷任電子技術專書作者、電子媒體記者、分析師等角色,並持續寫作不殆。近來投入Arduino、Raspberry Pi等開放硬體的研究與教程介紹。

Share This Post On
468 ad

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *