AI輔助程式生成、修改、測試/國立中央大學 資訊工程學系 莊永裕副教授
莊永裕老師在本次演將中分享了,如何透過生成式AI提升程式設計效率,亦強調從使用者需求出發、透過逐步提示引導AI生成符合需求的程式,是開發流程的關鍵,並展現生成式AI在教學與實務應用上的潛力。
生成式AI與程式設計的關係
生成式人工智慧(Generative AI, GenAI)能根據使用者給予的提示(Prompt)產出各種形式的內容,包括文字、圖片及程式碼。其中,大規模語言模型(Large Language Model, LLM)透過機器學習技術,特別是深度學習,從大量資料中學習,以生成內容。以ChatGPT為例,這款由OpenAI於2022年11月公開的聊天機器人,便是基於GPT(Generative Pre-trained Transformer)技術開發而成。
生成式AI之所以能夠產出程式碼,是因為模型已經從大量公開的程式碼中學習到程式設計的模式。以往的程式設計流程是從題目場景描述直接轉換為程式碼,而使用生成式AI則是將題目場景描述轉換為自然語言提示,再由AI生成程式碼。
從題目到需求:明確表達意圖的重要性
程式設計的本質是解決問題。若僅以題目去詢問ChatGPT,相當於直接搜尋答案,而非自己解題。雖然對於經典題型如LeetCode,可能會獲得良好的標準答案,但在現實中的應用場景往往是各種變化題,需要明確說明做法及需求。
真實世界的問題通常有多種解法,不似考試題目有唯一解答。就如設計一張椅子,需先確定是給大人或孩童使用,根據需求訂定規格描述,再依規格進行實作。程式設計同樣需要清楚描述需求,才能讓ChatGPT據此產出符合要求的程式。
逐步提示以滿足需求:實例分析
莊老師以一個實際案例說明如何有效使用ChatGPT。案例中,公司內部需要一個小程式,用以處理系統的錯誤紀錄並產生統計圖表。起初,簡單地提示「寫一個將錯誤報告轉成圖表的程式」,ChatGPT確實提供了程式碼,但未能完全符合特定需求。
透過分析ChatGPT的回應,發現其假設了錯誤報告的格式,並未實際進行檔案讀取,且只生成了一種條形圖。這說明了需要更精確的提示來引導AI理解特定需求。
訂定TODO逐步提示完成:軟體工程的應用
為有效指導ChatGPT,莊教授建議列出需求項目,作為TODO清單逐步完成。這種方法借鑑了軟體工程中的測試驅動開發(Test-Driven Development, TDD)及敏捷開發(Agile Software Development)理念,強調逐步驗收、修改功能。
在案例中,TODO清單包括:
- 讓程式讀取error_log檔案
- 告知ChatGPT檔案的正確格式
- 生成圖表
透過觀察程式執行的正確性、分析錯誤訊息及檢視輸出結果,使用者能不斷改進提示,引導ChatGPT生成更符合需求的程式。
結語
莊老師總結了使用ChatGPT輔助程式設計的關鍵要點:
- 不要僅以題目去詢問,而是從需求來描述所需
- 明確說明期望的程式輸入、輸出及功能
- 目標是在ChatGPT協助下開發符合自身需求的程式
- 最終產出的程式應符合需求、可理解、可解釋且使用者可負責
此外,他也強調批判性思維的重要性。執行時沒有錯誤不代表程式沒有問題,使用者不必理解程式碼的每個細節,但應能透過提問及範例驗證來確保程式的正確性。
最後,講者推薦了兩個練習題「踩地雷」和「通訊錄」,讓學習者能實際運用所學,分別著重在產品呈現、觀察與驗證,以及資料管理、使用者介面與體驗的設計。 透過這場經驗分享,使與會者更加理解如何有效運用ChatGPT等生成式AI工具,作為程式設計的助手,而非僅是解題的工具,進而提升程式開發的效率與品質。