Keep Walking - 王建民篇 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 作者: David - 11月 07, 2008 哇, 我喜歡的Keep Walking廣告增加了王建民篇...看來我需要考慮要不要更新桌面了...^_^ 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 留言
開啟 teams 中的『會議轉錄(謄寫)』與Copilot會議記錄、摘要功能 作者: DD - 11月 30, 2024 在 Teams 中有一個非常好用的功能,可以透過 “謄寫” 把 Teams 的語音會議變成逐字稿,這部分當然是用到語音識別(語音轉文字)的AI技術。 開始謄寫與自動會議紀錄 當啟動一個會議之後,主席可以透過底下這個『開始謄寫』功能來開啟: 這個功能之所以重要,是因為他也是 Teams Copilot 要能夠順利使用的基礎。我們可以透過 Teams Copilot 進行會議的摘要、總結、整理、或是進行會議內容的詢問,而這後面用的則是LLM(大語言模型)的能力: 這功能對於需要參加很多會議的主管、或是在開會遲到的同仁,都是很方便的功能,可以透過詢問Copilot快速地進入會議狀況。 開啟 “謄寫” 功能 然而,這一切的基礎 “謄寫” 功能卻不是每一個機構都有預設開啟,如果你發現你的 “謄寫” 功能是灰色的(無法點選),就意味著你的組織沒有開啟(或沒有為你開啟)這個功能。 那組織的管理員該如何開啟此功能呢? 很簡單,只需要到 Teams 系統管理中心,點選 『設定和原則』 --> 『會議』: 進入 『會議』 的設定之後,找到『會議錄製』–>『轉錄』 將其『開啟』即可: 如此一來,組織內的同仁就可以順利的使用 Tteams 會議中的語音轉文字(謄寫)功能,也可以使用 Copilot 來查詢會議的內容囉。 Enjoy it~ Read more »
使用LM Studio輕鬆在本地端以API呼叫大語言模型(LLM) 作者: DD - 7月 02, 2024 最近上課常被問到,如何在地端環境搭建出大語言模型(LLM),並且呼叫其API。 一開始我不太理解為何會有這樣的需求(因為在地端自行搭建運行LLM的成本不一定比較低,即便可能比較安全),但被問多了,也就開始遍尋相關的解決方案,看看有沒有什麼最簡單的方式,可以讓開發人員在地端測試大語言模型? 後來我選擇 LM Studio ,它就是一款設計來運行大型語言模型(LLM)的平台,有個算是挺優雅的整合環境,讓一般 end-user 或開發人員,都可以輕易地在 local 端進行模型的部署和測試。 LM Studio 本身支援多種模型架構和框架,當然,最重要的是,它是免費的。 下載安裝 都很容易,我就不多說。 安裝好之後,你可以看到首頁中已經呈現了許多 Hugging Face上的模型: 這顯然是因為Hugging Face是大部分免費開源模型的集散地。 你可以搜尋自己喜歡的模型,透過LM Studio下載到local之後,就可以直接載入(下圖一): 隨手設定一下 system prompt(上圖二),然後,就可以直接對談了。(上圖三) LM Studio會使用你的GPU進行運算(如果有的話),你會發現,原來有好的設備(GPU),運行的速度可以如此之快。 Local Server 對於開發人員來說,它還有個超級更友善的功能。 LM Studio本身還提供一個 local server,可以幫你把模型包裹起來讓你直接透過API呼叫該模型的功能,例如: 上圖是我們開啟 LM Studio中 Local Server功能後的結果,你可以透過 localhost 的 1234 port 來呼叫這個被 LM Studio 運行起來的大語言模型。(有沒有發現,我們用的也是 chat/completions API) 透過Postman簡單提供一下 JSON Body: { "model": "LM Studio Community/Meta-Llama-3-8B-Instruct-GGUF", "messages": [ { "role": "system", "content": "你是AI助理,請一律用繁體中... Read more »
原來使用 .net 寫個 MCP Server 如此簡單 作者: DD - 6月 02, 2025 MCP 的重要性與意義 MCP 的重要性在於它建立了一個標準化的架構,讓開發者能夠快速建構出給 AI Agent 呼叫的各種功能。 舉例來說,假設我們希望實現一個 可以透過自然語言對談的請假功能 ,傳統上我們必須建立一個前端 Chat Bot 作為 UI、還得撰寫後端 API、資料驗證邏輯、資料庫存取介面…等,另外還要設計 Chat Bot 的對話邏輯,才能把請假功能整合到Chat Bot的對談訊息中。 但在 MCP 的架構下,這樣的流程可以大幅簡化。 開發者只需要實作幾個「請假功能」的介面(Tool Interface),接著定義好運行這個功能需要輸入哪些參數(例如請假人、開始時間、代理人、事由…etc.),並透過 JSON 來描述這些參數的格式與驗證邏輯。接著,AI Agent 便可以在對話過程中,自動根據對談前後文理解使用者意圖,挑選出適合的Tool來運行,主動發出呼叫的請求。如此一來,大幅簡化了AI Agent開發的難度。(本質上就是 Function Calling 的概念) 而 .net 又把這個難度降低到人人可以開發的程度,底下是一個使用 .net 開發的 請假功能 MCP Server,並且使用 GitHub Copilot來呼叫的例子: 其實我之前用 Semantic Kernel做個類似的範例,只是如今 .net 讓它變得更簡單,而且輕易地可以透過MCP架構讓不同的 MCP Client端呼叫使用。 如何用 .NET 撰寫 MCP Server 要使用 .NET 撰寫 MCP Server 非常簡單,受益於 Microsoft.Extensions.Hosting 和 ModelContextProtocol 套件,我們可以在幾分鐘內輕鬆地實作 MCP Tool 和 MCP Server 。 以下是MCP Server的完整程式碼: using Microsoft . Extensions . DependencyInjection ; using Microsoft . Extensions . Hosting ; using Microsoft . Extensions . Logging ; using ModelContextProtocol . Server ; using System ... Read more »
敏捷導入的真相 作者: DD - 1月 16, 2026 這天 Azure DevOps 課程下課後,又有位學員留下來找我。 事情是這樣的… 他們公司政策規定要導入敏捷和ADO,但上完我的課程後,覺得有點困惑… (我內心OS: 呃? 怎麼會呢? 🤔 你不是應該上完我的課程後豁然開朗的嗎?) 他說,因為公司很多專案還是瀑布式在跑。需求從客戶那邊來的時候,動不動就是三個月、五個月這麼大包的東西。PM 離開技術圈一段時間了,也不知道該怎麼 end-to-end 切出一個迭代(兩周)內可以完成、又有價值的 PBI。 (我一邊聽,一邊想,覺得這是個難題沒錯,但其實最大的挑戰是心理障礙和習慣,因此…) 我跟他說:「其實把需求顆粒度切小,對每個人都有好處。對 PM、對客戶、對開發人員,全是利多。」 他笑的很無奈。 「這道理我可以理解,但我們的開發人員同時身兼好幾個專案,很難專注在某一個案子上。這時候,大家心態上就不想把顆粒度切小,因為怕時時刻刻被盯著要看進度。」 他停頓了一下,接著說:「所以開發人員寧願維持以前那樣一個功能做一個月、兩個月的顆粒度。這樣開發人員可以先去忙別的事情,最後幾天再來趕工。」 聽完,換我沉默想了幾秒。 因為這根本不是技術問題,也不是工具問題。這是整個組織的心態問題。 更深層的,是大家對「敏捷」的誤解。 很多人以為敏捷就是迭代、就是 Scrum、就是看板或站立會議。 但其實,真正的敏捷有一個很明顯的照妖鏡: 需求的顆粒度 。 沒有小的需求顆粒度,就沒有頻繁交付;沒有頻繁交付,就沒有敏捷。 我幾乎可以說,如果團隊無法把需求顆粒度變小,那敏捷導入十之八九是假的。 粗顆粒度的惡性循環 你在 Board(看板) 上看過那種預估要做三、五週的需求卡片嗎? 「完成訂單管理功能」(預估五週) 「優化報表系統」(預估三週) 「整合第三方金流」(預估兩週) 每次看到這種,我就知道這個團隊有問題。 為什麼?因為一個需求如果要做兩週,在這兩週裡,這張卡片的狀態是什麼?「In Progress」? 但 In Progress 告訴了我們什麼?什麼都沒有。你不知道他做到哪裡了,可能才剛開始,也可能快做完了,也可能卡住了但不好意思說。 更慘的是,開發者在自己的 branch 上悶著頭寫了兩、三週的程式碼。等到要 merge 的時候,衝突、錯誤、邏輯不一致,問題才一個一個冒出來。然後就是... Read more »
雖然可恥但很有用的技術 - ADO Pipeline 客製報表呈現頁面 作者: DD - 1月 29, 2026 上禮拜在改 Azure DevOps 的 Pipeline,因為客戶遇到一個很實際的問題。 用戶抱怨,每次 Pipeline 跑完,他們團隊的 PM 和相關人等都跑來問:「這次測試過了幾個?Coverage 多少?部署有沒有成功?Sonar 掃描的報表結果如何?」 苦主耐心地一一回答:「這些資訊都在 Pipeline 的 tasks 裡面啊,你們自己點進去看就好。」 但是,這些大爺們從來不想自己去一個一個 tasks 去點,他們希望有個「一目了然」的整合頁面,能直接看到他們想要的重點數字就好。 『就算我說服了他們,他們也真的自己去看,但沒多久又在 LINE 上問我:那個 Log 到底是什麼意思?這個掃描報告要在哪裡找?』 就這樣『來來回回,他們累了,我也累了。』 苦主無奈地說。 需求很簡單:給我一個摘要頁面就好 大爺們最後跟苦主說:「你能不能幫我們在 pipeline 裡面弄一個 Summary 頁面?我們只要打開就能看到重點數字,不用再去翻那些 log?」 恩恩,我被問到的就是這個… Pipeline 跑完之後,能不能有個漂亮的摘要頁面,一進來就看到重點: 測試通過幾個、失敗幾個、Coverage 趨勢 部署到哪個環境、- 有沒有什麼重要的警告 源碼掃描報告的摘要是如何? 自動化測試結果? 能不能上正式機? … 就這樣。 說的很簡單,要蒐集到需要的資訊似乎也還算容易。 但問題是,要怎麼把這些資訊「塞」進 Azure DevOps 的 Pipeline Summary 頁面? 然後我發現了個神奇的東西 在翻 Azure DevOps 的文件時,我發現一個很有趣的機制。 你知道那些客製化的 Extensions 是怎麼樣讓你在 Pipeline 的 Summary 頁面看到額外的資訊(例如掃描報告、測試報告)的嗎? 類似底下這樣: 答案可能會讓你傻眼,不是呼叫什麼 REST API、不用設定什麼 Token、也不用安裝套件。 ADO 用的方法超級簡單: 監聽你在 Build Agent 裡面的 console 輸出 。 對,就是 stdout。 你只要在 Pipeline 運行的 script 裡面 echo 一行特定格式的字串: echo "##vso[task.uploadsummary]... Read more »
留言