發表文章

隨手做一個支援 RAG 的 AI Agent

圖片
隨著 AI 應用在各種開發場景中愈來愈普及,微軟也持續優化 .NET 生態系對 AI 開發的支援。最新釋出的 .NET AI Chat Web App Template Preview 2 ,為開發者提供了一套更加完整且實用的範本,讓使用者可以快速建立支援 Retrieval-Augmented Generation(RAG)模式的聊天應用程式。 🛠️安裝 .NET AI Chat Template 要開始使用這個全新的 AI Chat 範本,只需要透過簡單幾個指令,就能在你的開發環境中安裝並啟用。 首先,請開啟 Terminal 命令列介面,執行以下指令來安裝最新版的範本套件: dotnet new install Microsoft.Extensions.AI.Templates 安裝完成後,你就可以直接使用 .NET CLI 建立新的 AI Chat 專案了。舉例來說,若要在當前目錄中建立一個新的 aichat 專案,只需執行: dotnet new aichatweb 執行後,使用 VS Code 開啟專案,只需要做一些簡單的設定: 在 appsettings.json 中,配置好 你的 GitHub Models Token( 這裡有介紹 ): "GitHubModels" : { "Token" : "github_pat_11AOOOOOOOOOOOOOOOMnB" } 並且在 wwwroot 的 Data 資料夾底下,放入你要進行檢索的 PDF 文件,確定一下你的環境有 .net 9 SDK,接著透過 dotnet run 就可以執行啦。 運行的結果如下: 在出現的畫面中,你可以直接對 PDF 文件進行詢問,系統會依照PDF文件中的內容進行回答,出現的準確度也還算不錯。 隨著 .NET AI Chat Template 的功能越來越完整,開發者現在可以更輕鬆地搭建基於自有資料的智慧聊天應用,不需要繁瑣的部署過程,也無需額外申請複雜的雲端服務。無論是個人實驗、專案原型,還是小型產品開發,都可以快速起步並持續擴展。如果你還沒試過,不妨趁著這次更新體驗看看,相信它會成為你未來 AI 開發流程中不可或缺的一環。 📚 延伸閱讀 .NET AI...

使用 GitHub Models 上免費的LLM(大語言模型) 進行測試開發

圖片
對多數開發人員而言,GitHub 不僅是一個儲存程式碼的地方,更是一整套開發流程的中樞。從原始碼管理、Issue 討論、Pull Request 協作,到 CI/CD 整合,GitHub 提供了豐富的功能,支援現代軟體開發的各個階段。 這使得 GitHub 一推出 GitHub Models ,立即讓人眼睛一亮。這項功能對開發人員來說,堪稱是一大福音。它提供了多種 LLM(大型語言模型)的介接能力,並且開放免費使用,讓開發者在無需註冊 OpenAI、Azure 或其他雲端服務帳號的情況下,就能快速體驗 LLM 在程式設計與AI Agent 開發的應用潛力。 對於尚在試驗階段,或使用頻率不高的個人或小型團隊來說,這不僅省下了搭建本地模型環境的複雜度與資源消耗,也大幅降低了學習與導入門檻,真正做到「人人都能用 AI 來寫程式」。 如何使用 要使用 GitHub Models 相當簡單,你只需要有 GitHub 帳號(不管是否有付費均可),即可從底下網址進入 Models : https://github.com/marketplace/models 進入後,先在左上角選擇你想使用的 Model : 你會發現選擇琳瑯滿目,從 OpenAI 系列,到微軟的 Phi-3、DeepSeek、Llama 任君選用。 選擇好之後,你可以在測試區,輸入對談文字測試看看,會看到大語言模型的回應文字: 你還可以按下Compare: 去比較兩款不同的大語言模型,在回應上是否有所不同: 如果要調整 System Prompt、Max Tokens、Temperature 等長用參數,可以在右上方找到。 選擇好你想用的模型之後,如果想要著手開發,可以切換到 Code,這邊可以讓你選擇不同的開發技術,網頁上會依照你的選擇,出現相對應的程式碼範例: 注意,這邊的 API Endpoint 和官方模型有所不同,是唯一你在使用 GitHub Models 時需要調整的地方。 申請 Token 在呼叫該 API時,一樣會需要一個 token。 你可以在底下位置申請: https://github.com/settings/personal-access-tokens/new 進入後找到 Permissions,展開後選擇 Models,將其設為Read-...

AI 時代的 Vibe Coding,真的會讓技術債爆炸嗎?

