iT邦幫忙

2025 iThome 鐵人賽

DAY 27
0
AI & Data

AI圖像辨識輔助的BIM資料流自動化流程系列 第 27

Day27:ChatGPT輔助程式設計應用分享

  • 分享至 

  • xImage
  •  

  有了AI工具就不用學習機器語言了嗎?不是的,今天我想透過本文的分析,來分享我使用ChatGPT輔助程式設計、撰寫所遇見的問題,以及我認為在AI時代仍需要學習的關鍵素養有哪些。

27.1. AI生成常見問題

以下3個問題是以我使用ChatGPT生成AI code,最常遇見的困擾:

1. 需反覆修正提問:
  現在許多AI教學會建議:如與ChatGPT互動時,最好用像「你現在是OOO角色」這種明確描述角色、動作或目的的指令,這樣AI才能更精準理解你的需求。不過,AI每次回應其實只能處理一定數量的關鍵字(token),就算你描述得再完整,也可能因為長度限制,導致「問了這個、AI忘了那個」的情況經常發生。

2. 無法替代開發者的全盤思考與系統整合:
  AI雖然可以幫你產生長段落的程式碼,或針對明確的bug給出解法,但當你需要整合多模組、跨流程的系統時,AI只能就你問的「某一部分」給出建議,若接續詢問單一問題後,後續就難以繼續自動幫你把各部分串起來。

3. 順著你的思考邏輯回答問題:
  AI能否答得好,很大程度取決於你給它的上下文,以及是否明確描述你的思考脈絡。有時候AI會照字面回答問題,結果答非所問;有時候則能「順著你的脈絡」提供很精準的協助。

27.2. Debug關鍵需求與解方

根據前面所提到的問題,我認為要有效Debug,並善用AI輔助,主要可從三個面向來著手:

1. 基礎語法與邏輯思維能力:
  雖然與AI互動對話可以用白話文說明敘述,並能取得生成的程式代碼,但若不具備基本的程式語法(如Python語法結構、變數、函式、類別等)和邏輯思維(如條件判斷、迴圈、資料流)能力,那很難從中明白這段程式碼的邏輯意義,例如看到for迴圈能夠知道這是在重複處理某項事件等,因此須懂得基本的語法,才能具備良好的Debug方向

2. 系統架構與模組整合能力:
  當程式碼中的各項類別功能定義很多時,惟有理解整個專案的架構、各模組的功能與相互關係,才能在多次反覆修正後,還能夠知道某項功能定義在整個專案中的關係與定位

3. 問題拆解與有效提問能力:
  當AI生成完整的程式碼執行時,可能仍會遇到執行錯誤,若直接將複雜問題再丟回給AI,常會遇到前面正確、後面又寫錯的情況,因此我們應該逐漸建立Debug的拆解邏輯,將大問題拆解成小問題,逐步釐清每一個環節後,最後再重新整合所有解法,才能真正找到核心問題並解決。

27.3. 與ChatGPT對話範例

  • 使用者提問
    請用tkinter幫我產生一個有三個欄位輸入框、和一個執行按鈕的GUI程式碼。

  • ChatGPT初版回覆

import tkinter as tk

def on_submit():
    val1 = entry1.get()
    val2 = entry2.get()
    val3 = entry3.get()
    print(val1, val2, val3)

root = tk.Tk()
root.title("三個輸入框")

# 這一版雖然有三個輸入框,但沒有標示每個欄位的用途
entry1 = tk.Entry(root)
entry1.pack()
entry2 = tk.Entry(root)
entry2.pack()
entry3 = tk.Entry(root)
entry3.pack()

submit_btn = tk.Button(root, text="執行", command=on_submit)
submit_btn.pack()

root.mainloop()
  • 使用者補充
    請每個輸入框都加上對應的Label
    (這裡的Label就是你已簡單理解了Tkinter的語法構架,並提出具體提問)

  • ChatGPT再回覆(完善版)

import tkinter as tk

def on_submit():
    val1 = entry1.get()
    val2 = entry2.get()
    val3 = entry3.get()
    print("欄位一:", val1)
    print("欄位二:", val2)
    print("欄位三:", val3)

root = tk.Tk()
root.title("三個輸入欄位+標籤")

label1 = tk.Label(root, text="欄位一:")
label1.pack()
entry1 = tk.Entry(root)
entry1.pack()

label2 = tk.Label(root, text="欄位二:")
label2.pack()
entry2 = tk.Entry(root)
entry2.pack()

label3 = tk.Label(root, text="欄位三:")
label3.pack()
entry3 = tk.Entry(root)
entry3.pack()

submit_btn = tk.Button(root, text="執行", command=on_submit)
submit_btn.pack()

root.mainloop()

因為有了精確地指示方向,ChatGPT便能更精準地完成你的需求。

27.4. 結語

  今天分享了我實際應用ChatGPT輔助程式設計的經驗,並以簡單的範例說明,希望讓大家了解:AI確實能協助我們提升開發效率,但基礎語法、系統整合與問題拆解能力依然不可或缺。
  下一篇我將利用ChatGPT協助產生更優化、更貼心的GUI介面,包括輸入檢查、即時提示與防呆設計等實用技巧,明天見!


上一篇
Day26:Tkinter圖形介面開發實作
下一篇
Day28:介面優化與防呆設計
系列文
AI圖像辨識輔助的BIM資料流自動化流程30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言