《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 分以上才能過關,這些作業都是問答題,有的是複選,若沒有達到標準可以重作。

證書-1

在第三週的課程會迎來第一個程式作業,是透過平台內建的 Jupyter 來進行開發,並上傳評分。除了計分的作業/測驗之外,也會有延伸的題目,讓我們自行延伸探究跟練習。我自己是花費了九天的時間(平均每天用八個小時上課跟練習),完成了這堂課的內容。以下我簡述課程得大綱,以及我自己的心得。

◎課程設計的主要觀念與知識
用於軟體開發的生成式人工智慧簡介 (Introduction to Generative AI for Software Development)

[全文:]

◼︎ 第一週:生成式 AI 與基礎概念
課程從生成式 AI 的基本框架入手,幫助開發者理解大型語言模型(LLM)的運作方式,例如 Transformer 架構如何生成自然語言文本。同時參與者學會區分機器學習與傳統軟體開發的差異,並通過監督式學習的例子加深理解。這些基礎內容為後續應用 LLM 提供了必備知識,特別是為新手建立了對生成式 AI 的全面認識。如果想進一步了解人工智慧跟機器學習的概念,可以參考這部九十分鐘的影片「【漫士科普】90分鐘深度!一口氣看懂人工智慧和神經網路」。

◼︎ 第二週:LLM 的協作應用
課程聚焦於如何使用 LLM 作為開發夥伴,幫助我們快速撰寫程式碼並改進工作效率。提示工程是本週的重點,開發者將學會如何設計詳細的提示,讓 LLM 根據特定角色(如測試工程師或架構師)進行任務分工並完成相應工作。此外課程還展示了如何利用回饋機制迭代改進 LLM 的輸出。這些技能對於新手開發者至關重要,因為它相當於為他們提供了一位隨時可用的高階指導者。而對資深開發者來說,它會提供很多我們忽略的內容,這有助於我們更全面的檢視可行的方案。

◼︎ 第三週:代碼分析與優化
在最後一週,課程深入探討 LLM 在實際開發中的高階應用,例如與 LLM 合作完成資料結構實作、程式碼優化及效能檢查。我們將學習如何分析代碼的性能、安全性和效率,並使用 LLM 輔助準備軟體開發。這些內容讓參與者不僅能掌握生成式 AI 的工具使用,還能將其應用於實際專案中,解決複雜的開發問題,並提升專業技能。

在《用於軟體開發的生成式人工智慧簡介》的第一週課程中,設計者以非常用心的方式規劃了一條循序漸進的學習路徑,從生成式 AI 的基本概念開始,逐步引導學員理解背後的技術核心以及應用情境。課程內容的重點圍繞在機器學習、生成式 AI,以及 Transformer 架構這三大主題,目的是幫助學員建立扎實的知識基礎,無論是初學者還是有經驗的開發人員,都能找到適合的切入點並從中獲益。

◎個人心得與課程細部內容
◼︎ First Week
課程一開始從「什麼是生成式 AI」這個問題切入,透過生活化的應用案例,幫助我們理解這項技術的本質:它不僅是一個能產生文字的工具,更是一套能夠學習與理解語言的智慧系統。為了讓我們能快速掌握生成式 AI 的特性,課程接著將 LLM、機器學習和傳統軟體開發方法進行了比較。機器學習透過資料訓練模型,並基於規則進行預測,而生成式 AI 則進一步結合語言生成能力,突破傳統軟體開發依賴明確規則的限制。這樣的對比不僅幫助學員了解生成式 AI 的技術價值,也讓我們初步認識如何把這項技術應用到日常開發工作中。

作為整個課程的技術核心,Transformer 架構在第一週的內容佔有重要地位。它從多層注意力機制開始,詳細說明這項技術如何讓大型語言模型(LLM)具備產生流暢且語意準確文字的能力。對於初學者來說,這樣的內容雖然技術性較高,但透過視覺化的解釋與範例輔助,幫助我們快速掌握技術的關鍵概念。對於已有經驗的開發人員,這部分內容則是一個深入理解 LLM 技術細節的好機會,幫助我們更全面地了解生成式 AI 在運作層面的原理。

