發表文章

使用 Bot Framework 與 Azure Bot 建立 Teams Bot (2024)

圖片
這題目好繞口。 最近LLM(大語言模型)正夯,其中 OpenAI 算是主流模型之一,而MS 的Teams 又幾乎是台灣中大型企業的標配,使得很多客戶想要在 Teams 裡面建立一個可以串接 OpenAI 的對談機器人,讓 LLM 來回答企業內部員工的問題。 建立 teams bot 要建立可以在 teams 裡面與用戶對談的機器人,最理想的方式大概有兩種,一個是 MS Bot framework,另一個則是 Copilot Studio。 如果你具有開發能力,也喜歡寫程式,那我覺得 MS Bot Framework 是一個頗理想的選擇。我曾經在 2017 年寫過 Bot Framework 相關的文章。對,七年之前! 內容當然也已經作古了。 在大語言模型以勢如破竹之姿地佔據開發人員的注意力,以及這麼多用戶的需求下,我今天終於有動力寫一個 2024的版本。 其實,這幾年 Bot Framework 也悄悄的有了一些改變,讓整個開發流程和設計變得非常簡單。想要透過 Bot framework建立 teams bot,基本上只有幾個動作… 使用VS 2022建立 AI Bot專案,在開發環境透過 Emulator 測試和 debug。 確定可以運行之後,在雲端建立一個 Azure Bot 與 Web App。 把AI Bot專案佈署到雲端的 Web App,取得 WebHook URL之後,在 Azure Bot上將 WebHook URL 進行配置。 在Azure Bot上設定 teams channel,完成後取得該 Teams Bot 的 URL (在 teams 中)開啟該URL,這樣就可以囉。 Let’s do it. 使用 VS 2022 建立 AI Bot專案 當你安裝好 Bot Framework SDK 之後,VS2022會出現底下範本: 我個人是建議選擇 Echo Bot,因為它最好修改。 建立好的專案架構如下: 其中,ChatGPT.cs那支程式是我自己加上去的,主要是為了讓 Bot 可以串接 OpenAI API,其餘的全是 Bot Framework 原本的內容。 其中比較需要注意的是 appsettings.json ,其中有一些關鍵的資訊需要設定。(容後詳述) 我已經把最終寫好的專案放上 git...

開啟 teams 中的『會議轉錄(謄寫)』與Copilot會議記錄、摘要功能

圖片
在 Teams 中有一個非常好用的功能,可以透過 “謄寫” 把 Teams 的語音會議變成逐字稿,這部分當然是用到語音識別(語音轉文字)的AI技術。 開始謄寫與自動會議紀錄 當啟動一個會議之後,主席可以透過底下這個『開始謄寫』功能來開啟: 這個功能之所以重要,是因為他也是 Teams Copilot 要能夠順利使用的基礎。我們可以透過 Teams Copilot 進行會議的摘要、總結、整理、或是進行會議內容的詢問,而這後面用的則是LLM(大語言模型)的能力: 這功能對於需要參加很多會議的主管、或是在開會遲到的同仁,都是很方便的功能,可以透過詢問Copilot快速地進入會議狀況。 開啟 “謄寫” 功能 然而,這一切的基礎 “謄寫” 功能卻不是每一個機構都有預設開啟,如果你發現你的 “謄寫” 功能是灰色的(無法點選),就意味著你的組織沒有開啟(或沒有為你開啟)這個功能。 那組織的管理員該如何開啟此功能呢? 很簡單,只需要到 Teams 系統管理中心,點選 『設定和原則』 --> 『會議』: 進入 『會議』 的設定之後,找到『會議錄製』–>『轉錄』 將其『開啟』即可: 如此一來,組織內的同仁就可以順利的使用 Tteams 會議中的語音轉文字(謄寫)功能,也可以使用 Copilot 來查詢會議的內容囉。 Enjoy it~

使用 4o 模型在ChatCompletion 中進行影像識別與圖片說明

圖片
上課時,學員問到網站版本的 ChatGPT 可以上傳圖片進行識別,並且詢問跟該圖片有關的事項,這怎麼做到的? 『非常簡單呀』我說。『一樣使用 Chat Completions 就可以了。』 學員不解。 我直接拿出範例,這邊有張消費發票的照片: 你只需要把這張照片轉成 base64 編碼,或是把這張照片上傳到雲端,並取得一個網址,例如: https://hackmd.io/_uploads/SyQphJ77Jx.png 接著就可以直接以這個網址作為 chat/completions 呼叫時的參數 “type”: “image_url” 的 "url值,像是底下這樣: { "model" : "gpt-4o-mini" , "messages" : [ { "role" : "system" , "content" : "你是一個公司的支出申請助理,可以辨識用戶上傳的發票,以便於幫助用戶整理出要報銷的單據資料。" } , { "role" : "user" , "content" : [ { "type" : "text" , "text" : "這是一張消費發票,請擷取照片中的文字和數字,特別是發票號碼" } , { "type" : "image_url" , "image_url" : { "url" : ...

Azure OpenAI Content Filter 之 我是善良的AI使用者

圖片
昨天在久違了的南部上課時,跟學員聊到 Azure OpenAI 和 OpenAI 兩者之間有一個很明顯的差異,那就是 ==> Azure OpenAI 明顯的對內容敏感很多,我是指,針對有疑慮的內容篩選( Contnet Filter )。 怎麼說呢? 如果你用API 呼叫,會發現,同樣的模型、同樣的API、同樣的提示,OpenAI 會乖乖地回答,Azure OpenAI 就硬生生地把我給過濾掉: 用戶問你有提供哪些服務不行嗎? 不知道這個 AI 是想到哪裡去了? 會不會太敏感了點? 如果你有Azure OpenAI 的帳號,歡迎你可以試試看,看看是否和我一樣,常常被 content filter 卡到,把我用戶傳來的問題給過 Ban了。 (但有位學員說,它們公司自己用Azure OpenAI 搭建的 ChatGPT 都不會耶,他懷疑說是不是其實是 “我” 被 MS 盯上了,因為看到是我的帳號,因此才會被過Ban掉? … 這意思是我是黑名單? 😱 我不信。) 好吧,我是一個善良的AI使用者,為了謹慎一點,我可以接受過濾器嚴格,但不同類型的對話,應該也有不同的篩選等級吧? 有些服務可以嚴格一點,但有些服務則應該能調整的寬鬆一點才對啊,總不能全部都管的死死的。 那…這有辦法可以設定嗎? 還真的有。 原來可以到 Azure AI Studio,選擇內容篩選即可: 你可以針對你的需要,放寬或調整內容篩選的嚴格性,也可以設置成針對特定提示文字進行封鎖: 設定好這個組態之後,可以到你的 部署 ,將其配置給你部署的模型,作為其篩選規範: 如此一來,就可以針對篩選的嚴格性做出有差別的調整囉。 我本來就是一個善良的AI使用者,不過,能夠自己依照需要設定篩選的嚴格性,還是好一點的。

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...