發表文章

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

Power Automate 自動化網頁操作小技巧

圖片
今天,到客戶端上課的時候碰到了個問題,有個範例是使用 Power Automate Desktop 來進行自動化的 Google search。本來是個再簡單不過的動作,卻因為瀏覽器的行為導致搜尋的結果不正常。 🎷問題 (為了方便描述,我稍微做了簡化)其實整個 flow 大概只有底下這樣: 第一個步驟 : 自動開啟 chrome 瀏覽器,進入搜尋頁面? 第二個步驟 : 定位到 文字輸入方塊 中,輸入特定文字(上面的例子是 流感疫苗 )。 第三個步驟 : 模擬滑鼠自動按下 『Google 搜尋』鈕。 本來應該這樣就可以順利運行,但瀏覽器的一個行為,卻導致第三個步驟卡關。 就是 Chrome 瀏覽器在步驟二自動出現了彈出式的選單(我們姑且先不管為何會有這個異常行為,先看這個行為導致的結果),彈出的選單壓住了底下的『搜尋』按鈕: 你會發現在這種狀況下,這時即便第三個步驟可以運行,搜尋出來的結果也不正確: 因為這時候搜尋到的,其實是排在選單上的候選項目『流感疫苗 副作用』,而非原本我們在文字方塊中輸入的文字『流感疫苗 』。 類似這樣的狀況其實很常在透過 power automate 進行瀏覽器自動化時發生。 這是今天到客戶端進行教育訓練時碰到的問題,碰到這種狀況,一時也讓我突然卡住無法繼續。 🎷解決方案 該如何解決呢? 也不難,我讓學員一起和我想辦法,有位學員想出了這個主意 👉 就是『隨便點一下,讓選單消失』,然後再去按下那個『搜尋』鈕。 問題是,要怎麼『隨便點一下』? 我們使用『按一下網頁上的連結(或其他任何元素)』這個 action,來模擬滑鼠點選的行為: 按下google搜尋頁面上空白的地方,讓選單消失: 接著,再用同一個 action 來模擬搜尋鈕的點選: 瀏覽器就會自動在選單消失後,再繼續按下『搜尋』鈕,這樣,就可以順利進行搜尋囉。 🎷結語 在設計 RPA 流程時,因為瀏覽器或運行環境的變數,經常會遇到一些不確定性。因此,透過這類「小動作」來排除異常情境,可以讓自動化流程更穩定、更可靠。 而且,學員能夠親自操作並思考解決方案,不僅能提升學習效果,也能培養解決問題的思維,這點特別有趣! 你有遇過類似的問題嗎?你會怎麼解決呢?

在 Azure 上部署與使用 deepseek R1 model

圖片
現在,你可以在 Azure AI Foundry 上使用 deepseek R1 model 了,如果不想自己在local搭建,又不想用位於 deepseek 的伺服器,那微軟 Azure 給了你另一個選擇。 搭建好後,你將會有自己的 endpoint,可以直接透過 REST API 呼叫 ,並且擁有 Azure 上預設的內容過濾器(content filter),以確保輸出輸入的安全性。 使用的方式很簡單,只需要在 Azure Portal 先建立 Azure AI Foundry 服務: 建立時稍微留意一下,由於目前 deepseek model 只有在幾個資料中心提供,因此建議你選擇 Esat US 2 資料中心作為 資源所在位置: 建立完成之後,進入該服務,點選左方選單的 概觀 ,進入 Azure AI Foundry Portal: 進入之後,可以在 模型+端點 處部署基本模型: 在列出的模型清單中,找到 R1: 接著確認專案和部署名稱: 按下 部署 鈕即可完成部署。完成後,可在 遊樂場 中開啟: 接著就可以輸入文字測試: 也可以從檢視程式碼中找到API呼叫方式: 有了 endpoint 與 金鑰之後,就可以大方的透過程式碼來呼叫囉: 內容篩選 順帶一提,微軟的 AI Model 大多內建 content filter 來做內容篩選,因此,預設狀況下,舉凡仇恨、暴力、情色、自殘…等文字的輸入和輸出都會被過濾掉,以確保安全性,這部分如果你想要客製化調整,可以參考底下位置: AI應用即將落地 最近很紅的 deepseek ,網路消息很多。有人覺得這模型有些貓膩,有人覺得從 論文 看起來,確實有不少的創新。但不管如何,他的出現都宣示著一個更便宜、更有可能讓 AI 解決方案落地的機會即將來臨。 過去GPT 4o和o1這等高階的模型,一直讓LLM應用的成本居高不下,而deepseek v3和r1的出現,一舉把推斷成本降低到1/10以下,這讓AI應用的門檻大幅降低。而蒸餾過的小模型,也可以在較低的PC環境上直接運行,這又讓AI edge 化的可能性大幅提高,2025年看來將會熱鬧非常。