LangChain vs Semantic Kernel

每当向他人介绍 Semantic Kernel, 会得到的第一个问题就是 Semantic Kernel 类似于LangChain吗,或者是c# 版本的LangChain吗?为了全面而不想重复的回答这个问题,因此我总结这篇文章。

在 ChatGPT 之前,构建 集成AI的应用程序的主要分为两个步骤:

  1. 机器学习工程师/数据科学家创建模型,然后通过 REST API 终结点发布此模型。

  2. 应用程序开发人员通过传递确定性参数来调用 REST API 终结点。

有了GPT以后 构建与 AI 集成的应用程序过去要简单得多,应用程序员开发人员直接访问OpenAI的REST API,将它集成到我们的应用中,但是真正开始集成的时候才发现挑战不仅仅是调用API,例如:

  • 如何将OpenAI与内部知识搜索(内部文档,数据库,SharePoint等)集成

  • 如何将OpenAI与其他系统集成,如SAP,ERP,CRM,HR系统,IT票务系统等。

  • 如何有效地跟踪聊天对话历史记录

  • 如何以可配置的方式将提示实现到代码中(而不是使它们看起来像魔术字符串))

  • 如何最小化使用的Token

  • 如何在服务限制内和围绕服务配额和限制[1]工作 - 更具体地说,围绕最大请求数/分钟

  • 以及更多...

这中间需要有一个业务流程协调程序。该服务编排来自各种依赖项(OpenAI、Azure 搜索、数据库等)的输入和输出,并将其拼接在一起。

  • 这种模式可以从微软最近发布的Copilot服务中看出。请注意,GitHub Copilot、M365 Copilot、D365 Copilot 和Security Copilot的架构之间都有一个“Copilot Service”,用于将应用程序与LLM模型和其他服务链接起来。

  • 另请注意,微软在架构图中提到了的是“LLM”,而不是“GPT-4”。这是因为业务流程协调程序服务同时使用不同的 LLM 来实现其目的。

 d32fec81451dadff16c829436dfc5a17.jpeg

这就是像Semantic Kernel和LangChain这样的库的用武之地。这些库可帮助开发人员:

  • 管理对话历史记录,这是ChatCompletionAPI 希望开发人员弄清楚的。

  • 根据意图规划方法。

  • 为该方法实现“链接”

  • 管理Memory和服务连接要求(即对话历史记录、外部 API 等)

LangChain目前是“最成熟”(但相当新的)拥有大型开源社区的。第一次提交是在 2022 年10月。

  • 它支持Python和TypeScript,其中Python具有更多功能[2]。

  • 大多数在线文章都使用Jupyter笔记本 演示 LangChain,LangChai也不把自己被称为“SDK”,它是为习惯于使用笔记本的ML工程师构建的。

  • 应用程序开发人员需要弄清楚如何组织代码和使用 LangChain,软件工程方面的组织相对SK 显得差了很多。

  • LangChain由Harrison Chase[3]创立,他的职业是ML工程师,更多是从ML 工程师角度架构应用。

  • LangChain开源社区的贡献非常活跃,目前已经有29k star。

  • 采用MIT开源协议

Semantic Kernel(SK)是相对“较新的”,但它是为开发人员构建的。第一次提交是在 2023 年 2 月。

  • 它主要面向 C# 开发人员,它也支持 Python,(功能另请参阅功能奇偶校验文档[4])。

  • 因为它是为开发人员构建的,所以它被称为轻量级 SDK,可帮助开发人员将代码组织到内置于 Planner 中的技能、记忆和连接器中(在此处阅读更多内容)。

  • 示例代码中有很多业务流程协调程序 Web 服务的示例。

  • SK由一个以软件开发工程能力超强的组织(微软)创立。开源社区规模也相当活跃,目前已经有5.7k star。

  • 它是由微软创立的,文档方面做的也非常好,它有一个官方的支持页面[5]和LinkedIn学习课程[6]。

  • 由于 SK 在构建时考虑了应用,因此有一个 MS Graph连接器工具包[7],适用于需要与日历、电子邮件、OneDrive 等集成的方案。

  • 微软绝对是接入 OpenAI 最快也是最早的大型公司,他们发布的“Semantic Kernel” 是工程实践的结晶,同时发布了LLM创建软件的九项原则,称之为Schillace Laws of Semantic AI[8]https://learn.microsoft.com/zh-cn/semantic-kernel/howto/schillacelaws

这两个库我们选择使用哪一个,我觉得主要的考虑因素是开发人员的技能,LLM 已经将机器学习的门槛降低到普通开发人员就可以开发AI应用,SK 在帮助应用开发人员开发AI方面的帮助会比LangChain更大,我会选择采用SK来构建AI应用。

