Metro Style App當中的資料儲存機制 - ApplicationData 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 作者: David - 6月 26, 2012 ApplicationData是WinRT當中新的資料儲存機制,類似過去我們在Silverlight與WP7當中的IsolatedStorage,但由於同時又支援了Roaming, Temporary, 因此功能更為強大,在這段影片當中,我們就來看看WinRT當中的ApplicationData機制該如何使用... 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 留言
使用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 »
VS Code的字體大小 作者: DD - 6月 10, 2018 身為.net developer,這年頭是什麼code都得要會寫的年代。 而雖然我的NB還沒從Windows淪陷為Mac OS,但寫Node.js和Python免不了要用VS Code,這是一種愛的表現。 但歲月不饒人,盡管微臣非常熱於配合,但VS Code預設字體的大小在我還沒錢買大尺寸螢幕的狀況下,實在讓老臣難以適應。當下的第一個反應是什麼? 當然是 Ctrl+滑鼠滾輪往上推…哇靠,沒用。看…這設計…恩,千錯萬錯一定是我的錯。 只好從選單 file –> Preferences –> Settings: 在出來的視窗中,你可以看到 editor.fontsize: 沒錯,改它就行了。改不動? 喔,不好意思,我沒仔細看說明,要copy到右邊是吧,沒問題,copy->paste->modify->Save…搞定。 好簡單啊…連ctrl+(mouse scroll up)都用不到了呢… 咦?這是一篇抱怨文嗎? 沒有,誰說的? 免費的tool我們還有什麼好抱怨的呢…要感恩啦。 啊….對了,如果你還是堅持要使用 Ctrl+滑鼠滾輪,請找關鍵字… "editor.mouseWheelZoom" Read more »
使用 Dify 建立企業請假機器人 作者: DD - 10月 03, 2024 八卦與未來 上個月,前Google執行長Eric Schmidt在史丹福有場演講,媒體關注的是八卦消息(如果你也曾關注,網路上有很多鐵定可以找到),但我注意到的則是他提到了自己認為接下來 AI(特別是大語言模型) 可能的發展方向,包含: Large Context Window AI Agent Text-to-Action 底下這邊有這一個段落的影片: https://www.youtube.com/watch?v=zl3k1ksFZdY 為何我會關注這部分? 因為上述的三個方向,也是身為開發人員的我,過去這一年,來與LLM打交道後的感想。昨天,我在 twMVC 的研討會分享中,展示了一個其實我過去早做過了N百次的範例,就是企業的請假機器人。(唯一不同的是,這次我幾乎沒有寫任何程式碼) 場景是,員工在家裡生病了,想要透過語音或是app進行請假,你可以看底下這個運行的範例 (git圖檔會循環播放,開始是 『我好像感冒了』): 用自然語言對談的方式,即可完成請假。 我說過,類似這樣的範例我做過很多次,用 LINE Bot 搭配 C# 做過,用MS Bot Framework 做過,前陣子也用 Semantic Kernel 框架做過,更早期,還沒有AI的時代,我也在EIP和HR系統裡做過。 但我想說的是,這 就是 Text-to-Action 的呈現,也是一個典型的 AI Agent 的例子,它讓我們透過自然語言(可以是語音或文字),直接命令機器人(Chat Bot、AI 助理、Agent、Assistant …不管你叫它什麼…)幫你完成一件事情(請假、售票、查詢資料、做財務報表、統計圖表、寫程式…etc.)。 這是一直以來人類對電腦最底層的需求與期待。 隨著 LLM 能夠處理和記憶的 Context 愈來愈被放大,AI Agent 所能夠處理的任務就更加的不受限制。 自然語言才是最符合人類直覺的操作 順帶一提,我昨天在研討會中講了一個故事。 有天,你覺得自己需要聘請一位助理,因此上網張貼徵人啟事,沒多久,你找到了一位號稱上知天文、下知地理的高材生,來幫助你更有效率的完成工作。 他什麼都好,唯一的一個小缺點是,你不能直接對這個助理下達指令,你必須用一種只有這個助理看得懂的語法,才能要求這個助理幫你完成特定的工作。這些語法還挺 Read more »
使用Qdrant向量資料庫實作語意相似度比對 作者: DD - 4月 22, 2024 什麼是向量資料庫? 在許多的AI實作當中,都有向量資料庫的使用需求。例如RAG(檢索增強生成)、或是資料的相關性比對、相似性搜尋…等,這些應用情境中,我們都會用到向量資料庫。 向量資料庫主要的任務,當然就是存儲和查詢向量數據。被儲存的向量數據通常是高維度的資料,以陣列(集合)的形式呈現。 例如,OpenAI就有提供一組Embedding API,讓我們可以把文字給向量化。你可以透過該 API,把一句話(一段文字)轉換成向量數據,類似底下這樣: OpenAI 的這組 Embedding API,在預設狀況下,會把資料轉成 1536 維度的向量數據,其背後的行為是把文字送給一個訓練好的模型,透過該模型跑出這組向量數據,再回傳給用戶。 然而,把一段文字給向量化的目的是什麼呢? 當我們把文字做了這種轉換後,在 1536 維度的座標空間(向量數據)中,愈相似的文字,透過Embedding API會得到距離愈接近的座標點,藉此,我們得以迅速的判斷兩段文字在語意上的相似性。 而向量資料庫中所謂的查詢功能,主要就是向量的檢索,像是『近鄰搜索(Nearest Neighbor Search)』,當用戶或應用程式提交一個向量查詢時,向量資料庫會幫我們找出資料庫中,與之最相似(接近)的向量座標點。 因此,開發人員只需要透過 Embedding API,把文字轉成向量,再把轉換好的向量座標值,儲存到向量資料庫之中,未來就可以透過向量資料庫來查詢相似(接近)的文字。 關於這個部分,如果讀者有興趣,前陣子有段網路上的影片把多維度向量資料庫的概念介紹的蠻清楚的: https://www.youtube.com/watch?v=W_ZUUDJsUtA https://www.youtube.com/watch?v=ct20Kv8yn0U 為何需要? 向量資料庫最實務上的應用,就是找到類似的特徵值。 例如,當我們把人臉的特徵值以向量資料的形式儲存到向量資料庫中之後,我們就可以透過資料庫本身提供的搜尋功能,快速地尋找出相似的人臉,這也是許多AI應用實現的基礎。 我們底下的程式碼範例,則是找出最接近的問題。(呃…什麼意思?🤔 請往下繼續看) 我們在建立對談機器人時候,常常需要讓機器人回答用戶的問題。這時,我們會讓用戶輸入問句,然後透過 Embedding API Read more »
使用C#開發LineBot(3) - 使用LineBotSDK發送Line訊息 作者: David - 11月 08, 2016 新版的Line Messaging API,要主動發送訊息給用戶不是很困難,主要是透過Push API,可以參考底下的官方說明 : https://devdocs.line.me/en/#push-message 另外,如果你想申請一個Line Bot,可參考: 關於LineBot (1) - 用c#建立一個LineBot 前陣子說過,我們為了團隊開發方便,做了一個 Nuget Package 以便於讓撰寫C#的開發人員可以方便的進行Line Messaging API的操作。 所以,如果你想要透過該SDK來發送訊息給用戶,可以透過底下的指令: isRock.LineBot.Utility.PushMessage( UserId, 要傳送的訊息, AccessToken); 別忘了使用前,要先引用linebotSDK這個套件: 當您在.net 4.x的專案中,安裝上述lintbotSDK,即可透過前面提到的指令發送訊息給用戶,但請注意,該用戶必須加你的bot為好友。 你可能在使用時會碰到一個問題,怎麼知道用戶的id呢? 請注意,PushAPI的Line用戶id並非你的line ID,而是一長串項是底下這樣的id: U6OX388eOX3634X2OX2e341OX06b8OX4123 這個ID會在你的用戶跟你的bot交朋友,或是對談的時候,由系統傳送給你所設定的WebHook網址(其本質上是一個asp.net WebAPI或類似的API服務)。你會在Line傳遞給該WebHook URL的封包中的JSON形式資料內獲得。 也就是說,當你的用戶傳訊息給你的Bot,或是與你的Bot做朋友(或封鎖),你所在你的LineBot後台,所設定的這個WebHook,都會收到這些相關的訊息。其設定位置如下: 訊息內容是以JSON的格式出現。 但是,如果你還不知道怎麼寫一個WebHook,該怎麼辦呢? 寫個WebHook其實很簡單,以asp.net來說,就是寫一個asp.net WebAPI即可。(有空我再說明,但今天比較沒空) (2017更新,WebHook開發方式請參考 這裡 ) 如果你沒空寫,可以先用底下這個工具(注意這個工具 僅限測試使用 ,我們不保證其穩定性與可用性、與資料安全性): http://isbaas.azurewe Read more »
留言