在開始使用 Semantic Kernel 之前,先從概觀的角度來理解 Semantic Kernel,本篇內容會說明Semantic Kernel的各項組成關鍵,建構接下來開發時的基礎知識。
Semantic Kernel是一個輕量且開源的SDK,由Microsoft發展這個項目,主要用於支援各項Microsoft的Copilot產品服務,例如:O365 Copilot。其目的在於對LLM應用整合上能夠有一整套模式可以套用,在LLM應用上主要是基於自然語言(Prompt)與指令(Command)的混合流程,透過Semantic Kernel能夠把LLM模型與周圍外部服務連接起來,讓LLM模型的能力更加強大。
從官方提供的示意圖,可以看到所謂的Kernel,就是編排LLM應用工作流的主要物件,在這個工作流裡整合memory(用於長短期記憶)、Plugins、本地Native function,並且有Plan自動計劃能力,透過呼叫適當的元件來滿足請求,這一切的起點始於Prompt,終點則為AIGC結果(AIGC:AI Generative Content,生成式AI)。
( 來源:https://learn.microsoft.com/en-us/semantic-kernel/overview/ )
根據官方透漏,Semantic Kernel 在1~2週內即將發行1.0正式版本,接下來的系列文章如果有趕上1.0發佈,則會以1.0版本做範例講解,做為一個SDK,支援程式語言是必要的,不意外C#是主軸語言,然而Semantic Kernel同時也支援Python與Java,並且計劃支援TypeScript。
使用Semantic Kernel時,光是只有Kernel是沒什麼作用的(白話點來說,光只有引擎沒有電發動不了啊),必須再接上Connectors與Plugins:
Connectors,為你的應用接上LLM模型,也就是為Kernel接上大腦,例如連結OpenAI、Azure OpenAI、Hugging Face,以及Memory(長短期記憶),就像人類大腦一樣。
Plugins,為你的應用接上要整合的外掛程式,例如Google search,或是本機function等,就像接上手腳一樣。
( 來源:https://learn.microsoft.com/en-us/semantic-kernel/overview/ )
Plugins在早期的Semantic Kernel稱為Skills,為了對齊OpenAI,在新版本已更名為Plugins,因此若在一些文件上看到Skills其實就是在指Plugins
而Semantic Kernel可不是有了Kernel、Connectors、Plugins就滿足囉,進一步還提供了Planner與Memory:
產生一張商品xxx的報價單給xxx客戶,並把報價單mail到我的信箱
這個任務涉及了商品資料庫查詢報價、客戶資料庫查詢基本資料、生成報價單以及發送mail,如果Kernel具備這些Plugins能力,那麼利用Planner進行這些動作的自動分析、拆解與依序執行,這就是Planner存在的意思,更直白的說就像在ChatGPT網頁啟動了Plugin,它會根據Prompt在需要的時自動藉由Plugin來完成任務。
本篇內容主要是將Semantic Kernel的主要組成元件做了概觀式的說明,接下來的系列文就會開始針對這些組成元件的細節去做示範。
嗨,我是Ian,我喜歡分享與討論,今年跟2位朋友合著了一本ChatGPT主題書,如果你是一位開發者,這本書或許會有些幫助,https://www.tenlong.com.tw/products/9786263335189
這次的鐵人賽文章也會同時發佈於個人blog,歡迎關注我的blog : https://medium.com/@ianchen_27500