圖片
最近看到網路上不少人 vibe coding 與技術債之間的關係,甚至認為它將會等同於是「技術債製造機」。特別在 AI 越來越普及的今天,慢慢有一些開發者開始擔心:『 LLM 將會讓初階開發者更容易產出劣質程式碼,進而拖垮整體專案品質 』。 但這真的是事實嗎? 我認為 未必 。 工具從來不是問題,關鍵是『人』 首先,我們得承認一件事: 會寫出技術債的開發者,用什麼工具都會寫出技術債。 早年,我們沒有 Google,只能查書或參考學長、前輩們 code 的寫;後來有了 Stack Overflow,我們學會了複製貼上;如今換成了 LLM,連搜尋都省了,直接叫 AI 生成就有範例可以參考。 這些方式起來可能都「有點草率」,甚至「有些不專業」,但我們也必須正視一個事實: 開發人員的成長曲線,本來就包含大量模仿與嘗試錯誤的過程。 很多今天能獨當一面的工程師,都是從這樣的方式走過來的。工具從來都不是問題,真正的問題 是你怎麼用它 。 會亂用工具的人,即使給他的是超強 IDE,他也能寫出災難;但會自主學習的人,哪怕用的是 AI,也能學得更快、做得更好。 技術債的真兇,不是 AI,是 落後流程 那照上面這樣的說法, AI 是不是依舊有可能會讓初階工程師更快產出「不嚴謹」的程式碼,進而在團隊中埋下大量的技術債呢? 這個問題的假設前半段可能對,但後半段則離道甚遠。 AI 確實讓開發速度加快,但這就代表技術債會快速增加嗎?不一定。 因為真正能預防技術債的從來就不是「人」,而是「流程」。 一個成熟的軟體專案,理應早已建構有良好的 CI/CD Pipeline,並在其中配置自動化的程式碼品質檢查工具,例如 SonarQube、Checkmarx、ESLint 等,可以在自動化流程中,輕鬆地幫我們掃瞄出類似底下這樣的技術債或安全性報告,讓開發人員即時進行改善(參考 這裡 ): 甚至,現在我們還可以導入 GPT-4o、Claude 等 LLM,針對 Pull Request 的 Code Changes 自動執行語意層級的程式碼分析與品質建議。(參考我 這邊 的貼文) 也就是說, AI 能讓「開發變快」,同時也能讓「品質監控變更快」。 只要團隊有紀律地執行這些流程,vibe coding 所產生的技術債,根本無法長存於系統當中。甚至開發者還能透過每日的掃描...

在 GitHub 的 PR Trigger Action中,使用 AI 進行自動化 Code Review

