在首席执行官萨蒂亚·纳德拉(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. 微软开源大规模数据处理项目 Data Accelerator

    微软开源了一个原为内部使用的大规模数据处理项目 Data Accelerator.自 2017 年开发以来,该项目已经大规模应用在各种微软产品工作管道上. 据微软官方开源博客介绍,Data Accel ...

  2. 探索微软开源Python自动化神器Playwright

    相信玩过爬虫的朋友都知道selenium,一个自动化测试的神器工具.写个Python自动化脚本解放双手基本上是常规的操作了,爬虫爬不了的,就用自动化测试凑一凑. 虽然selenium有完备的文档,但也 ...

  3. 微软开源的Web测试和自动化神器 Playwright

    Playwright 是微软开源的一个用于 Web 测试和自动化的框架, 提供了可靠的端到端测试, 功能非常强大, 可以在测试, 爬虫,自动化场景中使用. 跨浏览器 Playwright 支持所有现代 ...

  4. 今天介绍一下自己的开源项目,一款以spring cloud alibaba为核心的微服务架构项目,为给企业与个人提供一个零开发基础的微服务架构。

    LaoCat-Spring-Cloud-Scaffold 一款以spring cloud alibab 为核心的微服务框架,主要目标为了提升自己的相关技术,也为了给企业与个人提供一个零开发基础的微服务 ...

  5. 资深人士剖析微软开源.NET事件:战略重心已经从PC转移到云端

    本文是雷锋网对我的访谈整理的文章,源地址是 http://www.leiphone.com/news/201411/6KaGhD7PDABnvrRf.html 2014年11月13日,微软表示开源.N ...

  6. 基于微软平台IIS/ASP.NET开发的大型网站有哪些呢?

    首先说明一下,本文绝不是要说Microsoft平台多么好,多么牛.只是要提醒一些LAMP/JAVA平台下的同志们,微软平台不至于像你们说的,和想象的那么不堪!只是你们自己不知道而已.同时,也希望广大M ...

  7. 拥抱开源,Office 365开发迎来新时代

    前言 作为全球最大的开放源代码托管平台,Github在上周迎来了它的十岁生日.自从2008年正式上线以来,Github上面汇聚了数以千万计的开发人员和各种项目,它几乎成为了开源的代名词和风向标,各大软 ...

  8. 微软开源自动机器学习工具NNI安装与使用

    微软开源自动机器学习工具 – NNI安装与使用   在机器学习建模时,除了准备数据,最耗时耗力的就是尝试各种超参组合,找到最佳模型的过程了.对于初学者来说,常常是无从下手.即使是对于有经验的算法工程师 ...

  9. GitHub贡献第一的公司是谁?微软开源软件列表

    参考:http://www.infoq.com/cn/news/2017/03/GitHub-first-Microsoft-open-sour 提起微软公司,不少人第一反应是老牌巨头专注于私有化软件 ...

  10. ethr 微软开源的tcp udp http 网络性能测试工具

    ethr 是微软开源的tcp udp http 网络性能测试工具包包含的server 以及 client 我们可以远程测试 同时对于https icmp 的支持也在开发中,tcp 协议支持连接.带宽. ...

随机推荐

  1. pycharm怎么查看某个包pycharm怎么查看某个包的源码的源码

    安装ctrl点击对应的函数名或是包名即可

  2. Vue.sync修饰符与this.$emit('update:xxx', newXXX)

    Vue通过prop进行双向数据绑定.子组件数据变化,一般只能通过 this.$emit(func, val) 回调父组件函数来传值给父组件. Vue2.3版本引入sync,作为一个事件绑定语法糖,当子 ...

  3. 学Java的第5天,今天做了个双色球系统

    今天是学JAVA的第5天,刚刚把方法学完,然后就在这做黑马的题. 用了一个多小时时间,把他的 这些题都做完了 但是最后一道题,这个双色球系统我感觉挺有意思的 我看到这个题,分析后感觉需要4种方法: 1 ...

  4. 微信小程序主包和分包的资源可以相互引用吗

    了解主包.分包 整个小程序所有分包大小不超过20M;单个分包/主包大小不能超过 2M 主包: a. 放置默认启动页面&&tabBar页面, 以及一些分包需要用到的公共资源(如wxss. ...

  5. PTA两个有序链表序列的合并

    本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义:   List Merge( List L1, List L2 );   其中List结构定义如下:   ...

  6. 解决SVN不显示绿色小对勾

    https://blog.csdn.net/qq_34338527/article/details/108534652

  7. Linux系列---【设置ssh连接超时时间】

    设置ssh连接超时时间 shell工具总是不断的超时,上个厕所就断开了,很不方便,这里根据自己习惯设置一下. echo "export TMOUT=600" >> /e ...

  8. Java中集合基础相关知识

    1.集合基础 1.1 集合概述 编程的时候如果需要存储多个数据使用长度固定的数据存储,适应不了元素个数变化的需求,这时候我们就需要用集合. 集合类的特点:提供了一种存储空间可变的存储模型,存储的数据容 ...

  9. Mac Idea2018.1.6版 利用脚本激活安装详解

    下载安装包:链接: https://pan.baidu.com/s/1W4alLXUeQ6xazkNEtB8I9w 提取码: w6rg 下载脚本:链接: https://pan.baidu.com/s ...

  10. Web_ServletContext主要方法

    ServletContext:联系上下文,一个项目通用一个context,作用域:整个项目 用法:Servlet里面直接应用,tomcat帮我们自动创建. 获取ServletContext:getSe ...