這兩年在不同的報章雜誌上常會聽到提示工程這個名詞,甚至很多報導都在談論現在「提示工程師」這個行業很吃香,是一種新興的專業項目。然而提示工程師到底是什麼?而提示本身又有哪些眉角與技術,本書就針對這個領域以十六個章節來呈現相關的內容。我所閱讀的是《AI提示工程師的16堂關鍵必修課》這本書的初版,在 2024 年 9 月底有發行第二版,本書的心得是以初版跟我個人的理解來分享的。
在生成式人工智慧(Generative AI)快速發展的時代,提示工程(Prompt Engineering)成為了運用 AI 技術的重要關鍵。這門技術不僅僅是一項工具,更是一種連結人類智慧與機器學習的橋樑,透過精心設計的提示(Prompt),能夠引導 AI 生成更準確、有效且具有創意的內容。本書深入探討了提示工程的核心概念、實踐方法與未來應用,是一本兼具技術深度與實用價值的專業指南。
《AI-Powered Software and System Design》是《Generative AI for Software Development》的第三部分課程,旨在幫助我們全面理解生成式 AI 在軟體設計與系統開發中的應用,並通過三週的學習,構建從資料序列化、配置驅動開發到設計模式應用的完整技術路徑。課程結合理論講解與實作練習,為我們提供了一個從基礎概念到高階應用的學習框架。
第一週的課程聚焦於資料序列化與配置驅動開發(CDD)。這週的學習從資料序列化技術(如 JSON 與 Pickle)開始,幫助我們掌握數據存取與共享的核心技能。課程進一步介紹了如何通過配置文件控制軟體行為,提升系統的靈活性與可擴展性。我們還學習了透過 LLM 去了解測試驅動開發(TDD)與行為驅動開發(BDD)的核心理念。課程範例以 CDD 結合 DALL-E API 的應用,實作配置驅動的開發流程。這些技術讓我們能夠快速生成動態配置並將其整合到系統設計中,提升開發效率與結構化程度。
第二週的課程重點轉向資料庫設計與優化。從基礎的 CRUD 操作教學開始,我們學習如何利用生成式 AI 工具(如 LLM)設計資料結構,並生成高效的查詢代碼。課程還包含除錯與效能優化的練習,幫助我們解決資料庫運行中的性能瓶頸與依賴性問題。透過設計並實作社交網絡資料庫專案,我們得以熟悉如何結合生成式 AI 提升資料庫的穩定性與效能,並應用於真實開發場景。
第三週的課程專注於設計模式的應用,特別是四人幫(Gang of Four)提出的 23 種設計模式。課程從設計模式的理論基礎入手,詳細講解了每種模式的適用場景及其解決的問題,涵蓋單例模式、工廠模式、模板方法模式與策略模式等。透過生成式 AI 的輔助,我們能快速生成設計模式的實作範例,並獲得優化代碼結構的建議。這些練習不僅讓我們理解設計模式的核心概念,還幫助我們提升應對大型系統設計與部署挑戰的能力。
這一段的課程相較於前面的《Introduction to Generative AI for Software Development》跟《Team Software Engineering with AI》又更為艱澀一點,且如果平時開發專案的規模不夠大,可能也不容易體會開發模式跟設計模式對於團隊開發跟產品的影響。不過順著課程的結構來進行,再加上可以不斷的詢問 LLM,相信應該可以架構出對這進階的開發概念有完整的理解。我自己花了八天的時間,完成了第三階段課程的認證,除了習作/測驗跟程式碼的撰寫外,第三門課程我花了很多時間去比較不同開發模式跟設計模式,對不同軟體產品的影響。這也是我在這整段課程收穫最大的地方,更進一步發揮了 LLM 的應用能力跟場景。
整體課程以實務應用為導向,注重生成式 AI 技術在開發流程中的價值與實際效能。從資料序列化到資料庫設計,再到設計模式的實作與應用,每一環節都幫助我們建立理論與實務的連結,快速掌握生成式 AI 的應用精髓。這是一門適合希望探索生成式 AI 在軟體開發中的潛力,並期望提升專業能力與開發效率的課程。
《Team Software Engineering with AI》這門課程是《Generative AI for Software Development》的第二段課程,同樣也是安排了三週的內容。課程設計的目標,是幫助學員全面了解生成式 AI 在軟體開發中的應用,並提供一套從測試與除錯、文件撰寫到依賴管理的完整學習路徑。課程在三週內,從第一週的內容逐步深入,讓學員從基礎環境設置開始,逐步掌握生成式 AI 工具的應用方法,並將其實際應用於開發與團隊協作中。
第一週的課程除了環境設置之外,主要聚焦於測試與除錯。這週的設計旨在幫助學員理解測試與除錯的重要性,並學習如何透過生成式 AI 工具(如 ChatGPT)來優化測試流程。跟第一門課一樣,平台本身有提供 LLM,以及開發環境,另外也有教材跟延伸練習的程式碼可以下載。學員首先熟悉 Jupyter Notebook 的操作以及 ChatGPT 實驗室的使用方法,建立穩固的技術基礎。在測試部分,課程詳細介紹了探索式測試和功能測試,並教授如何設計自動化測試來提升效率。除此之外,學員還會接觸效能測試與安全測試的基礎知識,並學習使用 AI 工具分析程式碼中的安全漏洞,進一步理解如何將 AI 應用於日常開發工作中。
第二週的課程重點轉向文件撰寫。文件是團隊開發中不可或缺的一部分,但往往容易被忽略。這週的課程旨在幫助學員掌握撰寫高效技術文件的技巧,提升團隊協作的效率。課程不僅介紹了內嵌註解與文件註解的實踐方法,還探討了多語言環境下文件的適應性。學員將學習如何使用生成式 AI 工具來輔助文件撰寫,並通過自動化工具如 Sphinx 生成結構化文檔。此外課程強調了文件在生產環境中的重要性,讓學員了解文件維護對專案長期發展的影響。
第三週的課程專注於依賴管理,這是軟體開發中一個易被忽視但至關重要的領域。本週的課程幫助學員理解如何解決依賴衝突,並提升專案的穩定性與安全性。學員將學習虛擬環境的設置、依賴研究與安全分析等基礎知識,並進一步探索如何利用生成式 AI 工具處理多語言環境中的依賴問題。此外課程中還包括 GPT 的應用實作,讓學員能夠熟悉使用 AI 工具解決版本與依賴管理問題,並將所學應用於實際專案中。
照例每一週的課程都有作業/考試,程式實作的部分是要求將 Python 2 的舊程式,透過 LLM 的協助來更新為 Python 3 的新版程式,同時也實作了模組依賴版本不相容的解決方式。這跟我們實務開發時經常面對到的困境一樣,以往沒有 LLM 的協助得到個大論壇搜尋取經,或是詢問其他大神。如今 LLM 就是一個隨時可以提供個性化服務的大神。
整體課程是以實務應用為導向,注重理論與實作的結合,讓學員在學習過程中能即學即用。生成式 AI 工具不僅能幫助學員提升開發效率,還能解決許多開發中常見的問題。這門課程強調了技術與團隊協作的平衡,從測試與除錯的基礎開始,到文件撰寫的專業化,再到依賴管理的穩定性,循序漸進地引導學員掌握生成式 AI 的應用精髓。對於希望提升技能並優化開發流程的工程師或技術管理者來說,這是一門不可多得的課程。這門課最後我用了七天的時間(一天平均為八小時),順利完成並取得證書。
《Introduction to Generative AI for Software Development》是《Generative AI for Software Development》的第一段課程,它共安排了三週的時間,其課程的目標是希望參與者可以全面掌握生成式 AI 工具(如大型語言模型,LLMs)在軟體開發中的應用,並學會如何將其融入日常工作,提升開發效率、解決問題的能力,同時啟發學員探索更多應用的可能性。
課程從基礎概念開始,幫助學員了解生成式 AI 的運作原理,例如 Transformer 架構如何實現語言理解與生成,並讓學員認識到生成式 AI 與傳統軟體開發的差異與優勢。接著課程逐步引導學員學會與 LLMs 協作,透過角色設定和精準的提示工程,讓 AI 工具能針對特定需求提供專業建議。同時課程強調回饋與迭代的重要性,幫助學員在反覆互動中改進 AI 輸出的品質,逐步建立提問的能力與批判性思維。
課程中有不少實作練習,讓學員熟悉如何使用生成式 AI 協助完成程式碼的生成、效能優化,以及程式碼分析等工作。課程設計不僅涵蓋了資料結構與演算法的開發,還展示了如何利用 AI 驗證程式碼的效能跟安全性,讓學員在實務操作中體會生成式 AI 的價值與潛力。
透過這三週的學習,不僅能學會如何操作與應用生成式 AI,還能理解其背後的運作邏輯及 AI 的應用限制,進一步將其視為開發過程中的得力助手。課程的核心目標在於讓學員成為一個更高效、更有創造力的開發者,同時具備運用生成式 AI 解決實際開發挑戰的能力與信心。由於課程有一週的免費試讀,透過我這篇介紹大家可以考慮是否報名,進入與 AI 人機協作的領域來探究跟學習。
在課堂進行的過程裡,它提供了開發環境跟 LLM(GPT-4o)的資源,所以就算是初學者也可以在 coursera 課程平台上進行練習。授課老師 Laurence Moroney 在每一堂課都有提供下載的資料,包含課程影片、字幕、程式碼。因此需要延伸探究跟實作時,可以參考課堂上提供的附件。每一週的課程都會有作業/測驗,要求要達到 80 分以上才能過關,這些作業都是問答題,有的是複選,若沒有達到標準可以重作。
在第三週的課程會迎來第一個程式作業,是透過平台內建的 Jupyter 來進行開發,並上傳評分。除了計分的作業/測驗之外,也會有延伸的題目,讓我們自行延伸探究跟練習。我自己是花費了九天的時間(平均每天用八個小時上課跟練習),完成了這堂課的內容。以下我簡述課程得大綱,以及我自己的心得。
在這個 AI 迅速發展的時代,身為開發者的我們究竟該如何善用 AI 相關的工具?透過 《Generative AI for Software Development》這門線上課程,我找到了答案。這門課程主要講述如何運用生成式 AI(Large Language Models,LLMs)來輔助程式開發,非常適合已具備開發經驗,但還在摸索 AI 應用範圍的開發者。作為一個在開發單位服務、使用 AI 輔助開發已有兩年經驗的開發者,即便我從 ChatGPT 推出後就持續關注,並且也實際推出相關的應用產品,上完課後依然獲得許多新的啟發,因此想與大家分享這門課程的心得。
◎課程架構
這堂課包含三個獨立的教程:
- 《Introduction to Generative AI for Software Development》:生成式 AI 與軟體開發的基礎介紹
- 《Team Software Engineering with AI》:使用 AI 的團隊軟體工程
- 《AI-Powered Software and System Design》:AI 驅動的專業軟體與系統設計
我計畫分成四篇文章來分享心得,這是第一篇,先以總覽的方式介紹整個課程,另外我也有整理上課用的筆記。建議有興趣的讀者可以先報名一週的免費試讀,確認課程內容符合需求後再決定是否付費繼續。就我的經驗,在取得證書後我已經順利取消了後續的月費訂閱。