iT邦幫忙

2023 iThome 鐵人賽

DAY 11
0
AI & Data

OpenAI 從提示工程(Prompt Engineering)到語義核心(Semantic Kernel)的實踐系列 第 11

Semantic Kernel的實踐:開發篇-為何需要semantic kernel

  • 分享至 

  • xImage
  •  

前言

前一篇以一個範例示範在不依賴任何SDK之下,如何用Prompt技巧實作LLM應用,或許接下來的疑問是,那為何需要Semantic Kernel呢?究竟Semantic Kernel的角色是什麼呢?本篇就來說說吧。

LLM應用可能沒那麼簡單

音樂請下"沒那麼簡單 就能找到 聊得來的伴 尤其是在 看過了那麼多的背叛",喂...不是啦。

什麼是 Semantic Kernel,Microsoft 官方是這樣說的

Semantic Kernel is an open-source SDK that lets you easily combine AI services like OpenAI, Azure OpenAI, and Hugging Face with conventional programming languages like C# and Python. By doing so, you can create AI apps that combine the best of both worlds.

Semantic Kernel has been engineered to allow developers to flexibly integrate AI services into their existing apps. To do so, Semantic Kernel provides a set of connectors that make it easy to add memories and models. In this way, Semantic Kernel is able to add a simulated "brain" to your app.

言下之就是它是一個輕量化且開源的SDK,由Microsoft主導,可以讓你在開發LLM應用可以更容易做到整合這件事(細節我們下一篇再來說)。先讓我們來分析一下開發LLM應用會面對到的問題:

  1. Prompt 拆解與組合
    面對簡單型的LLM應用或許可以採用前一篇的做法,弄個Prompt Template套一套就可以搞定,但是事實上多數的LLM應用會想做的更多,所以實務面上會面臨到使用者輸入一個Prompt,它的意含是多個作業處理,我們可能需要把它做拆解,以區分成不同的任務,然後也許還需要按順序與LLM模型進行來回的交流,而這件事我們不可能要使用者自已來處理。

例如:

明天是情人節,我想不到有什麼好主意可以慶祝,你能幫我想想嗎?並且為了要給我女朋友一個驚喜,我希望你還能幫我把卡片內容翻譯成英文及法文。

這樣的一個Prompt,需要LLM模型做不少事,並且是有先後順序,而我們都知道與LLM模型溝通,最好是任務明確,它會做的更好,於是這個Prompt我們可能要分解成,先進行腦力激盪,請模型想一些點子,接著要決定哪個點子比較好,最後再做翻譯。

  1. 企業私有資料
    以ChatGPT來說我們都知道訓練集止於2021年,再加上資安的考量,許多企業內想做ChatGPT應用,且必須能加入企業私有資料。而這件事就無法僅用Prompt就能完成,整個LLM應用架構上需要用到企業知識庫或是向量資料庫等機制。

  2. 多模型整合運用
    複雜一點的情境,我們會需要整合不同的模型以滿足需求,例如,如果想開發一個英語教育學習的應用,運用ChatGPT來評量學生程度,並且輔以發音教學,我們可能需要有ChatGPT模型、Whisper 模型以及Embedding 模型。於是在整個架構就會面臨到多模型的整合協作。

  3. 外部服務整合
    再來外部服務整合,可能會需要利用API呼叫不同的服務,例如整合Google Search、Bing Search、Cloud Service等。

  4. 長短期記憶
    ChatGPT模型本身並沒有記憶能力,因此如果想打造如同ChatGPT網頁版,有記憶能力,就需要使用到記憶機制來做搭配。

透過以上的分析,可以知道一即便是一個知識QnA的ChatGPT應用,在開發上都不只是涉及Prompt Engineering,更多是一些周圍的整合,於是如果有一個由官方主導的SDK來協助開發者建構LLM應用,會不會是一件還不錯的事?當然你也可以說我就是想凡事自已干啊,OK的,當然可以,但是這一年來資訊量真的大到很誇張,很有可能一覺醒來,這世界又翻了一輪,並且LLM的應用顛覆過去的應用開發模式,開發者需要有一個design pattern來引指如何進行LLM應用的開發。而這就是Semantic Kernel想要提供的。

結語

The Easy Way To Add AI To Your App

是Semantic Kernel的目標遠景,目前Semantic Kernel還是非常前期發展中的SDK,未來的1~2週即將迎來1.0的版本,目前支援C#、Python、Java、TypeScript語言,由其是.NET的開發者,相信Semantic Kernel會是開發LLM應用時,必須要關注的。接下來的文章內容我將細部拆解Semantic Kernel的各個重要組件,讓大家對Semantic Kernel有更深入的理解,未來在使用上會更順手。

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


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

尚未有邦友留言

立即登入留言