透過前面幾篇文章的內容,對 Semantic Kernel 有了基本的認識,包含模型的連結、Prompt 的設計、plugin 的建立與使用、甚至加入短期記憶(聊天記錄)等,這些都是屬於 Semantic Kernel 的基本功能。而透過這些功能,已經可以建立起一些簡單的生成式 AI 應用程式,完成的功能是偏向「使用者說一句,我們做一件事」的邏輯,簡單來說就是「單指令對應單工具」,距離真正具備「自動判斷、規劃與執行」的 AI Agent,還差一點點。
因此在 2024 年 Semantic Kernel 團隊為了讓開發者更容易建立 Agent 應用,推出了 Semantic Kernel Agent Framework (SKAF),這是一個基於 Semantic Kernel 的高階框架,讓開發者可以更方便的建立具備決策能力的 AI Agent,如果你有聽過 AutoGen 的話,SKAF就是 Semantic Kernel 與 AutoGen 進行整合下的產出,並且於2025上半年正式 GA。
簡單來說,Semantic Kernel Agent Framework 幫我們把底層的繁瑣細節都處理好了,再往上提供一層比較高階的抽象。對開發者來說,不但能無痛延續 Semantic Kernel 的原有開發模式,也讓整個開發流程更順手、更有彈性。
此外,Semantic Kernel Agent Framework 也支援「一個代理處理多個對話執行緒」(AgentThread)。就是同一個 Agent 可以同時追蹤和管理不同使用者的對話上下文,如此一來對於同一個使用者來說,只要能持久化這些上下文,就能在不同的對話session中保持一致性。
例如,如果你用的是 Azure 的 AI 服務,就可以搭配 AzureAIAgent 和 AzureAIAgentThread,自動對接 Azure 提供的內建對話狀態儲存機制。等於說,你不用自己處理Azure AI 平台上的記憶保存與還原,Semantic Kernel Agent Framework會幫你搞定。
但如果你只是用一般的 ChatCompletion 模型(像是 OpenAI API),那就可以用內建的 AgentThread,自己在應用端管理這些歷史訊息。這種設計的好處是可以依據使用情境的不同,自由選擇要不要倚賴雲端服務的對話記憶功能,或者自己處理整個對話歷程。
Semantic Kernel Agent Framework 提供 ChatCompletionAgent 與 OpenAIAssistantAgent 兩種常見型別,對應不同供應商/託管風格。
它的核心是透過 IChatCompletionService 來與模型互動產生回應內容,而且會自動維護整個多輪對話的歷史紀錄,讓上下文不會斷線。也可以透過參數設定來微調它的行為,例如:指定角色(像是 system/user/assistant)、設定溫度值來調整創造力,以及直接指定要用哪一個模型。
另外,它也支援我們自訂 Instructions(也就是 system message 的內容),來定義這個代理「扮演什麼樣的角色」。舉個例子:你可以設定它是「一位嚴謹的文案校稿助理」,這樣它在回應時就會比較傾向於精準、保守,符合這個角色的性格。
同時,ChatCompletionAgent 也支援串流回應與函式呼叫。當啟用函式模式之後,便可以自動呼叫掛載在代理上的工具,去執行一些實際任務,直接變成不只是「會聊天」,而是可以「邊聊邊做事」。
在 Semantic Kernel 1.0 裡,ChatCompletionAgent 幾乎就是構建本地 AI 助理的核心元件,不管是單純的問答應用,還是多輪對話的複雜任務,是非常實用的一個元件。
Semantic Kernel Agent Framework (SKAF) 是建立在 Semantic Kernel 之上的高階框架,讓開發者可以更輕鬆的打造具備決策能力的 AI Agent,但卻也保持著 Semantic Kernel 相同的開發體驗。當然也會對過去的 Semantic Kernel 造成了一些改變,例如早期要用 Semantic Kernel 實現 Agent 自動決策規劃,通常是由 Planner 來負責,但在 SKAF 裡,這個角色就被 Agent 本身取代了,轉換到 Function Calling+ Agent 抽象的實作。另外有了 SKAF 之後,對於從單 Agent 聊天到多 Agent 協作的開發上也會更容易。
因此如果你想要建立一個具備決策能力的 AI Agent,Semantic Kernel Agent Framework 絕對是目前最推薦的選擇。它不但延續了 Semantic Kernel 的設計理念,也讓開發流程更順手、更有彈性。無論是單一代理還是多代理協作,SKAF 都能提供強大的支援,幫助你快速打造出符合需求的生成式 AI 應用程式。
下篇文章將會介紹如何使用 Semantic Kernel Agent Framework 來建立一個簡單的 AI Agent,並展示它的基本功能與使用方式,明天見!