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

news2024/12/23 4:28:57

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

非常重要的一点是这些产品都是使用.NET 构建的, 这些项目可以快速的使用LLM 加持,我们写程序的同学肯定都会想微软是怎么做的,正好微软在3月17日在发布了一篇博客文章: [Hello, Semantic Kernel!](Hello, Semantic Kernel! | Semantic Kernel)[2], 在这篇文章中微软已经开源了一个内部孵化项目,Github的仓库:GitHub - microsoft/semantic-kernel: Integrate cutting-edge LLM technology quickly and easily into your apps [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

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

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

相关文章

数学分析:面积和微分形式

这是面积的推广,这里引出了格拉姆矩阵,有了这个,我们得到的矩阵总是方阵,可以绕过雅可比矩阵不存在的问题。能得到通用的积分换元公式。 其实任何时候,从几何意义去理解总是更加自然。考虑一个平面上的坐标&#xff0c…

centos7安装 mongodb

一、rpm安装 1.1、配置MongoDB Enterprise的yum 源文件 [mongodb-enterprise] nameMongoDB Enterprise Repository baseurlhttps://repo.mongodb.com/yum/redhat/$releasever/mongodb-enterprise/3.4/$basearch/ gpgcheck1 enabled1 gpgkeyhttps://www.mongodb.org/static/pgp…

数据结构(王道)——数据结构之 串

一、串的数据结构 串的定义: 串和线性表对比: 串的基本操作 串的比较思路 字符集编码含义 串定义总结: 二、串的存储结构 定义一个串的方式 定长顺序存储和堆分配存储 定长顺序存储的方案: 堆分配存储的方案: 基本操…

vscode远程连接提示:过程试图写入的管道不存在(删除C:\Users\<用户名>\.ssh\known_hosts然后重新连接)

文章目录 复现过程原因解决方法总结 复现过程 我是在windows上用vscode远程连接到我的ubuntu虚拟机上,后来我的虚拟机出了点问题,我把它回退了,然后再连接就出现了这个问题 原因 本地的known_hosts文件记录服务器信息与现服务器的信息冲突了…

Spring MVC异常处理【单个控制异常处理器、全局异常处理器、自定义异常处理器】

目录 一、单个控制器异常处理 1.1 控制器方法 1.2 编写出错页面 1.3 测试结果 二、全局异常处理 2.1 一个有异常的控制器类 2.2 全局异常处理器类 2.3 测试结果 三、自定义异常处理器 3.1 自定义异常处理器 3.2 测试结果 往期专栏&文章相关导读 1. Maven系列…

【并发编程二十二】通过进程名字杀死进程TerminateProcess

【并发编程二十二】通过进程名字杀死进程TerminateProcess 一、代码二、杀进程失败时,检查1、OpenProcess的参数2、UpdatePrivilege提升优先级3、以管理员方式,启动进程 三、启动进程失败1、由于找不到vcruntime140d.dll,无法继续执行代码。2…

ScaleBit 与 NFTScan 达成安全生态合作伙伴关系

7 月初,ScaleBit 与 NFT 基础设施服务商 NFTScan 正式达成安全生态战略合作,携手促进 NFT 生态的安全性。 NFTScan 作为全球领先的 NFT 基础设施服务商,旨在为 Web3 用户和开发者提供专业的一站式 NFT 基础设施服务。用户可以通过它搜索、查看…

3. CSS-定位

absolute和relative依据什么定位? relative依据自身定位,absolute 依据最近一层的定位元素定位 (定位元素是指开启了absolute relative fixed的父元素,没有就是根元素body) 居中对齐的实现方式:详情看这篇博客

10、添加osmbuilding全球建筑模型

本节演示使用CCesium库添加osm的全球建筑模型。在第四节的例子中修改。 1、修改鼠标点击事件,创建osmbuilding并添加到地图中。 aggregator->tileset Cesium::CreateOsmBuildings::createOsmBuildings(false); aggregator->viewer->_scene->primitiv…

linux中安装minio

在 opt 下创建 minio 目录 mkdir minio 上传安装包到 /opt/minio 目录 进入目录 cd minio 授权minio chmod 777 minio 启动minio nohup ./minio server --address 0.0.0.0:9000 --console-address 0.0.0.0:9090 /opt/minio/data > /opt/minio/minio.log 2>&1…

Nautilus Chain NautDID NFT 将上主网,Layer3 数字身份时代开启

Nautilus Chain 是行业内首个模块化 Layer3 链,其采用Celestia模块化底层,并通过ZK Rollup 技术来增加隐私。Nautilus Chain 允许开发者以定制化的方式,通过 Nnautilus 开发者可以更广泛化的在一揽子的模块中,选择适合自己的方案&…

1、shell脚本的基本知识——变量、字符串、循环

目录 一、基本知识 二、 shell的变量和赋值 1、注意 2、变量的种类 3、例子 三、特殊符号 1、单引号、双引号、反引号 2、管道 3、大于号>和小于号<(重定向) &#xff08;1&#xff09;常识 &#xff08;2&#xff09;应用&#xff08;描述符在右边的时候&#x…

JavaWeb(6)——前端工程化(AJAX 和VUE入门)

一、AJAX快速入门 而原生的Ajax请求的代码编写起来还是比较繁琐的&#xff0c;所以接下来我们学习一门更加简单的发送Ajax 请求的技术Axios 。Axios是对原生的AJAX进行封装&#xff0c;简化书写。 Axios官网是&#xff1a;起步 | Axios 中文文档 | Axios 中文网 (axios-http.c…

Spark中为什么Left join比Full join 快

背景 最近在调优的过程中&#xff0c;发现了left outer join比full outer join快很多的情况&#xff0c; 具体的sql如下&#xff1a; from db.baseTb1 base join db.tb1 a on base.id a.idfull outer join db.tbl2 b on a.id b.id full outer join db.tbl3 c on b.id c…

基于Java+SpringBoot+vue的任务追踪管理系统设计与实现

博主介绍&#xff1a;✌擅长Java、微信小程序、Python、Android等&#xff0c;专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到哟 Java项目精品实战案…

【代码随想录 | Leetcode | 第五天】链表 | 移除链表元素 | 设计链表 | 203-707

前言 欢迎来到小K的Leetcode|代码随想录|专题化专栏&#xff0c;今天将为大家带来移除链表元素和设计链表的分享✨ 目录 前言203. 移除链表元素707. 设计链表总结 203. 移除链表元素 ✨题目链接点这里 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所…

[Arduino] ESP32开发 - UDP收发数据

UDP 通信 UDP发送数据 再开始测试之前&#xff0c;请使用手机打开一个热点&#xff0c;并把电脑连接到手机热点上&#xff0c;这样子在后续测试中 ESP32 和电脑就会在同一个局域网&#xff08;手机热点可以使用路由器代替&#xff09; 新建任意文件&#xff0c;填入以下代码 …

linux日志文件

前言&#xff1a; 无论管理什么系统&#xff0c;对日志文件的监控、调用、管理都是其中重要的一部分。服务器问题的解决都是从查看系统&#xff08;错误&#xff09;日志开始的 一、作用&#xff1a; linux运行的程序通常把系统的消息和错误写入对应的日志文件&#xff0c;如L…

浙大数据结构第三周之03-树3 Tree Traversals Again

题目详情&#xff1a; An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose that when a 6-node binary tree (with the keys numbered from 1 to 6) is traversed, the stack operations are: push(1); push(2)…

Vue列表过滤(计算属性和监听属性实现)

filter&#xff1a; 过滤器 indexOf()&#xff1a;是否包含某某值 <body> <div id"root"><!--遍历数组--><h2>人员列表</h2><input type"text" placeholder"请输入名字" v-model"keyWord"><ul…