此外還設計了多個生成式 AI 的應用情境,包括文字生成、程式碼輔助生成、自動化測試等。這些情境的展示不僅拓展了我們的技術視野,也幫助將抽象的技術概念與實際應用需求連結。例如我們可以理解生成式 AI 如何協助開發者快速生成程式碼片段、檢查語法錯誤,甚至提供效能優化建議。這些應用情境不僅增加了課程的實用性,也激發了我們在實務中探索更多可能性的興趣。

整體來說,第一週的課程設計不僅聚焦於技術概念的傳遞,也特別考量了不同背景學員的需求。對於初學者,課程以循序漸進的方式降低了學習門檻,幫助我們建立清晰的技術基礎;對於已有經驗的開發人員,則提供了一個重新檢視生成式 AI 價值的契機,幫助我們從技術細節中挖掘出新的啟發。這樣的設計不僅為整個課程奠定了學習基礎,也為後續深入應用生成式 AI 提供了穩固的理論支持。

◼︎ Second Week
第二週課程聚焦於生成式 AI 的實際應用,特別是如何有效地與大型語言模型(LLMs)協作完成開發工作。課程的設計核心在於幫助學員理解如何透過提示工程(Prompt Engineering)充分發揮 LLM 的潛力,並藉由適當的角色設定和反覆的回饋迭代,進一步提升模型輸出的準確性與實用性。這樣的設計,不僅提供了一個高效使用 LLM 的方法論,也特別考量到初學者在使用過程中可能遇到的挑戰,例如「不知道如何發問」或「無法辨識輸出的正確性」等常見問題。

課程特別強調角色設定的重要性,這是因為 LLM 是一個基於上下文生成答案的工具,設定角色可以幫助模型更專注於特定領域的輸出需求。例如當開發者需要進行程式碼審查時,可以將 LLM 設定為「資深軟體工程師」,讓它專注於檢查程式碼中的邏輯問題與最佳化空間;或者在設計 API 結構時,將其設定為「系統架構師」,讓模型能針對 API 的結構與可擴展性提供建議。這樣的角色設定不僅讓模型的回應更具針對性,也降低了我們篩選無關資訊的負擔。對於初學者來說,角色設定更像是提供了一個上下文框架,幫助我們縮小問題範圍,避免一開始就陷入模糊的思維模式。

然而,講師 Laurence Moroney 也清楚意識到,初學者在使用 LLM 時,往往面臨一個更大的挑戰:不知道如何正確表達自己的問題。有些新手可能缺乏對問題核心的清晰認識,甚至連提問的方向都無法確認。為了解決這個問題,課程透過範例與模擬,幫助學員學習如何將問題分解為具體的需求點。例如與其問一個籠統的問題「請幫我寫一段程式碼」,不如拆解為更清楚的需求:「請幫我撰寫一個支持 CRUD 操作的 RESTful API,並使用 Python Flask 框架實作。」這樣的具體化過程,讓 LLM 能更精確地回應,也讓學員能逐步學會如何有效表達問題。

在我們跟 LLM 互動的過程中,回饋與迭代是另一個課程核心設計理念。課程透過實作教學,指導我們如何檢查 LLM 的回應是否符合需求,並進一步給出明確的回饋,例如補充額外的上下文資訊或要求提供更詳細的解釋。這樣的回饋機制不僅提升了 LLM 的輸出品質,也讓我們能以此培養批判性思維,學會驗證 AI 提供的答案是否正確或符合實際需求。這對初接觸 LLMs 的使用者尤為重要,因為我們可能在一開始無法判斷 LLM 提供的程式碼或建議是否適合實際應用,而透過迭代式的學習,我們能逐步掌握如何評估 生成式語言模型輸出的品質。

