如何客製化企業 RAG 知識庫?— 從資料庫到知識整合的實戰技術
|

【學習程式新工具】用MS Copilot 生成 micro:bit 感測器程式碼

   

作者:Ted Lee

筆者初學語法程式設計(例如:Python),必從一字一句慢慢地敲入電腦裡。再經編譯(compile)、除錯(debug)、再編譯、再除錯、……,不斷地反覆修改之後完成一個新版本的軟體。然而,自從 2022 年 10 月 ChatGPT 上線後,輸入文字就幾乎能生成出任何我們能想像到的形式的內容──當然,生成程式碼當然更不是問題!
再進一步思考:如果能把腦袋想的內容描敘給 ChatGPT,然後再由它產生出可以讓電腦處理的控制指令的話,我們是否就不需要再學任何程式語言(programming languages)了呢?

當然,想像總是美好的。AI 電腦程式是否能準確地生出人類腦袋思考的流程呢?如果我們回到真實的人類社會,人際之間靠語言溝通都可能發生誤解,更何況要把複雜的人腦思維用來指揮更簡化的電腦硬體來執行呢?

為了測試 ChatGPT 能否協助我們更有效的學習電腦程式語言,我們選用了 MS Copilot[2] 來生成第二版 micro:bit[3] 板載(on-board)六種感測器(圖 1)中的三種感測器(溫度感測、商標(logo)觸碰感測與磁力感測)的程式碼。然後在 V3 版的小彼特 Python Editor上驗證之。

圖 1:小彼特板載的六種環境感測器

溫度感測

在小彼特主板正面的 5×5 LED 點矩陣( 圖 1)兼俱發光、亮度感測、溫度感測和三用。

我們在 Copilot 下達 RTF 咒語(Role-Task-Format prompt):

你是 micro:bit 高手,產生溫度感測的 micro:bit Python V3 版的範例程式,程式碼要有詳細的註解

圖 2:Copilot 生成溫度感測程式碼

Copilot 生成的程式碼如圖 3 所示。我們發現第 7 行出現了語法錯誤(syntax error)的錯誤訊息。這要怎麼解決呢?

圖 3:在小彼特 Python Editor 上驗證 Copilot 生成的程式碼

我們決定把錯誤丟回給 Copilot 去面對:

temperature = temperature() 出現 Object is not callable

於是,Copilot 修正自己剛剛生成的程式碼錯誤──變數 temperature 和函式 temperature() 同名:

變數名稱,與函數名稱衝突


temp = temperature()

最後,修正完成的程式碼如圖 4 所示。讀者們可以自行將之上傳到 V2 版的小彼特上做實機測試!

圖 4:Copilot 自我修正過後的程式碼

為了更進一步地理解 Copilot 生成的程式碼,我們將圖 4 丟進 Chat Everywhere 來生成對應的流程圖如圖 5 所示。

圖 5:Mermaid 格式的流程圖

註 1:我們在 Copilot 上輸入咒語來生成溫度感測的程式碼,再讓 Copilot 修正這個程式錯誤。在此同時,我們都讓 Copilot 很仔細的地說明每一行的程式指令。有志於學習 micro:bit Python 程式設計的初學者,除了逐字細讀外,亦可利用這段範例程式碼再做變化,例如:當室溫[4] 超過攝氏 30 度時啟動風扇散熱。

註 2:GPTs 內部使用文字接龍(word chain)的技術。所以,問它「符合規範」的問題,它一定會生出答案,而且每次生出的答案常常不會相同。但是,這些答案也時常會有胡說八道的跡象。身為專家的人們,也必需俱有(辨)識(判)讀的能力!

註 3:本文的主軸是以 Copilot 直接生成 micro:bit Python 程式碼。如果讀者們想要玩流程圖生成 micro:bit Python 程式碼,根據我們的測試,先以 Chat Everywhere 生成 Mermaid 格式的流程圖,再將之餵給 Copilot 生成 micro:bit Python 程式碼,或者以拙著《(fChart)流程圖轉(MakeCode)程式》高中資訊科技學科中心電子報,第 200 期,2022 年 12 月(Blogger),以手動的方式轉換之。

商標觸碰感測

在 Copilot 上下達以下咒語:

你是 micro:bit 的高手,產生觸碰感測的 micro:bit Python V3 版的範例程式,程式碼要有詳細的註解

Copilot 生成的程式碼如圖 6。

圖 6:Copilot 生成的觸碰感測的程式碼

和上一個範例類似,在圖 6 的第 7 行是產生接腳 0 的觸碰感測,而不是商標觸碰。於是乎我們修改咒語如下:

你是 micro:bit 的高手,產生 micro:bit V2 版的 logo touch 感測的 micro:bit Python V3 版的範例程式,程式碼要有詳細的註解

緊接著,新咒語再生成的程式碼如圖 7 所示。

圖 7:修正咒語生成的程式碼

很不幸的,圖 7 的第 7 行出現紅色波浪的語法錯誤。於是,我們仿照前例的技巧,把錯誤的狀況回報給 Copilot:

if display.is_touched(): 出現 “is_touched” is not a known member of module “microbit.display”

它再次生成的新程式碼如圖 8 所示。

圖 8:二次修正咒語所生成的程式碼

最後,圖8所對應的流程圖如圖9所示。

圖 9:Copilot 生成的商標觸碰控制流程圖

磁力感測

在 Copilot 輸入以下咒語:

你是 micro:bit 的高手,產生磁力感測的 micro:bit Python V3 版的範例程式 程式碼,要有詳細的註解

它生成的程式碼如圖 10 所示:

圖 10:Copilot 生成的磁力感測的程式碼

最後,圖 10 的程式碼在 Chat Everywhere 上生成對應的流程圖如圖 11 所示。

圖 11:磁力感測程式碼對應的流程圖

[1]六種授權條款

[2]可能是微軟是 micr:bit 最早的合作夥伴之一,而且也是 MakeCode的維護廠商,筆者測試了各版本的 GPTs 之後,赫然發現 MS Copilot 生成的 micro:bit Python 與 V3 版 micro:bit Python Editor特別的速配!

[3]本文皆以「小彼特」稱之。

[4]小彼特使用 LED 矩陣測得的為 CPU 的溫度,讀者在計算室溫時要在程式中做適當的減溫計算。

(作者為本刊專欄作家,本文同步表於作者部落格,原文連結;責任編輯:謝涵如)

 

Ted Lee

訂閱MakerPRO知識充電報

與40000位開發者一同掌握科技創新的技術資訊!

Author: Ted Lee

從工程師轉任中學教師,又為了捍衛教育理念,投身成為 STEAM 教育工作者,自稱「無可救藥的人文教育理想主義者」的李俊德(Ted Lee)。

Share This Post On
468 ad

3 Comments

  1. Hi!創客玩轉新科技,讚!

    Post a Reply
    • 科技的底层知识还是那些基礎
      只是新工具現世罷了~

      Post a Reply

發佈回覆給「bluewolf」的留言 取消回覆

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