当我们使用Native Function的时候,除了处理一些基本的逻辑操作之外,更多的还是需要进行外部数据源和服务的对接,要么是获取相关的数据,要么是保存输出结果.这一过程在Semantic Kernel中可以被归类为Connector. Connector更像是一种设计模式,并不像Function和Memory 一样有强制和明确的规定.所以从官方的接口定义上也没有一个 IConnector类似的东西.不过我们可以从官方示例中了解这一模式的使用方法. 以 [Web Skills 中的 WebSe…
理解了LLM的作用之后,如何才能构造出与LLM相结合的应用程序呢? 首先我们需要把LLM AI的能力和原生代码的能力区分开来,在Semantic Kernel(以下简称SK),LLM的能力称为 semantic function ,代码的能力称为 native function,两者平等的称之为function(功能),一组功能构成一个技能(skill). SK的基本能力均是由skill构成. 有了一堆skill之后并不能直接执行,需要有一个配置和管理的单元,就像是MVC 需要ASP.NET框架…
了解的运作原理之后,就可以开始使用Semantic Kernel来制作应用了. Semantic Kernel将embedding的功能封装到了Memory中,用来存储上下文信息,就好像电脑的内存一样,而LLM就像是CPU一样,我们所需要做的就是从内存中取出相关的信息交给CPU处理就好了. 内存配置 使用Memory需要注册 embedding模型,目前使用的就是 text-embedding-ada-002.同时需要为Kernel添加MemoryStore,用于存储更多的信息,这里Semant…
不论你是否关心,不可否认,AGI的时代即将到来了. 在这个突如其来的时代中,OpenAI的ChatGPT无疑处于浪潮之巅.而在ChatGPT背后,我们不能忽视的是LLM(Large Language Model)大型语言模型. 一夜之间所有的大厂商都在搞LLM,虽然很难有谁能和OpenAI相匹敌,但是随着AI领域的新摩尔定律的发功,很快啊,如今的智障都会在不久的将来成为智神,只能说留给人类嘲笑的时间不多了. 如果了解LLM的训练成本的话,注定了这必然不是人人都可从零创造ChatGPT的时代,也注…
ChatGPT 只是LLM 的小试牛刀,让人类能够看到的是机器智能对于语言系统的理解和掌握. 如果只是用来闲聊,而且只不过是将OpenAI的接口封装一下,那么市面上所有的ChatGPT的换皮应用都差不多.这就像是买了个徕卡镜头的手机,却只用来扫二维码一样. 由于微软的财大气粗,在OpenAI取得进展之后,微软开始了对其产品的一轮AI化改造,从Github Copilot,到Bing Copilot ,再到Microsoft 365 Copilot,从名称定义也看得出来,LLM带来的最大生产力提升…
如果把提示词也算作一种代码的话,那么语义技能所带来的将会是全新编程方式,自然语言编程. 通常情况下一段prompt就可以构成一个Semantic Function,如此这般简单,如果我们提前可以组织好一段段prompt的管理方式,甚至可以不需要写任何的代码,就可以构造出足够多的技能来. 使用文件夹管理Semantic Function Semantic Kernel恰好就提供了这样一种组织方式,仅需使用文本文件和文件夹就可以管理Semantic Function.文件夹的大致结构如下: Test…
语义的归语义,语法的归语法. 基础定义 最基本的Native Function定义只需要在方法上添加 SKFunction 的特性即可. using Microsoft.SemanticKernel.SkillDefinition; using Microsoft.SemanticKernel.Orchestration; namespace MySkillsDirectory; public class MyCSharpSkill { [SKFunction("Return the first…
无尽的上下文 LLM的语言理解和掌握能力在知识内容的解读和总结方面提供了强大的能力. 但是由于训练数据本身来自于公共领域,也就注定了无法在一些小众或者私有的领域能够足够的好的应答. 因此如何给LLM 提供足够多的信息上下文,就是如今的LLM AI应用可以充分发挥能力的地方了. 我们默认可以想到的是在提示词中提供足够的上下文信息,然而像OpenAI的模型总是有一个Max Tokens 的限制,也就意味着不可能一次性将所有的相关信息都可以放在提示词中,即便是最大的gpt-4-32k,目前也只有32,…
Semantic Kernel 的一个核心能力就是实现"目标导向"的AI应用. 目标导向 "目标导向"听起来是一个比较高大的词,但是却是实际生活中我们处理问题的基本方法和原则. 顾名思义,这种方法的核心就是先确定目标,然后在寻找实现目标的方法和步骤.这对于人来说的是很自然的事情,但是对于机器则不然.一大堆的指令和控制逻辑其实都是在完成另外一种产出导向的结果.所有的流程和过程都需要提前预定义好,然后期待一个结果的产出. 如今,借助 LLM AI 的力量,我们可以轻松的…
上一篇"拥抱.NET Core系列:依赖注入(1)"大体介绍了服务注册.获取和生命周期,这一篇来做一些补充. 由于内容跨度大(.NET Core.ASP.NET Core),所以文章并不是非常的贯穿,大家可以挑着看. 构造函数的选择 如果一个服务中包含多个构造函数,.NET Core会选择哪一个呢? 答案是:最大匹配的构造函数. 我们来看个示例 泛型服务 单个泛型 多个泛型 集成第三方DI容器 我们这边使用Autofac来做演示. 安装packages:"Autofac.Ex…