微信公眾號文章 Semantic Kernel —— LangChain 的替代品?[1] ,它使用的示例程式碼是Python ,他卻發了這麼一個疑問:
支援的語言對比(因為 Semantic Kernel 是用 C#開發的,所以它對 C#比較支援)如上所示。不清楚 Semantic Kernel 為什麼要用 C#來開發,C#相比 Python 和 JavaScript 來說使用的人會少很多。
Semantic Kernel是微軟在實踐GPT 改造現有產品的過程中經驗的總結,微軟的產品: Bing.com , Office 365 等都是使用C# 開發的, Semantic Kernel 採用C#來開發就很自然了,大量的商業系統是使用C#、Java這樣的強型別語言構建的,採用Python這樣的弱型別語言構建商業系統並不多。隨著ChatGPT的火爆,Prompt-tuning已經成為當前大語言模型(Large Lanugage Model,LLM)時代最流行的生產技術,使得很多人一夜之間似乎有了程式設計的能力。微軟在這個背景下推出的一個結合LLM與傳統程式設計技術的開源的程式設計框架Semantic Kernel更加切合應用開發的需求。SK 大約 是在 2023 年 3 月下旬開源,大約開源6個多月,比 LangChain 晚開源了4個月 ,其實SK 在微軟內部的開發時間上要比Langchain 早的多,這也正是SK 的優良的架構和程式碼質量,同時制定了更為合理的外掛開發規範,馬上就要釋出1.0 版本了。
文章在大模型支援的描述也是錯誤的:
Semantic Kernel 只支援 OpenAI,Azure OpenAI,HuggingFace 上的模型,而 LangChain 支援的模型要多得多。
Semantic kernel 不僅支援OpenAI, Azure OpenAI,HuggingFace上的模型, 它可以支援任何LLM, 社群已經做了很多的支援庫,例如llama2、文心一言、通一千問等不整合到SK倉庫,社群各自維護,具體可看我整理的Semantic kernel資源:https://github.com/geffzhang/awesome-semantickernel[2]:
semantic-kernel-LLamaSharp use LLamaSharp to implement the Completion and Embedding interfaces of the semantic kernel
semantic-kernel-ERNIE-Bot: Semantic Kernel 整合文心千帆
DashScope.net Semantic Kernel 整合 Aliyun DashScope靈積模型服務 SDK,通義千問SDK
Semantic kernel 鼓勵對大模型的支援作為單獨外掛獨立維護,增強SK 模組化和 可維護性: https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#adding-plugins-and-memory-connectors[3]。
文章在對比Planner 和 Langchain Agent 時候的描述也是對Semantic Kernel有所微詞:
目前 Semantic Kernel 就只有幾種 Planner,對比 LangChain 還是比較少的,但一般的應用場景也足夠用了。
Semantic kernel 還有一個基於 YAML 的 DSL 定義和執行復雜工作流的流業務流程協調程式擴充套件,提供靈活性,支援通用技能,包括語義函式、原生函式和需要聊天互動的技能,以更易於使用的方式進行互動。
Semantic Kernel 代表了微軟在 AI 應用開發領域的探索,其功能和 LangChain 有所相似,但Semantic Kernel 是為應用開發開發人員建立的。Semantic Kernel 使構建企業AI編排器變得容易,這是Copilot Stack的中心[4]。Semantic Kernel的清晰文件和程式碼示例讓應用程式開發人員容易理解,很容易就可以將Semantic Kernel 整合到應用程式中。
Semantic Kernel 還支援 ML 工程師和資料科學家喜愛的功能。
- 將函式連結在一起[5]
- 使用 Jupyter 筆記本[6]進行實驗。 (注意:您可以使用適用於 Python 和 C# 的筆記本。對於 C#,請使用多語言筆記本[7])。
相關連結:
- [1]Semantic Kernel —— LangChain 的替代品?: https://mp.weixin.qq.com/s/moudjNN924zpcW7hcdWmdA
- [2]Semantic kernel資源:https://github.com/geffzhang/awesome-semantickernel
- [3]Semantic Kernel 貢獻指南 :https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#adding-plugins-and-memory-connectors
- [4]Copilot Stack的中心: https://learn.microsoft.com/en-us/semantic-kernel/overview/#semantic-kernel-is-at-the-center-of-the-copilot-stack
- [5]將函式連結在一起: https://learn.microsoft.com/en-us/semantic-kernel/ai-orchestration/chaining-functions?tabs=Csharp
- [6]Jupyter 筆記本: https://learn.microsoft.com/en-us/semantic-kernel/get-started/quick-start-guide/?tabs=Csharp
- [7]多語言筆記本: https://devblogs.microsoft.com/dotnet/polyglot-notebooks-december-2022-release/