Semantic Kernel VS LangChain

news2024/11/18 13:31:06

每当向他人介绍 Semantic Kernel,会得到的第一个问题就是 Semantic Kernel 类似于 LangChain 吗?或者是 C# 版本的 LangChain 吗?因此我总结了这篇文章。

微软MVP实验室研究员

张善友

深圳友浩达 CTO & 首席架构师,微软最有价值专家,微软 SWAT 专家,超过20年的软件研发经验,曾在腾讯工作12年,.NET 基金会成员,.NET 云原生顾问和解决方案专家,运营微信公众号“dotnet跨平台”和“分布式应用运行时”

在 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 来实现其目的。

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

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

  • 根据意图规划方法

  • 为该方法实现“链接”

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

LangChain

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

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

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

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

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

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

  • 采用 MIT 开源协议。

Semantic Kernel

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

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

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

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

  • SK 由微软创立。开源社区规模也相当活跃,目前已经有5.7k star。

  • SK 在文档方面做得也非常好,它有一个官方的支持页面[5]和学习课程。

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

  • 微软绝对是接入 OpenAI 最快也是最早的大型公司,他们发布的“Semantic Kernel” 是工程实践的结晶,同时发布了 LLM 创建软件的九项原则,称之为 Schillace Laws of Semantic AI[7]。

这两个库我们选择使用哪一个,我觉得主要的考虑因素是开发人员的技能,LLM 已经将机器学习的门槛降低到普通开发人员就可以开发 AI 应用,SK 在帮助应用开发人员开发 AI 方面的帮助会比 LangChain[8]更大,我会选择采用 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] MS Graph 连接器工具包:

    https://learn.microsoft.com/en-us/semantic-kernel/concepts-sk/connectors#whats-the-ms-graph-connector-kit

  • [7] Schillace Laws of Semantic AI:

    https://learn.microsoft.com/zh-cn/semantic-kernel/howto/schillacelaws

  • [8] LangChain:Model as a Service 粘合剂,被 ChatGPT 插件干掉了吗?:

    https://mp.weixin.qq.com/s/3coFhAdzr40tozn8f9Dc-w

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/563239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

进程间通信-system V共享内存

文章目录 1. system V共享内存1.1 共享内存示意图 2. 共享内存函数2.1 shmget函数2.2 代码实现2.2.1 shmat2.2.2 shmdt 3. 信息量 1. system V共享内存 system V的意思是一套标准,共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间&#xff…

AI遇上建筑设计,是出圈还是翻车?

AIGC 落地,始于场景,终于价值。 去年以来出现了 AIGC 热潮,引发了 AIGC 及其应用话题的爆发性增长,不少人感慨强人工智能的时代已经离我们不那么遥远了。但是在热潮的另一面,我们看到真正能落地的场景依然是凤毛麟角&a…

【C语言】结构体指针

结构体指针 结构体基础知识注意对于成员的赋值 结构体指针指向结构体变量的指针结构体指针与结构体成员指针用结构体指针引用结构体成员 结构体 基础知识 初识结构体,可以先看这篇浅显易懂的文章结构体–基础篇 所谓结构体,是一组类型可以不同的相关变…

部署输配电线路火灾隐患排查治理

输电线路防山火在线监测装置 一、产品描述: 电力设施为了远离人们的生活区域选择部分扎根在森林里面,减少发生触电事故的发生。但是提到森林就不得不说其中一个山火问题,山火灾害对建设在森林的电力设施造成的损害不可预估,为保障…

CodeForces.1806A .平面移动.[简单][判断可达范围][找步数规律]

