發表文章

LINE Messaging API 的 mention 功能功能介紹

圖片
緣由 在群組聊天中,LINE 的 @ 功能可以讓用戶標註特定成員,確保訊息能夠引起被對方注意到。這對於需要即時回應或要求特定成員參與討論時特別有用。過去,LINE對談機器人(也就是 LINE Bot, OA帳號)無法被 @ ,也不容易判斷出誰被用戶 @ 。現在,透過 LINE Messaging API 的提及 (mention) 功能,開發者可以實現自動回應並處理提及事件,提升互動體驗。 提及 (mention) 功能可以達成的效果 檢查被提及的用戶 :在 WebHook內,檢查訊息中是否有提及其他用戶,並可在回覆中顯示被提及的用戶 ID。 標註 bot 本身 :如果被提及的是 bot 本身,也可以識別出來。 提及所有用戶 :如果是透過 @ALL 提及所有用戶,也可以識別出來。 JSON架構說明 "message" : { "id" : "444573844083572737" , "type" : "text" , "quoteToken" : "q3Plxr4AgKd..." , "text" : "@example_bot Good Morning!!" , "mention" : { "mentionees" : [ { "index" : 0 , "length" : 12 , "userId" : "{user ID of the bot}" , "type" : "user" , "isSelf" : true } ] } 在新版的 WebHook JSON當中,添加了 mention 屬性,用於標識提及(@)事件。當用戶在訊息中提及其他用戶時, mention 屬性會包含...

我的人生,我選擇自己的速度

圖片
汽車引擎的低頻轟轟聲混雜著隧道內的迴音,像一首不斷重複的背景樂曲。我坐在方向盤後,目光緊盯著最前方那台白色小車,它穩穩地以每小時50公里的速度行駛著。 這是一條規定速限的隧道,隧道口的告示牌明白地寫著:「限速50公里。」但隨著我進入隧道,眼前的畫面逐漸變得不安分。 閃爍的壓力 在單線行駛的小隧道裡,白色小車的後方,是一台黑色的SUV,它開始不耐煩地閃起車燈。一次、兩次,閃燈的節奏越來越快,像是催促的心跳聲。SUV不僅用車燈說話,還緊貼著小車的車尾,像一隻焦躁的猛獸,想要把它從車道上擠出去。 SUV開始左右晃動,明顯試圖尋找超車的機會。我在SUV的正後方,彷彿能感受到它的焦躁,就像生活中那些迫不及待的人群,企圖用自己的節奏控制你。他們的存在給出了一種無形的壓力,催促你違背內心的步伐,強迫著自己去迎合他們的腳步。 在這有限的空間裡,黑暗與燈光交錯著,壓力彷彿被放大了無數倍。SUV的車燈依然在白色小車的後方閃爍著,彷彿在譴責他的固執。但我卻見那台白色小車穩定的前行,像是一座在雲霧中靜立的山峰,堅定而沉穩,不為四周的喧囂所動。 隧道的盡頭終於出現,一道刺眼的光劃破黑暗。SUV立刻從小車旁邊呼嘯而過,留下引擎的轟鳴聲。我看著它的背影逐漸消失,心中卻沒有一絲不快,反倒是有一種釋然的輕鬆。 自己的人生 突然覺得,這場隧道裡的行車經歷,像極了人生。我們每個人都有適合自己的速度與方向,但總會有那些試圖影響你、壓迫你的人。可能是工作上的同事或競爭對手、家庭中的期望、朋友間的比較。他們用「閃燈」催促你、用「逼車」推擠你,試圖讓你放棄自己的步伐,用他們的遊戲規則與節奏來競賽。然而,真正的成功不會來自於因著外在壓力的逼迫而忽快忽慢,真正的挑戰在於能否在這些壓力中堅守自我,用自己可以持續的速度不懈地往前走。 堅持自己的速度並不容易,但正是因為這樣的堅持,才能讓你走得更遠、更穩。人生有時好像在這條隧道裡行車,必須堅定地看著自己的路,才不會迷失在旁人給的影響裡。 我在想,當下次我也遇到那些閃燈與逼車時,得試著提醒自己,深吸一口氣,穩住方向盤,對自己說:「這是我的人生,我的速度,我自己選擇。」

使用 Copilot Studio 開發 teams bot

圖片
歷史與背景 Copilot Studio 是由 Microsoft 開發的 AI Agent 設計工具,讓使用者無需撰寫程式碼,就能夠透過自然語言或圖形化介面來建立自己的 AI Agent 助理(代理程式)。 透過 Copilot Studio,可以在單一操作環境中設計、測試、發佈對談機器人(AI Agent)、無論是 MS Teams 、FB Messaging、甚至是 LINE 都可以是發佈和執行該 AI Agent 的對象。 也就是說,你只需要設計一次,就可以在多種平台上同步使用。 由於 Copilot Studio內建就可以直接連結 MS Teams ,透過這套工作來建立對談機器人,可能是現在企業要建立 Teams bot 最方便的選擇。 底下我們會整個走一次如何使用 Copilot Studio 來建立一個 Teams bot。 先登入 由於設計UI目前是獨立的portal,因此您必須打開 Copilot Studio 網站: https://www.microsoft.com/en-us/microsoft-copilot/microsoft-copilot-studio 使用 Microsoft 帳戶登入(必須用組織帳號,如果是第一次登入,建議可以選擇 try free)。 登入後,您將看到一個儀表板,顯示您所有的 bot 專案。 建立一個代理程式 在左方選單選擇 代理程式 --> +新增代理程式 : 在出現的畫面上,填寫相關資料 完成後,就會進入設計畫面。接著點選上圖選單的主題(topic),你會看到列出很多內建的主題(topic)。 什麼是主題(topic) 主題(topic)是 AI Agent 用來理解用戶輸入以及進行適當回應(action/response)的基本單位。每個主題包含一個或多個觸發關鍵字,以及一連串的相應動作。你可以點選『新增主題』,或是編輯現有主題: 建立一個新的主題 在專案頁面,點擊 新增主題 –> 從空白內容開始 。 輸入主題名稱,例如 “BMI計算”。 接著,在主題中,編輯觸發關鍵字,這些關鍵字,會被視為觸發這個流程的關鍵意圖(intent),但由於它目前對中文的支援很有限,你就暫時將其視為關鍵字即可。也就是說,當用戶說了這些關鍵字,就...

使用 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: 上圖中語言的部分,請務必點選中文繁體。(暫時先不建議勾...