圖片
過去我曾介紹過 在 Azure DevOps 中,使用 LLM 進行 code review 以及程式碼品質掃描(在 [here] & [here] ),得到許多回響,有不少朋友問,是否在 GitHub Repo 中也可以? 答案是…當然可以! 透過 GitHub Actions,我們可以輕鬆整合 OpenAI API 或其他大型語言模型(LLM)服務,打造出自動化的程式碼審查流程。這不僅能協助團隊在每次 Pull Request(PR)時即時分析程式碼品質,還能提供風格建議、安全性提醒,揭露潛在的技術債,使得 AI code review 不再只是理想,而是落地實踐的 DevOps 一環。 要實現這個功能,我們只需要幾個關鍵步驟,即可在 GitHub 的 PR 流程中,部署一個基於 LLM 的程式碼品質掃描機制。 首先,建立一個 GitHub Action workflow,觸發時機設定為 pull_request 。接著,我們可以撰寫一個 yaml 腳本,在 PR 被觸發時,讀取變更的程式碼(commit changes)並送出給 LLM API(例如 OpenAI 的 GPT-4)。最後,將分析結果格式化為 comment,自動撰寫在 PR 回覆中,讓開發者即時收到建議。 我們先來看執行的效果。 底下 repo 中原本有一段程式碼,是計算BMI用的: public void OnPost ( ) { if ( Weight . HasValue && Height . HasValue && Height > 0 ) { Height = Height / 100 ; // Convert height from cm to m BMI = Weight / ( Height * Height ) ; } } 我在分支中將其修改如下,請注意,其中有很多明顯的bug和不當的寫法: public void OnPost ( ) { if ( Weight . HasValue && Height . HasValue && Height ...

2024 LINE Bot 帳號申請流程變革

圖片
只要活著,就會改變。 我常說,只要你待在資訊領域夠久,那『 變化 』這件事情對你來說,就絕對是家常便飯。 LINE Bot 最近的變化是,從 2024/9/4 之後,開發人員無法透過 LINE Developer Console 建立 LINE Bot 帳號囉。 過去,開發人員一般都在 LINE Developer Console 建立 LINE Bot 對談機器人( LINE Messaging API channel),其實也就是官方帳號,為了讓入口更加一致,現在改為統一在 LINE Official Account Manager 才能建立。 如果你從 LINE Developers Console 進去,試圖建立 LINE Bot 帳號,現在會看到底下畫面: 也就是請您改為到 LINE Official Account Manager 建立,點選按鈕之後,會出現: 依照步驟建立好之後,你可以選擇暫時不要申請認證帳號: 進入管理畫面後,可以先去開啟 LINE Messaging API 功能,先選擇左上角的設定: 接著在左方選單選擇 Messaging API,並啟用: 這個步驟一定要做,否則,你將無法在 LINE 開發人員後台(LINE Developer Console)看到該帳號 過程中你會成功的讓該官方帳號啟用 LINE Messaging API功能,並且選擇或建立 Service Provider: 同時也可以在這邊設定 WebHook,但建議切換到 LINE Developers 後台進行後續設定: 我自己覺得這個改變很是關鍵。 這讓對談機器人的建立主導權,從開發團隊移轉到帳號擁有者身上。這是一件好事,怎麼說呢? 過去,很多甲方的客戶(業主)並不知道其實自己就可以建立一個新的對談機器人,或是可以自行把已經建立好的官方帳號升級(加入)對談機器人的功能,以為必須透過開發商(乙方)來建立。甚至可能也不知道其實不需要開發商的介入就可以自行設定 WebHook 來改變官方帳號的自動化行為。 這導致,開發商總是用自己的公司(或工作室)名稱來幫業主申請官方帳號,徒增後續的帳號認證和管理、移轉權限的困擾。如今這樣調整之後,整個帳號建立、設定的主導權從開發商回歸官方帳號的業主身上,省去彼此間權利義務歸屬的困擾。...

在大語言模型(LLM)中使用企業內的資料

圖片
大型語言模型(LLM)雖然很好用,但在生成回應時,可能會出現「幻覺」現象,生成與事實不符的內容。此外,LLM 的知識受限於訓練資料,無法即時更新。為解決這些問題,檢索增強生成(RAG)技術常被引入,透過從外部知識庫擷取相關資訊,為模型提供最新且準確的資料。這樣可以提高用戶詢問問題時,回應的準確性,也減少了重新訓練模型的成本。但建立RAG功能往往需要一些技術能力,對一般用戶來說可能不是人人都可以實施。 因此,在 Azure OpenAI 服務中,加入了「新增您的資料」(Add Your Data)功能,允許使用者將自訂的非結構化或結構化資料(如 PDF、Word、MarkDown、純文字…等)整合到 OpenAI 模型中,以提供更具上下文相關性的回答。 這項功能透過 Azure AI Search 進行索引,並運用像是 Retrieval-Augmented Generation (RAG) 這樣的技術,在用戶詢問問題時,優先檢索事先準備好(索引過)的資料,將其作為LLM回應的基礎,以提升回應的準確性。這技術適用於知識庫QA、企業內部搜尋 及 AI 助理…等應用,無須微調模型即可實現個性化且正確的回應。 使用「新增您的資料」 使用的方式也很簡單,當你佈署好一個AOAI的LLM模型(例如 gpt-4o)之後,可以到上圖中的聊天遊樂場,接著按下圖中「新增您的資料」按鈕,在出現的畫面上選擇Upload files: 接著你會看到底下畫面,請先點選藍色的小字,建立 Azure Blob 與Azure AI Search 服務(建立時建議與AOAI佈署在同一個資料中心): 建立儲存體時,可以參考底下設定(名稱則可以自行選擇): 建立 Azure AI Search 服務時,則可以參考底下: 完成後,我們回到 Add Your Data 的設定畫面,請依照底下順序操作: 先選取 Azure Blob 與 Azure AI Search 服務,接著輸入索引名稱(可自行設定),然後暫不勾選新增向量搜尋,最後按下『開啟CORS』,成功後,會出現底下畫面: 你會發現顯示的訊息變成綠色,這時候就可以按『下一個』按鈕繼續。 接著,你就可以在底下畫面上傳檔案(可以接受 pdf, 文字檔, docx, pptx 等多種格式…): 然後會出現讓你選擇搜尋類...

為 Azure DevOps Services 建立 Linux Self-hosted Agent

圖片
學員上課的時候都會關心,位於雲端的 Azure DevOps Services 要如何將應用程式佈署到地端 on-premise 環境? 主要有幾個方法,像是使用 Self-hosted Agent、使用 Deployment Group、或是透過 VPN 等機制,其中最簡單的就是 Self-hosted Agent 的建立,它同時也是我們想要進行客製化的建置環境或流程時,最有效的方式。 準備VM 想建立 Self-hosted Agent 非常簡單,以 Linux 的 Agent 為例,只需幾個步驟。 首先,請先建立一台 Linux VM,我們以 ubuntu 為例: 只需要選擇 24.04 的版本,設置適當的大小,並且以自訂密碼的方式配置 SSH (22)連接 port 登入即可: 接著,在 ADO 的 Agent pools 選擇 Default: 在跳出的畫面選擇 Linux 複製最新版的 agent 下載位置(上圖中 copy URL to clipboard 取得的網址即是)。內容應該會類似底下這樣: https://vstsagentpackage.azureedge.net/agent/4.251.0/vsts-agent-linux-x64-4.251.0.tar.gz 接著,透過 SSH 登入剛才建立好的 ubuntu vm,採用的方式是: ssh 帳號@IP 輸入密碼之後,如果成功,則會出現底下畫面: 遠端登入成功之後,即可對該伺服器下達指令。 請在 windows terminal 以 ssh 連線的 ubuntu 環境中,下達底下指令: mkdir myagent && cd myagent 這會建立一個myagent資料夾,並且進入該資料夾中。 接著,請執行底下指令,來下載agent: curl -O https://vstsagentpackage.azureedge.net/agent/4.251.0/vsts-agent-linux-x64-4.251.0.tar.gz 其中 curl -O 是下載檔案,而後面的url,請換成您剛才在上圖A中所複製到的最新版URL。 接著,再透過底下指令解壓縮: tar zxvf vsts-agent-lin...