在開始使用Semantic Kernel之前,我們先針對 Semantic Kernel 做個概觀以理解這個框架的核心組成,會有助於後續文章的閱讀。
雖然 Semantic Kernel 是由 Microsoft 所開源的框架,但其實 Semantic Kernel 目前支援 C#、Python、Java,並且均已釋出 1.0 的版本,在功能上也逐漸對齊,因此可以想像在一個團隊內當你使用 Semantic Kernel 時,可以依團隊成員技能選擇所擅長的程式語言。
LLMs 模型的支援
作為一個框架,Semantic Kernel 不僅支援連接 OpenAI 模型,還可以連接多種其他模型,包括 HuggingFace、Google Gemini、MistralAI 和 Onnx 等。此外,若需要進行本地部署,還可以使用 Ollama 等工具,透過相容 OpenAI API 的方式進行連接。
Plugins
在 Semantic Kernel 中,所謂的 Plugins 也可以稱為 Tools,它的主要目的是用來擴展 LLMs 模型的能力,透過 Plugins 可以實現串接外部系統或提供更新知識給模型。例如,RAG(檢索增強生成)的應用,並非僅依靠 LLMs 模型本身的能力即可實現。因此,像是 OpenAI ChatGPT 平台所提供的 Assistants API 或 function calling 等功能,都是為了增強 LLMs 模型能力所設計的解決方案。但如果我們使用的並非 OpenAI ChatGPT 平台,或者採用的是開源、本地部署的模型該怎麼辦呢?作為一個 LLMs 應用開發框架,Semantic Kernel 提供了 Plugins,作為解決此類需求的機制。甚至近期開始被討論的 AI Agent 的設計,一個 Agent 的能力相當程度是取決於 Plugins ,因此可以把 Plugins 當成是一個工具箱,當有需求時便可以從工具箱中取用相對應的工具來實現功能。除了開發者可以自行開發 Plugins,在 Semantic Kernel 裡也提供了一些常見的 Plugins,做為內建 Plugins,例如 HttpPlugin、FileIOPlugin、MathPlugin...等。
Agents
在 1.0 版本之後,Semantic Kernel 將過去的 Planner 升級為 Agents。儘管目前仍保留 Planner 機制,官方已明確表示,未來將全面移除 Planner。那麼,什麼是 Planner 呢?簡單來說,當我們賦予 Kernel 多個 Plugins 後,透過 Planner 機制,模型能夠自主思考並制定計劃,決定需要調用哪些 Plugins 來完成任務,類似於 OpenAI ChatGPT 平台提供的 function calling。這一機制現正逐步被新的 Agents 概念取代。
Filters
我們都知道生成式 AI 是個黑箱,它的生成結果具有一定的隨機性。因此,在開發 LLMs 應用時,進行管理和監控是必要的,而 Filters 組件正是為了實現負責任的 AI 而存在。Filters 包含如 Function Filter、Auto Function Invocation Filter 以及 Prompt Filter 等功能,能根據需求在關鍵時刻加以實作。如果你曾經開發過 ASP.NET MVC,我認為這裡的 Filters 概念與其相似(別誤會,我指的是概念,實作方式是完全不同的)。
以上便是目前 Semantic Kernel 的核心組成概述,先有個概念即可,各組成的詳細內容,將在接下來的挑戰文章內一一講解說明。