Semantic Kernel vs LangChain
大语言模型开发框架的价值是什么?
框架的核心价值,都是降低开发以及维护成本。大语言模型开发框架也不例外,让开发者可以更方便地开发基于大语言模型的应用。
主要提供两类帮助:
- 第三方能力抽象。比如 LLM、向量数据库、搜索引擎等
- 常用工具、方案封装
发展对比
Semantic Kernel | LangChain | |
---|---|---|
出品公司 | 微软 | LangChain AI |
支持的语言 | Python、C#、Java、TypeScript | Python、TypeScript |
开源协议 | MIT | MIT |
应用 | Microsoft 365 Copilot、Bing | 1.5w+ 开源项目 |
以下数据来源于 Github Star History ,看起来 Langchain 一骑绝尘?事实真的是这样吗? 千万不要低估了微软浑厚的软件工程底蕴。

概念对照
LangChain | Semantic Kernel |
---|---|
Model |
Connector |
Tools |
Connector |
Vectorstore |
Connector |
Memory |
Memory |
Prompt Templates |
Plugins |
Chain |
Pipeline |
Agent |
Planner |
TextSplitter |
text.* |
OutputParser |
- |
功能对照
LangChain | Semantic Kernel | |
---|---|---|
大模型 | 70+ | 5+ |
向量数据库 | 50+ | 11 |
Agent/Planner | 10+ | 4 |
总结
当下 LangChain 更强。LangChain 的战略就是拼命的完善需求,扩展功能进而抢占市场。使用上有些功能略显冗余和低效,所以能感觉的到它目前重心不在质量上。
但 Semantic Kernel 可能更有未来,因为:
- 不要怀疑微软要做 AI 霸主的决心
- 不要轻视微软的架构和软件工程能力,从名字可以看出来是把它当做操作系统内核一样的架构去设计
- 以及,钞能力
但微软的非中立性,尤其是对待其他家大模型的态度,可能是影响 Semantic Kernel 推广的一个重要因素。
目前 Semantic Kernel 对集成第三方能力的态度:
- 不希望放在自己的代码库中
- 像操作系统一样,它只提供最基础的能力,其它的都是外部维护,按需安装, 参考 这里。
LangChain
和 Semantic Kernel
怎么选?
两者都值得学。
- 语言限制方面 C#、Java 只能用 SK,JavaScript 只能用 LangChain。
- 做原型,首选 LangChain,功能多,开发快。
- 做产品,Semantic Kernel 可能长期更合适。
我们也可以各取其长,但对我们的要求更高,免不了要读源代码来分析它们,找到最佳的组合策略(过程中,可能会发现,有些部分自己做更好)。
组合思路:
- 用
Semantic Kernel
搭框架,用它的Connectors
和Plugins
能力 - 用
LangChain
的各种小工具做局部处理,比如TextSplitter
、OutputParser
- 用
LlamaIndex
对接外部数据 - 用
Prompt Flow
调试和评估 - 用
LangSmith
监视 LLM 流量 - 创建自己的
Agent
(特定场景的agent
一定不是通用的)
思考
从论文上的理论,到仿真出的算法,到最后落实的工程项目,每一步常常需要重写,重设计。 因为算法科学家可能不懂工程,软件工程师可能不懂算法,这是 AI 剧烈发展带来的真空地带。
其他框架
LlamaIndex
LlamaIndex 是一个建造 LLM 应用的数据框架
- GitHub 22.4k+ stars
- 专门针对搜索、检索类 LLM 应用优化,性能不错
- 接口简单直接,易于上手
- 外部数据的对接极其方便
- 官网 https://llamahub.ai/
MetaGPT
MetaGPT 国内公司开发的多 Agent 框架
- GitHub 27k+ stars
- 并不是 AI 编程工具,而是个开发框架
- 多 Agent 的概念非常超前。虽然实用性还不行,但值得关注
调试工具
LangSmith
可用于 LangChain 的调试。 (LangChain) 🦜🔗 → 🦜🛠️ (LangSmith)
- 非开源的商业 SaaS 项目,官网见这里
- 在线调试、测试和监视 prompt、LLM 应用
- 与 LangChain 配合的很好(但是它并没有和 LangChain 紧耦合)
日志 LLM 应用
只需要在 .env
中配置:
LANGCHAIN_TRACING_V2=true LANGCHAIN_ENDPOINT=https://api.smith.langchain.com LANGCHAIN_API_KEY=<your-api-key> # LangSmith 中的 API Key LANGCHAIN_PROJECT=<your-project> # 在 LangSmith 中创建的项目名。默认会使用 "default"
然后运行基于 LangChain 的应用,就能:
- 在 LangSmith 中看到 LLM、Chain 等的调用日志
- 就日志内容直接调试 prompt,创建数据集
数据集:
- 数据集可以直接被代码引用,当做 prompt 中的例子
- 可以批量跑数据集来测试模型效果
- 内置若干好用的评估能力,也可以自定义
Hub:
- 类似 GitHub,可以和其它人共享 prompt
- Hub 中的 prompt 可以直接在代码中引用
from langchain import hub obj = hub.pull("homanp/superagent")
Prompt Flow
Prompt Flow 可以与 LangSmith 类似,但也有区别。
- 是个 VS Code 插件 + 命令行工具
- 可以和 SK 配合,也可以独立使用
- 可视化 flow 组合 prompt 和代码,调试参数,用数据集评估效果
- 代码可直接部署到 Azure
- 纯靠 prompt flow 拼接,实现和 LLM 对话,但每次的输出都用 LLM 做摘要,以节约阅读时间
