iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0

Semantic Kernel的實踐:Semantic Kernel 概觀

前言

在開始使用 Semantic Kernel 之前,先從概觀的角度來理解 Semantic Kernel,本篇內容會說明Semantic Kernel的各項組成關鍵,建構接下來開發時的基礎知識。

Semantic Kernel Overview

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://ithelp.ithome.com.tw/upload/images/20230928/201265693EVTgksGdf.png

( 來源: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://ithelp.ithome.com.tw/upload/images/20230928/20126569dLmXaJ7uoe.png
( 來源:https://learn.microsoft.com/en-us/semantic-kernel/overview/ )

Plugins在早期的Semantic Kernel稱為Skills,為了對齊OpenAI,在新版本已更名為Plugins,因此若在一些文件上看到Skills其實就是在指Plugins

而Semantic Kernel可不是有了Kernel、Connectors、Plugins就滿足囉,進一步還提供了Planner與Memory:

  • Planner
    即然是人工智慧的應用,那麼有沒有可能可以自動理解使用者的Prompt,接著自動選擇合適的Plugins,編排執行順序最後生成產出,例如

產生一張商品xxx的報價單給xxx客戶,並把報價單mail到我的信箱

這個任務涉及了商品資料庫查詢報價、客戶資料庫查詢基本資料、生成報價單以及發送mail,如果Kernel具備這些Plugins能力,那麼利用Planner進行這些動作的自動分析、拆解與依序執行,這就是Planner存在的意思,更直白的說就像在ChatGPT網頁啟動了Plugin,它會根據Prompt在需要的時自動藉由Plugin來完成任務。

  • Memory
    模型本身沒有記憶能力,Semantic Kernel裡的Memory就是用來處理這方面的需求,提供了Prompt之外可以進一步的訂製化的上下文,例如納入embeddings機制,使用Prompt engineering的few-shot learning技法。舉個例子,讓ChatGPT能回答交通法規問題,使用few-shot learning就必須把交通法規塞進Prompt裡,但是模型有Token數限制,所以這是不可能的,因此如果把交通法規先用向量資料庫存起來,再以embeddings機制與使用者Prompt做向量比較,找出較相似的向量,就能把交通法規做為Prompt的上下文,最後做生成內容的輸出。這就是Memory元件要負責的。

結語

本篇內容主要是將Semantic Kernel的主要組成元件做了概觀式的說明,接下來的系列文就會開始針對這些組成元件的細節去做示範。

嗨,我是Ian,我喜歡分享與討論,今年跟2位朋友合著了一本ChatGPT主題書,如果你是一位開發者,這本書或許會有些幫助,https://www.tenlong.com.tw/products/9786263335189
這次的鐵人賽文章也會同時發佈於個人blog,歡迎關注我的blog : https://medium.com/@ianchen_27500


上一篇
Semantic Kernel的實踐:番外篇-認識什麼是LLM
下一篇
Semantic Kernel的實踐:Semantic Kernel first sample
系列文
OpenAI 從提示工程(Prompt Engineering)到語義核心(Semantic Kernel)的實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言