發表文章

目前顯示的是 11月, 2024的文章

Azure 上的自然語言理解(natural language understanding) - 2024 年版

圖片
一直到今天,如果你去看銀行的線上客服,依舊會發現,許多所謂的AI客服,表現得都很不理想。主要的問題是大部分的AI客服對於中文語意的理解,其實都差強人意。 然而natural language understanding其實是AI Chat-Bot 乃至於 AI Agent的成功關鍵,能夠有效的識別用戶的意圖(intent),才能更進一步的幫助用戶完成所需的 action (例如請假、購票、客訴…etc.),沒有這些,就沒有後面的 AI Agent可言。 目前有哪些技術可以理解用戶所輸入的話呢? 最簡單也優秀的,當然是 LLM(大型語言模型),但由於所費不貲,所以對一般預算有限的企業來說,可能不是最終的選擇。此外,大部分優秀的LLM都沒有開源,導致使用時必須把資料(用戶的對談內容)上傳到雲端(離開國境),這對於比較嚴謹控管資安的單位,可能無法使用。 還有其他可以選擇的 語意理解 AI 服務嗎? 有的,可以考慮 Azure Language Services。 關於 Azure Language services Azure Language Services 是微軟 Azure 提供的一系列人工智慧服務,專為處理自然語言而設計。它整合了多種功能,包括語言理解(Language Understanding)、文字內容分析、摘要、翻譯服務…等,可以幫助開發者快速建構語言驅動的應用程式。透過這些工具,企業可以輕鬆實現客戶意見分析、自動回覆系統、具有語意理解的 chat-bot及多國語言支援的應用程式…等。 建立 Azure Language Services 首先,你可以先在 Azure Portal 建立 Language 服務,過去中文版叫做文字分析,2024正名之後,終於改為『語言服務』: 這邊直接點選左下角按鈕: 使用預設值建立即可,我建議定價層選S: 建立好之後,在服務的『概觀』底下,可以找到『Language Studio』: 完成後,就會進入到Language Studio的主畫面: 使用CLU 進入Language Studio的主畫面後,可以選擇CLU(Conversational language understanding): 接著,建立一個 app: 上圖中語言的部分,請務必點選中文繁體。(暫時先不建議勾

使用Question Answering建立QA Bot (2024)

圖片
自從大語言模型(LLM)橫空出世之後,對談機器人又迎來了一片春天。但坦白說,使用LLM進行QA Bot的設計,在答案需要比較嚴謹正確的情境下,已生成的方式來產生,其實有頗高的風險。即便你使用RAG,要能夠100%的保證AI生成的答案絕對正確,都是一個挑戰。 但,如果採用 Azure 上的Question Answering,則沒有這個問題。因為Question Answering中每一個問題的答案,都是我們事先準備好的。 底下這篇,我們來看一下如何使用Azure Custom Question Answering 來快速建立一個QA Bot。 建立 Azure Language Services 首先,你可以先在 Azure Portal 建立 Language 服務,過去中文版叫做文字分析,2024正名之後,終於改為『語言服務』: 這邊直接點選左下角按鈕: 使用預設值建立即可,我建議定價層選S: 建立好之後,在服務的『概觀』底下,可以找到『Language Studio』: 點選進入該portal,首次進入,會需要選擇 resource type 與 你剛才建立好的 Language Resource: 完成後,就會進入到Language Studio的主畫面: 選擇 Custom Question Answering 進入後,請選擇 Custom Question Answering : 點選後,可以在 Custom Question Answering 的主畫面建立新專案: 關於Azure Search 第一次建立專案時,系統可能會跳出畫面要求你連結到一個 Azure Search 服務: 如果你之前沒有建立,可以先建立一個 Azure Search : 由於它是 Question Answering 搜尋功能的主要能力來源,建議你建立一個 Standard SKU 層級以上的Azure Search服務: 同時資料中心必須與 Language 服務相同。 建立完成之後,重新建立專案, 匯入疾管署資料 App 建立完成之後,我們就可以匯入知識庫,作為QA的來源依據,讀者可以嘗試匯入疾管署的疫苗接種注意事項資料,位於: https://www.cdc.gov.tw/Category/QAPa

MSA(MS Account)個人帳號無法登入 DevTunnel !?

圖片
曾經在底下這篇文章中,介紹過 DevTunnel ,功能和作用我就不再贅述了。自從微軟提供這個免費服務之後,我在開發 LINE Bot 的時候,就以 DevTunnel 取代 NGROK 許久,上課時,也都請學員改用這個服務,以便於能夠讓運行在開發環境的 http://localhost :port 對應到 internet 上真實的某一個網址,好讓 LINE Bot 後台設置的 WebHook URL能夠真正的運行起來。 然而最近,上課時常常碰到學員的個人Microsoft Account 無法登入 DevTunnel 的窘境。使用底下指令: devtunnel user login 一般來說,執行上述指令後,會出現底下畫面,輸入了正確的帳號密碼: 你就可以成功登入使用了: 但如果你看到的並非上面這樣的畫面,取而代之的是錯誤訊息,你可能就得嘗試換一種登入方式,建議可以考慮採用: devtunnel user login -d 這會讓系統採用 device code authentication 登入模式,運行後會出現底下畫面: 依照上面的指示開啟網頁,輸入一次性的代碼(密碼): 輸入該代碼後,系統會再次提示你登入(或是選擇已登入的帳號),成功後,會出現底下畫面: 如此一來,就可以順利登入囉。 後面就可以使用標準的 devtunnel 指令,來進行 localhost port的對映: devtunnel host -p 5000 --allow-anonymous

在 CI Pipeline 中使用 gpt-4o 進行自動化程式碼安全性掃描

圖片
我曾經在 這邊 介紹過,我們可以透過 Azure DevOps 外掛的套件,在 CI Pipeline 中利用 AI (如今是 gpt-4o) 進行自動化 code review。 舉例來說,當我們在 commit 中,把程式碼改成底下這樣: public float Calculate ( ) { int para = 0 ; float result = 0 ; float height = ( int ) Height / 100 ; result = Weight / ( height * height ) ; result = result / 0 ; //todo: 分析BMI計算結果 return result ; } 這時,PR 所觸發的 Pipeline,會在運行過程中,透過 gpt-4o 幫我們掃瞄出底下的 code review 報告: 在 float height = (int)Height / 100; 這行中,將 Height 強制轉換為 int 可能會導致精度損失,建議保持 float 類型以確保計算的準確性。 在 result = result/0; 這行中,除以零會導致運行時錯誤或異常,這是一個嚴重的錯誤,需要修正。 變數 int para=0; 被宣告但未使用,這是多餘的代碼,應該移除以提高代碼的可讀性和效率。 如下圖: 這可以幫上 reviewer 不少忙。 使用 AI 作安全性檢查 最近,心血來潮,想說既然 AI 可以 code review,不如在 prompt 中加上一些檢查安全性的提示,來看看結果如何。 底下我刻意修改了的一些可能有安全性顧慮的程式碼: public void Save ( string userInputFileName ) { string password = "P@ssw0rd123" ; Random random = new Random ( ) ;

如何在沒有UI的狀況下,透過CLI安裝 Azure DevOps Marketplace 中的 套件

圖片
前幾天上課,發現 Azure DevOps 無法安裝套件,我試過不同的機器、不同的IP、不同的瀏覽器、不同的帳號,似乎都會碰到一樣的問題,在 Loading your organization 的時候掛掉: 但是上課不能停,我得繞道而行。 有什麼辦法可以不透過 UI 來安裝 Azure DevOps 套件? 想來想去,發現 az cli 是最好的選擇。 我們可以先透過 Azure CloudShell 來操作 Azure DevOps,先安裝 az cli 的 azure-devops extension: az extension add --name azure-devops az devops login login 的時候需要 Azure DevOps 的PAT(personal access token): 成功登入後,就可以直行安裝套件的 cli 指令囉。 安裝時需要指定幾個參數,分別是: –extension-id 👉 套件ID –publisher-id 👉 套件發行者ID –org 👉 組織名稱 你可以從套件的安裝網址找到 --extension-id 與 --publisher-id: 例如,套件的網址若是: https://marketplace.visualstudio.com/items?itemName=tw-developer.GPTPRReviewer itemName後面的參數內容以『.』隔開的兩者,就是publisher-id與extension-id ,所以,組出的cli指令是: az devops extension install --extension-id "GPTPRReviewer" --publisher-id "tw-developer" --org https://dev.azure.com/studentNCGS6/ 其中 --org 後面的參數值 https://dev.azure.com/studentNCGS6/ 則是你的 Azure DevOps 站台位置。 你可以透過這樣的指令快速的安裝套件。 例如,我常安裝的套件如下: #install extensions az devop