相关链接

  • [1] 服务配额和限制: https://learn.microsoft.com/zh-cn/azure/cognitive-services/openai/quotas-limits

  • [2] Langchain特性:https://langchain.com/features.html

  • [3] Harrison Chase:https://github.com/hwchase17

  • [4] SK功能奇偶校验文档:https://github.com/microsoft/semantic-kernel/blob/python-preview-archived-dont-delete/python/FEATURE_PARITY.md

  • [5] SK支持页面:http://aka.ms/sk/support

  • [6] SK LinkedIn学习课程:https://www.linkedin.com/learning/introducing-semantic-kernel-building-ai-based-apps

  • [7] MS Graph连接器工具包:https://learn.microsoft.com/en-us/semantic-kernel/concepts-sk/connectors#whats-the-ms-graph-connector-kit

  • [8] Schillace Laws of Semantic AI:https://learn.microsoft.com/zh-cn/semantic-kernel/howto/schillacelaws

  • [9] LangChain:Model as a Service粘合剂,被ChatGPT插件干掉了吗?: https://mp.weixin.qq.com/s/3coFhAdzr40tozn8f9Dc-w

<think>好的,我需要回答用户关于Semantic Kernel的问题,特别是关于它的GitHub仓库和作为微软开源框架的信息。首先,我得回忆一下Semantic Kernel的基本概念,确保信息准确。Semantic Kernel是微软开发的一个开源框架,用于集成AI模型,比如大型语言模型(LLMs),到应用程序中。它支持多种编程语言,可能包括C#和Python,但需要确认。 接下来,用户提到了GitHub,所以必须提供正确的仓库链接。我需要查找微软官方的Semantic Kernel仓库,确保链接正确无误。通常微软的开源项目会放在GitHub的microsoft组织下,所以可能链接是github.com/microsoft/semantic-kernel。需要验证这一点。 然后,用户想了解它作为开源框架的特点。应该包括主要功能,比如插件架构、规划能力、与AI服务的集成,以及支持的模型类型,比如OpenAI、Azure OpenAI、Hugging Face等。还要提到支持的编程语言,例如C#、Python、Java,但需要确认最新的支持情况,可能Java还在测试阶段。 另外,用户可能对应用场景感兴趣,比如智能助手、自动化流程、数据增强等。需要举几个例子说明其用途。还要确保引用相关资源,如官方文档和GitHub仓库,并在回答末尾添加引用标识。 最后,生成相关问题时要考虑用户可能的后续疑问,比如与LangChain的区别、使用场景、核心功能、支持的模型,以及如何开始使用。确保问题相关且有帮助,引导用户进一步探索。 在回答过程中,需要遵循用户提供的格式要求,使用正确的LaTeX语法,虽然当前内容可能不需要数学公式,但需保持警惕。同时,用中文回答,结构清晰,分点说明,保持自然流畅。检查是否有任何错误或过时信息,比如框架的最新版本或新增功能,确保回答的准确性和可靠性。</think>### Semantic Kernel 简介 Semantic Kernel(SK)是微软推出的开源框架,旨在帮助开发者将大型语言模型(LLMs)等AI能力集成到应用程序中。它提供了一套工具和接口,支持灵活的任务规划、上下文管理以及与外部服务的交互。 ### GitHub 与开源信息 - **GitHub仓库**:官方仓库为 [microsoft/semantic-kernel](https://github.com/microsoft/semantic-kernel),包含代码、文档和示例[^1]。 - **框架特点**: 1. **插件架构**:支持扩展功能模块(如API、数据库),并通过自然语言调用。 2. **规划能力**:将复杂任务分解为可执行的子任务,例如自动生成代码或数据分析步骤。 3. **多模型支持**:兼容OpenAI、Azure OpenAI、Hugging Face等模型。 4. **多语言支持**:支持C#、Python、Java(实验阶段)等语言。 ### 应用场景 - **智能助手**:集成LLMs实现对话式交互(如客服机器人)。 - **自动化流程**:自动生成代码、文档或执行数据清洗。 - **知识增强**:结合外部数据源(如企业数据库)提升模型输出的准确性[^2]。 ### 示例代码(Python) ```python import semantic_kernel as sk from semantic_kernel.connectors.ai.open_ai import OpenAIChatCompletion kernel = sk.Kernel() kernel.add_chat_service("chat", OpenAIChatCompletion("gpt-3.5-turbo", "API_KEY")) skill = kernel.import_semantic_skill_from_directory("skills", "SummarizeSkill") summary = kernel.run(skill["Summarize"], input_text="长文本内容...") print(summary) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值