浅尝semantic kernel

背景

前些天使用直接对接大模型接口的方式,在我们自己的系统里对接了腾讯混元和DeepSeek,并且封装了一个内部的函数,可以很方便的增加其他OpenAPI风格的模型到系统里来,而不用做很大的调整(长这样,也写过一篇文章)。

浅尝semantic kernel_第1张图片

但事实上,已经有很多大模型的开发框架帮我们完成了集成多种模型的功能,大多数场景下,我们没必要自己再去造一个轮子。

更重要的原因是,单纯的自己去对接各个厂家的api,也就意味着,我们想利用大模型来完成的一些真正落地到项目本身来提高效率或者增强功能的时候,都需要我们自己写代码完成!我的意思是尽管都是openapi兼容的风格,但实际开发起来,工作量还是有的,比如我们想要使用function call的特性来实现调用本地的方法,这里面就涉及到一些复杂的tool参数传递,尤其是当你的本地方法相对复杂的时候,在通过硬编码的方式去执行相关操作,会非常痛苦,很考验耐力!

因此,我们需要一个框架来帮我们完成这些工作。

sk框架

关于Semantic Kernel(以下简称sk)的介绍,以及基本的使用方法,强烈推荐直接看官网内容:https://learn.microsoft.com/en-us/semantic-kernel/overview/

我这里简单介绍一下,sk就是微软推出的轻量级,开源的开发套件,主要目的是针对构建AI Agent的场景,只需要简单的配置,我们就可以集成多家大模型作为底座支撑,方便的把本地方法构建为插件,集成到sk当中,来实现类似“小爱同学,把灯打开”之类的操作,使AI真正和我们本地的系统相结合,完成一些以前只能靠人工完成的重复性工作,比如审核材料,查找信息等。

sk不单单支持微软的C#语言,还提供Python和Java语言的支持,非常适合企业开发,来增强现有的应用服务能力。

类似的开发框架还有LangChain(python),CrewAI,AutoGen等(这些咱都没用过哈,也是查了一下才知道,这有一篇介绍性的文章,或者大家自己gpt一下哈)

浅尝semantic kernel_第2张图片

集成步骤

⚠️__说明,因为我也是前两天才开始接触sk并尝试着将其集成到现有的项目中,小有收获便兴奋的想发文记录,所以给出的流程,代码等仅供参考,后续挖掘更多sk的能力后,会再次发文。

添加引用

使用习惯的方式,把sk的nuget包安装到项目里

  <ItemGroup>
    
    <PackageReference Include="Microsoft.SemanticKernel" Version="1.33.0" />
  ItemGroup>

基本上,在需要使用sk能力的地方,需要引入下面这几个命名空间

using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.ChatCompletion;
using Microsoft.SemanticKernel.Connectors.OpenAI;

注入服务

官网的quick start引导页里给出的例子是使用的控制台程序,而通过依赖注入的方式将sk注入到项目中的例子也给了,只有阅读官方文档就可以找到。

此外,官方的仓库里还给出了一些代码案例,比如:

你可能感兴趣的:(人工智能,.net,core)