首页 > 其他分享 >文章《Semantic Kernel -- LangChain 的替代品?》的错误和疑问 探讨

文章《Semantic Kernel -- LangChain 的替代品?》的错误和疑问 探讨

时间:2023-11-16 12:04:49浏览次数:44  
标签:Kernel Semantic kernel -- C# https com

微信公众号文章 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 鼓励对大模型的支持作为单独插件独立维护,增强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 工程师和数据科学家喜爱的功能。


相关链接:


标签:Kernel,Semantic,kernel,--,C#,https,com
From: https://blog.51cto.com/shanyou/8416024

相关文章

  • excel公式 提取文件路径
    =SUBSTITUTE(LEFT(@CELL("filename",A1),FIND("[",@CELL("filename",A1))-1),"[","")=SUBSTITUTE(LEFT(@CELL("filename",A1),FIND("[",@CELL("filename",A1))-1),"[","&quo......
  • 第8期ThreadX视频教程:应用实战,将裸机工程移植到RTOS的任务划分,驱动和应用层交互,中断DM
     这个是我们初学RTOS面临的最直接问题,很多时候,简单的RTOS机制明白了,API也会调用了,就是添加到RTOS后,总感觉那里不对劲,怎么使用才是正确姿势。针对这些问题,本期视频教程,我们ThreadX内核教程穿插一期实战应用。使用RTOS要充分发挥其高效的多任务管理机制和实时性,这样也是我们采用RTOS......
  • htmlunit 模拟登入、点击、获取页面信息
    本文介绍了htmlunit模拟登入、点击、获取页面信息的demopublicstaticStringgetHtml(Stringurl){System.out.println("****************开始执行****************");//模拟一个浏览器@SuppressWarnings("resource")WebClientwebClient......
  • 邮件发送,附件太大怎么办 → 那就用分卷压缩吧
    开心一刻昨晚,老婆辅导女儿写作业有一道形容妈妈的题,女儿写下了:我妈妈像一个暴躁的老虎老婆拿起题册轻轻敲了下女儿,生气到:有这么形容你妈的吗女儿:你看你现在老婆:我有那么暴躁吗,你就不能说我妈妈像一个公主,温柔大方漂亮?女儿:题目让我造句,没让我造谣!我:哈哈......
  • LSP 链路状态协议
    链路状态协议(LinkStateProtocol)是一种在计算机网络中用于动态计算路由的协议。它的主要作用是收集网络拓扑信息,为每个节点构建一个准确的网络图,并基于这些信息计算出最短路径。常见的链路状态协议有OSPF(开放最短路径优先)和IS-IS(中间系统到中间系统)。链路状态协议的实现通常涉及以......
  • ARP 地址解析协议
    概念:ARP(AddressResolutionProtocol)是一种网络协议,用于将网络层的IP地址映射到物理网络接口(MAC地址),以便在局域网(LAN)上进行通信。其主要作用是解决从IP地址到MAC地址的映射关系,使得数据包能够通过物理网段正确地传递。当计算机发送数据包到目标IP地址时,它需要知道目标IP对应的M......
  • nginx配置kibana访问用户名和密码认证、及无认证访问配置
    在nginx上配置kibana页面访问时,默认是采用kibana的认证,一般直接安装kibana后,是没有用户名和密码认证的。如果要在负载均衡上配置反向代理和用户认证,可按以下步骤进行配置:1.安装Nginx:首先,确保已经安装了Nginx,并且可以正常访问Kibana页面。2.生成密码文件:使用htpa......
  • 彻底弄懂ip掩码中的网络地址、广播地址、主机地址
    概念理解:IP掩码(或子网掩码)用于确定一个IP地址的网络部分和主机部分。它是一个32位的二进制数字,与IP地址做逻辑与运算,将IP地址划分为网络地址和主机地址两部分。在理解IP地址段中的网络地址、广播地址和主机地址之前,首先需要了解IP地址的构成。IP地址由网络号和主机号组成,根据IP......
  • Redis 缓存与数据库数据不一致问题
    Redis缓存与数据库数据不一致问题是指在使用Redis作为缓存系统时,由于缓存和数据库之间的操作没有同步或处理不当,导致缓存中的数据与数据库中的数据不同步,产生数据不一致的情况。现象:数据库更新后,缓存未更新,导致缓存中的数据是旧的。缓存脏读,即缓存中的数据被更新,而数据库中的数据未......
  • python深度学习——一个简单的全连接神经网络,预测mnist手写数字
    代码来自《python深度学习》第二章:fromtensorflow.keras.datasetsimportmnistfromtensorflowimportkerasfromtensorflow.kerasimportlayers(train_images,train_labels),(test_images,test_labels)=mnist.load_data()print(train_images.shape)print(len(trai......