草庐IT

微软开源了一个 助力开发LLM 加持的应用的 工具包 semantic-kernel

自由、创新、研究、探索 2023-03-28 原文

在首席执行官萨蒂亚·纳德拉(Satya Nadella)的支持下,微软似乎正在迅速转变为一家以人工智能为中心的公司。最近微软的众多产品线都采用GPT-4加持,从Microsoft 365等商业产品到“新必应”搜索引擎,再到低代码/无代码Power Platform等面向开发的产品,包括软件开发组件Power Apps[1]。

非常重要的一点是这些产品都是使用.NET 构建的, 这些项目可以快速的使用LLM 加持,我们写程序的同学肯定都会想微软是怎么做的,正好微软在3月17日在发布了一篇博客文章: [Hello, Semantic Kernel!](https://devblogs.microsoft.com/semantic-kernel/hello-world/)[2], 在这篇文章中微软已经开源了一个内部孵化项目,Github的仓库:https://github.com/microsoft/semantic-kernel [3],该项目可以帮助开发人员快速轻松地将尖端的人工智能模型集成到他们的应用程序中。这使您能够在应用中构建新体验,从而为用户带来无与伦比的工作效率:例如总结冗长的聊天交流,标记通过Microsoft Graph添加到待办事项列表中的重要“下一步”,或者计划一个完整的假期,而不仅仅是预订飞机上的座位。

语义内核(简称SK)是一种创新的轻量级软件开发工具包(SDK),旨在将人工智能(AI)大型语言模型(LLM)与传统编程语言集成。借助 SK,开发人员可以轻松地为其应用程序注入复杂的技能,例如提示链接、摘要、递归推理、基于嵌入的内存等。SK 支持提示模板[4]、函数链、矢量化内存[5]和开箱即用的智能规划[6]功能。

SK旨在支持和封装来自最新 AI 研究的多种设计模式,以便开发人员可以为他们的应用程序注入复杂的技能[7],如提示[7]链接、递归推理、总结、zero/few-shot 学习、上下文记忆、长期记忆、嵌入[8]、语义索引、 规划,以及访问外部知识库以及您自己的数据。

SK最初的目标是 C#开发人员,但也为数据科学家的最爱的 Python提供了预览支持,而微软也根据从社区反馈中学到的内容,正在考虑支持[9]其他语言,包括自己的TypeScript。

微软将SK的主要优势列为:

  • 快速集成:SK旨在嵌入任何类型的应用程序中,使您可以轻松测试和运行LLM AI。
  • 扩展:借助 SK,您可以连接外部数据源和服务,使其应用程序能够将自然语言处理与实时信息结合使用。
  • 更好的提示:SK的模板化提示可让您使用有用的抽象和机制快速设计语义函数,以释放LLM AI的潜力。
  • 新奇但熟悉:传统编程语言代码始终可供您作为一流的合作伙伴,帮助您快速完成工程设计,可以两全其美。

为了帮助开发人员入门,微软提供了一个免费的LinkedIn学习课程[10]。它的描述是:“人工智能的未来终于来了,它改变了软件开发人员的游戏规则。探索语义内核 (SK) 的可能性,这是 AI 驱动的开发的新面孔,封装在轻量级、易于使用的多层软件开发工具包中。使用SK快速启动和运行,SK是Microsoft AI生态系统的最新成员,使开发人员能够轻松地将LLM AI功能集成到他们的应用程序中。

 

除了LinkedIn学习课程之外,Microsoft 还解释了开发人员如何克隆存储库并尝试以下示例:

  • 简单的聊天摘要[11]:使用现成的技能,并轻松地将这些技能应用到你的应用中。
  • 图书创作者[12]:使用规划师解构复杂的目标,并在应用中设想使用规划师。
  • 身份验证和 API[13]:使用基本连接器模式进行身份验证并连接到 API,并设想将外部数据集成到应用的 LLM AI 中。
  • Github仓库问答[14]:使用嵌入和内存来存储最近的数据,并允许您对其进行查询。

 

在运行示例和笔记本之前,您可能需要满足一些软件要求:

  1. Azure Functions 核心工具[15],用于将内核作为本地 API 运行,这是 Web 应用所需的。
  2. 需要OpenAI API[16] 密钥或 Azure OpenAI 服务密钥[17]才能开始使用。
  3. 用于安装 Web 应用的依赖项的Yarn[18]。
  4. SK 支持 .NET Standard 2.1,建议使用 .NET 6+。但是,仓库中的某些示例需要 .NET 7[19] 和 VS Code Polyglot 扩展[20]才能运行笔记本

 

SK 入门

下面是如何从 C# 控制台应用使用语义内核的快速示例,这里我们使用VS Code Polyglot 来做

 

相关链接:

  • [1]Power Apps:https://powerapps.microsoft.com/zh-cn/ 
  • [2] Hello, Semantic Kernel!: https://devblogs.microsoft.com/semantic-kernel/hello-world/
  • [3] Github的仓库:https://github.com/microsoft/semantic-kernel
  • [4]提示模板: https://github.com/microsoft/semantic-kernel/blob/main/docs/PROMPT_TEMPLATE_LANGUAGE.md 
  • [5] 矢量化内存: https://github.com/microsoft/semantic-kernel/blob/main/docs/EMBEDDINGS.md 
  • [6] 智能规划 https://github.com/microsoft/semantic-kernel/blob/main/docs/PLANNER.md 
  • [7] 技能: https://github.com/microsoft/semantic-kernel/blob/main/docs/SKILLS.md 
  • [8] 嵌入: https://github.com/microsoft/semantic-kernel/blob/main/docs/EMBEDDINGS.md 
  • [9] 支持其他语言: https://aka.ms/sk/python
  • [10] LinkedIn学习课程 https://www.linkedin.com/learning/introducing-semantic-kernel-building-ai-based-apps/introducing-semantic-kernel
  • [11] 简单的聊天摘要 https://github.com/microsoft/semantic-kernel/blob/main/samples/apps/chat-summary-webapp-react/README.md
  • [12] 图书创作者 https://github.com/microsoft/semantic-kernel/blob/main/samples/apps/book-creator-webapp-react/README.md
  • [13] 身份验证和 API https://github.com/microsoft/semantic-kernel/blob/main/samples/apps/auth-api-webapp-react/README.md
  • [14] Github仓库问答 https://github.com/microsoft/semantic-kernel/blob/main/samples/apps/github-qna-webapp-react/README.md
  • [15] Azure Functions 核心工具 https://learn.microsoft.com/azure/azure-functions/functions-run-local 
  • [16] OpenAI API https://openai.com/api/
  • [17] Azure OpenAI 服务密钥 https://learn.microsoft.com/azure/cognitive-services/openai/quickstart?pivots=rest-api
  • [18] Yarn https://yarnpkg.com/getting-started/install
  • [19] .NET 7 https://dotnet.microsoft.com/download
  • [20] Polyglot 扩展 https://www.cnblogs.com/shanyou/p/17247652.html

有关微软开源了一个 助力开发LLM 加持的应用的 工具包 semantic-kernel的更多相关文章

  1. ruby - 使用 Ruby 开发工具包将文件上传到 Amazon S3 - 2

    我正在尝试上传文件。一个简单的hello.txt。我正在关注文档,但无法将其上传到我的存储桶。#STARTAWSCLIENTs3=Aws::S3::Resource.newbucket=s3.bucket(BUCKET_NAME)begins3.buckets[BUCKET_NAME].objects[KEY].write(:file=>FILE_NAME)puts"Uploadingfile#{FILE_NAME}tobucket#{BUCKET_NAME}."bucket.objects.eachdo|obj|puts"#{obj.key}=>#{obj.etag}"endresc

  2. ruby-on-rails - 使用 Kernel#fork 进行后台进程,专业人士?缺点? - 2

    我想知道使用fork{}从Rails应用程序“后台”处理是否是个好主意...从我收集到的fork{my_method;Process#setsid}实际上做了它应该做的事情。1)创建另一个具有不同PID的进程2)不中断调用过程(例如它继续w/o等待fork完成)3)执行子进程直到它完成..这很酷,但这是个好主意吗?fork到底在做什么?它会在内存中创建我的整个railsmongrel/passenger实例的重复实例吗?如果是这样那就太糟糕了。或者,它是否以某种方式在不消耗大量内存的情况下完成。我的最终目标是取消我的后台守护进程/队列系统,转而支持这些进程的fork(主要是发送电子邮件

  3. python - 开源 Twitter 克隆(在 Ruby/Python 中) - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭6年前。Improvethisquestion是否有任何用Ruby或Python编写的生产就绪的开源Twitter克隆?我对功能丰富的实现更感兴趣,而不仅仅是简单的Twitter消息(例如:API、FBconnect、通知等)谢谢!

  4. Gradle 自动化构建开源工具 - 2

    文章目录写在前面1、下载与安装(windows)1.1、idea中配置gradle2、基础知识(Gradle6.9为例)2.1、Gradle脚本语法2.1.1、dependsOn2.1.2、创建动态任务2.1.3、增加任务行为2.1.4、参数2.1.5、Ant任务2.1.6、方法2.1.7、默认任务2.1.6、依赖任务的不同输出3、java项目中使用3.1、在已有项目中构建gradle3.2、在新建项目时构建gradle(idea)3.3、gradle项目目录结构3.4、build.gradle3.4.1、plugins3.4.2、repositories3.4.3、dependencies3

  5. ruby - 如何修复此错误 : kernel_require. rb :45:in `require' : cannot load such file? - 2

    我有以下文件结构:执行.rb图书馆我的类(class).rb在execute.rb我有下面的代码:#!/usr/bin/rubyrequire'lib/my_class'my_object=MyClass.newmy_object.some_method这是my_class.rb的代码:classMyClassdefsome_methodputs'OK'endend所以,我尝试运行execute.rb:rubyexecute.rb但是我收到这个错误:/home/vagrant/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/ru

  6. 停车系统源码-基于springboot+uniapp开源项目 - 2

    Iparking停车收费管理系统-可商用介绍Iparking是一款基于springBoot的停车收费管理系统,支持封闭车场和路边车场,支持微信支付宝多种支付渠道,支持多种硬件,涵盖了停车场管理系统的所有基础功能。技术栈Springboot,MybatisPlus,Beetl,Mysql,Redis,RabbitMQ,UniApp功能云端功能序号模块功能描述1系统管理菜单管理配置系统菜单2系统管理组织管理管理组织机构3系统管理角色管理配置系统角色,包含数据权限和功能权限配置4系统管理用户管理管理后台用户5系统管理租户管理多租户管理6系统管理公众号配置租户公众号配置7系统管理操作日志审计日志8系统

  7. ruby - 如何将 DynamoDB Local 与 AWS Ruby 开发工具包结合使用? - 2

    亚马逊的documentation提供有关如何使用DynamoDBLocal的Java、.NET和PHP示例。你如何用AWSRubySDK做同样的事情??我的猜测是你在初始化时传入了一些参数,但我不知道它们是什么。dynamo_db=AWS::DynamoDB.new(:access_key_id=>'...',:secret_access_key=>'...') 最佳答案 您使用的是SDK的v1还是v2?您需要找出答案;从上面的简短片段来看,它看起来像v2。为了以防万一,我已经包含了这两个答案。v1答案:AWS.config(us

  8. ruby - 如何覆盖 Kernel.load - 2

    我需要覆盖Kernel.load为了观察和处理我们为监控而编写的一些Ruby文件。然而,它似乎不受此类恶作剧的影响。很容易覆盖require和require_relative,但是load位于它们之下,如果我没记错的话,会成为读取实际文件的瓶颈。这就是为什么它似乎不受覆盖的原因:Kernel.module_evaldoalias_method:original_require,:requiredefrequire(filename)require_result=original_require(filename)puts"required#{filename}"require_resu

  9. ruby-on-rails - 有没有很好的引用(开源)Rails NoSQL应用程序? - 2

    我有兴趣了解使用nosql将如何影响rails应用程序的架构/设计/代码。有人知道使用nosql持久性的开源rails应用程序的一个好例子吗?谢谢 最佳答案 看看这些项目:卡桑德拉用法atDigg。卡桑德拉用法atTwitter。Friendly用法atFetLife(nsfw)。最后,MyNoSQL是一个提供nosql相关信息的好网站。 关于ruby-on-rails-有没有很好的引用(开源)RailsNoSQL应用程序?,我们在StackOverflow上找到一个类似的问题:

  10. ruby - 使用适用于 Ruby 的 AWS 开发工具包发布到 SNS 主题时指定区域 - 2

    我正在使用适用于Ruby的AWS开发工具包向Rails3应用程序发布消息和AWSSNS主题,如下所示:sns=AWS::SNS.newtopic=sns.topics['arn:aws:sns:eu-west-1:55555555555:my_topic']topic.publish("MESSAGE",:subject=>"SUBJECT")当我发布到“us-east-1”中的主题时,它按预期工作,但发布到“eu-west-1”区域中的主题时不起作用:AWS::SNS::Errors::InvalidParameter-Invalidparameter:TopicArn:使用AWSS

随机推荐