微软发布大语言模型与传统编程语言的集成编程框架——Python版本的Semantic Kernel今日发布
随着ChatGPT的火爆,Prompt-tuning已经成为当前大语言模型(Large Lanugage Model,LLM)时代最流行的生产技术,使得很多人一夜之间似乎有了编程的能力,甚至可以让没有编程经验的人一天之内开发出一个完整的chrome插件。\n\n但是目前的LLM有很多限制,有很多问题并不能很好的解决,例如文本输入长度有限、无法记住很早之前的信息等。而这些问题目前也都缺少合适的解决方案。它们所依赖的技术:如任务规划、提示模板、向量化内存等需要的是编程的智慧。Semantic Kernel就是微软在这个背景下推出的一个结合LLM与传统编程技术的编程框架。\n\n本文将介绍这个最新的LLM领域的编程框架!

什么是Semantic Kernel?
Semantic Kernel (SK) 是一个轻量级的SDK,允许将传统编程语言(如C#和Python)与最新的大型语言模型(LLM)AI提示相结合,具有提示模板、链接和规划功能。\n\n简单来说,这个框架提供了一种解决方案,可以在编程中更加有效地利用大语言模型来解决复杂的问题。如下图所示,这是SK利用大模型解决问题的一种流程抽象:

n
在微软看来,利用LLM解决问题主要是学会向LLM提问,因此,解决问题的流程也是从提问开始。但是,一个问题能否被LLM很好的回答也是依赖很多方面的,例如提问的技巧,问题是否可以被分解成多个确定的步骤等。而这些目前仅仅依赖prompt-tuning依然是一个很复杂的人工操作。但是解决用户的目标可以变成如下几个步骤的抽象:
- ASK:将用户的问题转化成一个ASK
- Kernel:获得用户的问题之后,需要对问题进行编排,主要增加与用户问题相关的提问模板、相关的解决技术(skills)等。
- Planner:用户的目标或者问题可能涉及多个步骤,需要根据资源以及目标将用户的问题分解成不同的步骤
- Resources:Planner分解之后每个步骤涉及到的skills、memories等
- Steps:即Planner分解的步骤
- Pipeline:流水线,即执行Steps的流水线
- GET:获取用户最终的结果
从这些步骤看,微软的SK主要是提供了一种使用LLM解决问题的范式,显然这是针对复杂任务构造的一种流程和框架,遵照这个流程和框架来将用户的目标分解后执行,可以获得LLM的输出。
Semantic Kernel的核心能力
经过上面的分解,我们可以大致了解到SK解决问题的思路。但是,仅仅依赖这个流程依然很难解决文本输入限制、长期记忆等问题。为此,微软还提供了几个非常好的特性来支撑流程的实现。我们这里简单介绍几个比较重要的概念。
Skills
Skills是SK编程框架里面的一个核心概念,也是一种基本的能力。微软认为,函数作为一种基本的服务,可以处理一些单一的任务,但是在LLM中,很多任务都是多个函数组合而成的。因此,微软提供Skills,把基础的函数进行打包即可变成一个Skill,提供基本的服务。例如,会话摘要Skill就提供了摘要技能,里面包含了从会话脚本中进行总结、识别action和主题等相关能力。而当我们需要使用相关的能力的时候可以直接引入这个Skill来完成。
目前,SK中提供了10个核心的Skills,包括会话摘要、文本IO、文本记忆、Http、数学、文本、时间等。
Prompt
没错,Prompt就是我们说的提示。但是微软在SK里面提供了强大的Prompt模板支持。我们根据用户输入的问题构造Prompt的时候可能依赖很多内容。例如,当用户问LLM“今天天气怎么样”的时候可能默认是当前的地点。这时候我们的产品要能把用户的提问转换成特定的prompt,可能需要的是引入额外的变量或者方法来完成prompt改造。微软的SK提供了强大的能力让我们很轻松的构造各种prompt模板,并结合外部的变量、函数等,建立更加个性化和完善的prompt。
Planner
Planner是SK中一个核心的部件,主要用来解决规划的问题。它可以访问所有注册的Skills和函数。当任务来临时候,Planner可以根据配置找到最相关的Skills,然后通过编排来确定使用哪些Skills解决问题。
Semantic Kernel评价
从微软的发布规模和文档内容来看,微软对SK可能有一种希望,让它变成一种解决LLM的平台软件。为此,它们抽象了这样一种利用LLM解决问题的范式。为了让大家可以用这个框架来开发利用LLM的能力,微软打造的这个SK提供了十分具有想象力的未来。
但是,这个框架从目前提供的能力来看,似乎更像一种解决问题的流程框架。它所包含的能力似乎在易用性方面有着比较大的问题。尽管微软宣称这是一种轻量化的SDK,但是感觉要是使用好这个东西,难度也不低啊~~
Semantic Kernel的GitHub地址:https://github.com/microsoft/semantic-kernel\nSemantic Kernel官方网站:https://devblogs.microsoft.com/semantic-kernel/\n\n\n\n\n
欢迎大家关注DataLearner官方微信,接受最新的AI技术推送
