作者:陸向陽
眾所皆知,運用大型語言模型(LLM)實現的文字交談機器人ChatGPT可以做許多事,例如回答問題、幫人寫文案、幫忙生出一段文字的摘要等,甚至已經有人用它來生成Arduino的程式碼,且在簡單的程式上已經有高完成度的水準,另外寫程式的人有時討厭寫程式的註解,也可以透過相似手法來自動生成註解文字。
開放硬體公司Adafruit Industries,嘗試用ChatGPT生出程式碼
正因為ChatGPT有生程式碼的潛力,所以開放硬體公司Adafruit Industries的擁有者Limor Fried也嘗試用ChatGPT來生出該公司板卡的程式碼,更具體地說,Adafruit公司出品的板卡多會附帶提供該板卡的範例控制程式,以便購買者方便運用該板卡,而這些範例控制程式通常只是整體程式的一小部份,所以通常寫成函式(function)的方式供主程式呼叫使用。
而這些函式因為可以直接驅動硬體板卡的運作,所以也可以稱為驅動程式(driver),且由於Adafruit已經推出非常多的板卡產品,因此也累積眾多的函式,把許多函式集中在一起,就稱為函式庫(library)。
Adafruit的擁有者Limor Fried(綽號Ladyada,有Adafruit/Ada夫人的意思,其實也有尊敬Lady Ada Lovelace的意思,Ada Lovelace是19世紀的英國伯爵夫人,也是名數學家、作家,她發現機械式電腦的運用價值)本身就是一位女性電子電機工程師,所以Adafruit板卡的驅動程式多是由其撰寫的。
不過,撰寫板卡的驅動程式可說是苦差事,各種板卡使用不同的晶片,晶片的基本技術文件稱為datasheet(少有合適的中文翻譯),不同公司的不同晶片,其datasheet格式與內容差異很大。
然後,Adafruit為了方便創客們使用板卡,已經將許多板卡設計成使用Grove或Stemma QT連接器的型態,連接器實際的傳輸介面為I2C介面,所以驅動板卡的驅動程式,也必須寫出I2C協定的動作,才能正確驅動板卡。
所以Ladyada寫出的驅動程式已經非常多,而創客可能一次使用上多個板卡,並且都用I2C介面連接,I2C介面需要給每個連接的裝置正確定址才能使用,否則會因為裝置衝突而無法正常運作,所以Adafruit的驅動程式會遵循一致的風格規範來寫,這裡就稱為Ladyada風格。
這些Ladyada風格的驅動程式已經放在GitHub上供人取用了,稱為Adafruit_BusIO,而ChatGPT最新的訓練模型GPT-4也爬過GitHub上的驅動程式資料了。所以,理論上,ChatGPT只要稍加提示,就可以由它自動生成同樣是Ladyada風格的驅動程式,這樣Ladyada本人就可以輕鬆點了。
用ChatGPT訓練分身:Mini-Limor
Ladyada為了讓自己的撰寫工作輕鬆點,有意用ChatGPT訓練出自己的分身,暫且稱為Mini-Limor(她本名Limor Fried)。
對此第一個目標是要ChatGPT寫出一個用Vishay公司VCNL4020感測器(感測周遭亮度與紅外線)的I2C驅動程式,所以ChatGPT必須先K一下這個感測器的datasheet,作法上是用一個免費的PDF解析外掛程式AI PDF(datasheet通嘗試pdf檔案格式),讓ChatGPT消化吸收一下感測器內有哪些暫存器、該放置什麼值等。
然後Ladyada就開始下各種提示,希望ChatGPT產生對應的驅動程式碼,目標是產生C語言版與Python版。結果是,是可以產生程式碼沒錯,但是也是有錯誤的地方,就如同ChatGPT近期常被人說的幻覺(hallucinate),為了避免錯誤,所以需要人工查核生出的程式碼,結果是,其實跟完全用人工方式撰寫所耗的時間差不多,沒有省時的效果,倒是可以讓Ladyada比較不費撰寫的心神。
雖然初次的嘗試不是很成功,但Ladyada後續可能持續努力嘗試,甚至她已表示類似的方式也能用來生成CircuitPython的程式碼,並可望用於Raspberry Pi Pico上。
結語
最後,用生成式人工智慧(Generative AI, GenAI)方式來產生程式碼,讓人感覺有點偷懶,但時代總是在進步,事實上,今日創客普遍使用的各種板卡,也已經是大幅隱藏電子工程技術細節的,而減少程式碼甚至是完全不用上程式碼,其實也是個大趨勢,稱為Low-Code, No-Code,合稱與簡稱LCNC,目前的LCNC多半是用選按、拖拉放等方式代替撰寫,但未來或許也會更倚賴人工智慧方式生成也說不定。
延伸閱讀:
延伸閱讀
- 創客積木M5Stack加入LLM戰局 - 2024/11/29
- MLPerf大語言模型、生成式AI測項觀察 - 2024/11/27
- Sony強力加持!樹莓派發表專屬AI攝影機 - 2024/10/28