整體來說,第二週課程的設計不僅教導如何與 LLM 協作,更讓我們學會如何高效地使用這樣的工具。對於程式開發的初學者,課程透過角色設定與範例引導,幫助我們克服提問與理解上的障礙,讓我們能更快地進入狀況;對於有經驗的開發者,課程則展示了 LLM 在專業開發環境中的多元應用,特別是在程式碼生成、測試、優化和邏輯檢查上的價值。透過專家角色設定、問題明確化以及回饋迭代的設計,第二週課程成功地將 LLM 的應用能力融入日常開發流程,並激發了我們探索更多應用場景的興趣與潛力。這樣的教學方式,為我們與生成式 AI 建立了一種「合作夥伴關係」,使 AI 不僅是一個工具,更是開發過程中的得力助手與導師。

◼︎ Third Week
第三週課程的設計聚焦於生成式 AI 的進階應用,特別是如何利用大型語言模型(LLMs)來進行程式碼的生成、優化以及分析。這週的課程內容以實作為核心,從基礎的資料結構(如陣列、鏈結串列)開始,逐步引入圖、樹等進階結構,並延伸到演算法的設計與應用。這樣的設計不僅涵蓋了初學者所需的基礎知識,也為進階學員提供了挑戰與啟發,讓我們能夠在不同層次的學習需求中都找到價值。

課程從基礎資料結構切入,這並非僅僅為了介紹知識點,而是希望學員能透過實作,實際體驗 LLM 的輔助能力。對於初學者而言,資料結構往往是程式設計的第一道門檻,而 LLM 的輔助能讓我們快速生成範例程式碼,幫助理解基本概念,並有效解決我們在語法或邏輯上的困難。例如學員可以向 LLM 請求建立一個雙向鏈結串列的程式碼,並進一步詢問它如何進行節點插入或刪除操作。這樣的過程不僅讓學習者能更輕鬆地掌握基礎技能,也幫助我們逐漸建立對問題拆解的能力,進而提高自主學習的效率。

對於進階開發者,課程設計延伸到更具挑戰性的內容,例如圖演算法的實作或效能優化的建議。這些進階任務不僅能測試 LLM 在處理複雜邏輯時的能力,也讓我們有機會檢視自己的設計與解決方案,並從 LLM 的建議中找到新的靈感。例如我們可以向 LLM 詢問如何實作 Dijkstra 演算法,並請它進一步提供改進的方向或效能分析,這樣的過程讓進階開發者能以批判性思維檢視自己的方法,進而提升自身的專業能力。而課程之所以耗費大量的時間,就是在這些延伸的探究練習上面。

實作的重點並不僅僅是完成任務,而是透過這樣的過程幫助學員理解 LLM 的知識深度與應用範圍。課程特別安排了效能與安全性的分析環節,展示 LLM 如何協助我們進行程式碼優化或檢查潛在的安全問題。例如當我們完成一段程式碼後,可以請 LLM 分析這段代碼的效能瓶頸或指出可能的漏洞,這些功能對於初學者和進階開發者都有極高的實用價值。初學者可以借此學習如何撰寫更高效的代碼,而進階開發者則能更深入地探索如何將 LLM 的建議融入自己的開發流程。在專案的規模大小也是如此,通常一樣的會員系統,在小規模裡可以很快實作出來,但大規模的系統就需要考慮效能、資料結構等問題,LLM 在這方面可以提供很好的解決方案讓我們思考。

第三週的設計理念不僅強調實作,更注重學員與 LLM 的互動過程。這些互動讓學員了解到,生成式 AI 的真正價值在於作為一個高效的輔助工具,能協助解決各種開發問題,但也需要學員具備批判性思維,對 LLM 的建議進行驗證與調整。這對於初學者特別重要,因為我們可能難以辨別 LLM 提供的答案是否完全正確,而課程透過範例與引導,教我們如何一步步驗證 LLM 的輸出並改進結果。對於進階學員,這樣的設計則展示了如何將 LLM 作為「合作夥伴」與「知識庫」,結合自身的專業知識與經驗,達成更高效的開發目標。