题目描述: 题目解读: 给定移动规则以及起始点,终点;分析终点是否可达,可达则输出最小步数。 解题思路: 首先要判定是否可达。画图可知,对于题目给定的移动规则,只能到达起始点(a,b…

Go 开发实践:手把手教你搭建一个登录功能

本文首发自「慕课网」 ,想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"及“慕课网公众号”! 作者:Codey|慕课网讲师 用 Go 语言搭建简易登录功能 如果你最近刚学习Go 语言基础特性,对 …

《深入理解BigDecimal:揭秘钱财计算的核心技术》

文章目录 《深入理解BigDecimal:揭秘钱财计算的核心技术》***\*一、BigDecimal概述\*******\*二、BigDecimal常用构造函数\****2.1、常用构造函数2.2、使用问题分析***\*三、BigDecimal常用方法详解\****3.1、常用方法3.2、BigDecimal大小比较***\*四、BigDecimal格式化\*****…

【正点原子STM32连载】 第二十章 基本定时器实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第二十…

字符串匹配算法--KMP算法--BM算法

该算法解决的是字符串匹配问题,即查看字符串中是否含有完整的匹配字符串。如在java的string的contains方法匹配问题最简单的就是暴力破解了。在java的contains也是这么实现的,效率是低一点的。如果想要更快的速度可以自己写KMP算法。 代码实现体验 还未…

chatgpt赋能Python-python_numpy怎么用

Python与Numpy:简介 Python是一种高级编程语言,它具有简洁的语法和广泛的应用领域。Numpy是一个为Python提供高效数学库的开源库,它允许进行高速数值计算和数据处理。 对于那些正在开始使用Python和Numpy的初学者,这篇文章将向您…

CANoe使用教程

目录 1.CAN IG使用 2.Visual Sequence 自动发送报文序列,可以设置多个visual sequence,可用于重复的网络模拟和write窗口输出,比IG灵活,比CAPL简单 3.CANoe中的系统变量和环境变量都是一种用于存储和传递数据的变量,…

linux部署yolov5

Linux配置 LibTorch 和 OpenCV LibTorch 下载地址:https://pytorch.org/get-started/locally/ 直接解压即可 OpenCV 下载地址:https://opencv.org/releases/ 需要配置ffmpeg环境 export LD_LIBRARY_PATH$LD_LIBRARY_PATH:/home/workspace/dengzr/li…

嵌入式Linux应用开发笔记:GPIO编程

文章目录 目的基础说明代码示例数字输出数字输入外部中断 总结 目的 GPIO嵌入式设备中最基础的外设,使用上也是非常频繁的。这篇文章将记录下应用程序中GPIO操作相关内容。 这篇文章中内容均在下面的开发板上进行测试: 《新唐NUC980使用记录&#xff1…

15、STM32驱动sht35温湿度传感器

本文使用模拟IIC驱动sht35温湿度传感器 踩坑点:购买的模块IIC上拉电阻为10KΩ,会导致IIC不稳定,抗干扰差,容易导致时序错误;建议更换为4.7KΩ 一、CubeMx配置 其余默认,生成工程 1、us精确延时 Delay_Dr…

2023年电子、通信与控制工程国际会议(SECCE 2023)

会议简介 Brief Introduction 2023年电子、通信与控制工程国际会议(SECCE 2023) 会议时间:2023年8月11日-13日 召开地点:韩国济州岛 大会官网:www.isecce.org 2023年电子、通信与控制工程国际会议(SECCE 2023)将围绕“电子、通信与控制工程”…

Spring Boot 整合流程引擎 Flowable(附源码地址)

一、导入依赖 flowable依赖&#xff1a; <dependency><groupId>org.flowable</groupId><artifactId>flowable-spring-boot-starter</artifactId><version>6.7.2</version> </dependency>pom.xml: <?xml version"1…

驱动页面性能优化的3个有效策略

目录 引言 背景 前端性能优化 测试视角的解法 性能问题的发现 性能数据的采集 性能指标的确定 性能问题的分析 如何衡量性能问题严重性 分析性能瓶颈-分析思路 分析结论关键思路 引言 测试通过发现、分析、验证三板斧&#xff0c;驱动推进页面性能优化快速有效&…

关注 | 蛙色元宇宙,正式成为XRMA联盟成员单位

中国虚拟现实与元宇宙产业峰会&#xff0c;2023年3月22日于杭州圆满结束&#xff0c;在杭州市人民政府、浙江省经济和信息化厅指导&#xff0c;由杭州市经济和信息化局、杭州市西湖区人民政府主办&#xff0c;中国信息通信研究院承办。 蛙色元宇宙作为元宇宙的领先企业之一&…

【AI面试】CrossEntropy Loss 、Balanced Cross Entropy、 Dice Loss 和 Focal Loss 横评对比

样本不均衡问题一直是深度学习领域一个不可忽略的问题&#xff0c;常说的长尾效应&#xff0c;说的就是这个问题。一类占据了主导地位&#xff0c;导致其他类无论怎么优化&#xff0c;都不能好转。 无论是纯纯的分类任务&#xff0c;还是稍微复杂一些的目标检测任务和分割任务…

关于java在成员/全局变量上不同类型赋值遇到的问题(值传递)

一个疑惑 文件简介回答参考文献 文件简介 class ss{static class Student{int id;String name; /*public Student(int id, String name) {this.id id;this.name name;}*/public int getId() {return id;}public void setId(int id) {this.id id;}public String getName() {…