微信公众号文章 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/