總體來說,第三週課程的設計巧妙地平衡了基礎與進階需求。對於初學者,它是一個實作的練習場,幫助我們快速掌握資料結構與基本演算法,並培養與 AI 工具互動的能力;對於進階開發者,它是一個探索的契機,讓我們重新審視自己的開發流程,並發現 LLM 在效能優化與問題解決中的多樣化應用。這樣的設計不僅讓不同技術層次的學員都能受益,更深化了我們對生成式 AI 的理解,讓大家在未來的實際開發中,能夠將 LLM 作為一個真正的夥伴,幫助我們突破開發中的各種挑戰。這不僅僅只是在開發工具裡(例如 VS Code 中的 GitHub Copilot),依我們的描述快速生出程式碼而已。

◎總結
這共三週的第一階段課程從基礎概念到實作應用,循序漸進地幫助學習者全面掌握生成式 AI 在軟體開發中的輔助能力,並啟發我們將這項技術融入到實際工作中。課程的設計圍繞如何有效利用大型語言模型(LLMs),不僅傳遞了技術知識,還著重於引導我們理解 AI 工具的應用邏輯與互動方式。

我們首先建立了對生成式 AI 的基本認識,包括它的運作原理及其與傳統開發方法的異同,幫助我們清楚這項技術如何突破傳統限制。接著課程進一步展示了如何藉由提示工程與角色設定,將 LLM 作為開發的合作夥伴,並透過回饋與迭代的方式,提升模型輸出的精準度與實用性。在此過程中,我們學會了如何表達清晰的問題、設計有效的提示,並培養了檢驗和改進 AI 回應的能力,這對於初學者尤為重要,因為這是一種逐步解決問題的學習模式,而重要的是我們了解了它的能與不能。

到了實作階段,課程從資料結構與演算法的實現切入,讓學員能夠實際體驗生成式 AI 在程式碼生成與效能分析中的應用價值。這不僅讓學習了如何解決具體的開發問題,也讓我們認識到 AI 的知識廣度與潛在的輔助能力。無論是初學者還是有經驗的開發者,都能在這些實作中找到自己的成長方向。初學者可以利用 AI 簡化複雜問題,迅速上手;進階學員則能透過與 LLM 的互動重新審視自己的開發習慣,並發掘優化流程的新方法。

這門課程帶給我們的不僅是生成式 AI 工具的使用方法,還包括與這些工具互動的正確觀念。課程中可以學會將 AI 作為一個得力的協作夥伴,幫助我們處理繁瑣的重複性工作,並引導我們解決更高階的問題。再次強調最重要的是 AI 的能力並非全知全能,它需要結合我們的判斷力與批判性思維來達成最佳效果。這樣的學習體驗,為我們未來在實際開發中靈活應用生成式 AI 奠定了堅實的基礎,也啟發了大家探索更多應用可能性。

1

◎延伸閱讀
一、與 AI 協作的開發之路:《Generative AI for Software Development》課程心得

三、用生成式 AI 重新定義軟體開發:探索協作、效率與創新的新時代

四、從理論到實踐:生成式 AI 重塑團隊軟體開發新模式

五、軟體開發中的生成式人工智慧」學習筆記





2025-01-18  -  duncan Email  -  179  -  資訊工程 - 讀者回應

回應管理, Pingbacks:

這篇文章還沒有 回應管理/Pingbacks ...

讀者回應:


你的Email位址將不會顯示在這個站點.

您的URL將被顯示.

允許的XHTML標記: <p, ul, ol, li, dl, dt, dd, address, blockquote, ins, del, span, bdo, br, em, strong, dfn, code, samp, kdb, var, cite, abbr, acronym, q, sub, sup, tt, i, b, big, small>
Enter this code:
authimage

(換行會被轉換為 <br /> 標記)
(將你的姓名及Email及網址記在Cookie中)
(讓使用者可以直接寫訊息給你(不會顯示你的Email).)

上一篇文章: 走進隈研吾的綠意美學:勤美術館攝影散記下一篇文章: 從基督城的天際到亞芳河畔:一趟穿梭在花園都市的影像之旅