在上一篇博客中和大家简单介绍了 SemanticKernel 里的技能概念,接下来咱准备将 技能 导入到 SemanticKernel 框架里面,进行一个管道式调用

本文属于 SemanticKernel 入门系列博客,更多博客内容请参阅我的 博客导航

别着急,本篇博客还不涉及到任何的 GPT 相关的魔法,仅仅只是在 C# 层面上的框架使用而已

按照上一篇博客中的创建项目的例子,也就是安装 Microsoft.SemanticKernel 库之后,就可以开始本篇的代码

使用 SemanticKernel 框架的第一步就是通过 KernelBuilder 创建器创建出 IKernel 对象。可以在 KernelBuilder 创建器配置各项内容,比如日志或者是配置和 AzureAI 或 OpenAI 进行对接的逻辑,甚至配置与第三方大语言模型进行对接

本文这里将采用最简单的啥都不配置的方式,创建 IKernel 对象

IKernel kernel = new KernelBuilder().Build();

将技能导入 SemanticKernel 框架的方法是调用 IKernel 的 ImportSkill 方法。之所以提供导入技能给到 SemanticKernel 框架是为了可以方便按需导入,避免一口气导入太多的技能,让 GPT 不知道调用哪个。同时也方便咱自己定义和扩展技能

// 加载技能
var text = kernel.ImportSkill(new TextSkill());

加载技能之后,使用 SemanticKernel 框架提供的管道方式调用了,如以下代码,就是先对字符串进行裁剪再修改为大写

SKContext result = await kernel.RunAsync("    i n f i n i t e     s p a c e     ",
text["TrimStart"],
text["TrimEnd"],
text["Uppercase"]); Console.WriteLine(result);

运行代码,可以看到输出如下

I N F I N I T E     S P A C E

也就是以上代码是按照 text["TrimStart"] text["TrimEnd"] text["Uppercase"] 顺序,分别调用 TextSkill 类型的 TrimStart 和 TrimEnd 和 Uppercase 方法,而且还是将上一个方法的返回值当成下一个方法的输入值

通过 SemanticKernel 框架的这个能力,可以非常方便的提供多个技能进行排列组合,从而完成更加复杂的任务。在下一篇将告诉大家如何自定义技能

本文的代码放在githubgitee 欢迎访问

可以通过如下方式获取本文的源代码,先创建一个空文件夹,接着使用命令行 cd 命令进入此空文件夹,在命令行里面输入以下代码,即可获取到本文的代码

git init
git remote add origin https://gitee.com/lindexi/lindexi_gd.git
git pull origin eca54565cd10135ae5acbf6242113ba4e25c2c7c

以上使用的是 gitee 的源,如果 gitee 不能访问,请替换为 github 的源。请在命令行继续输入以下代码

git remote remove origin
git remote add origin https://github.com/lindexi/lindexi_gd.git
git pull origin eca54565cd10135ae5acbf6242113ba4e25c2c7c

获取代码之后,进入 SemanticKernelSamples\Example02_Pipeline 文件夹

dotnet SemanticKernel 入门 将技能导入框架的更多相关文章

  1. dotnet 从入门到放弃的 500 篇文章合集

    本文是记录我从入门到放弃写的博客 博客包括 C#.WPF.UWP.dotnet core .git 和 VisualStudio 和一些算法,所有博客使用 docx 保存 下载:dotnet 从入门到 ...

  2. Flask 入门一( flask 框架和 flask-script 库)

    Flask 入门一( flask 框架 和 flask-script 库) 一.Flask框架: 1.简介 Flask是一个非常小的Python Web框架,被称为微型框架:只提供了一个稳健的核心,其 ...

  3. Hibernate入门第一讲——Hibernate框架的快速入门

    Hibernate框架的概述 什么是框架? 框架指的是软件的半成品,已经完成了部分功能. JavaEE开发的三层架构 了解框架的基本概念之后,我们就来看看Hibernate框架处于JavaEE开发的经 ...

  4. MyBatis01:框架概述、环境搭建及入门案例、自定义框架

    课程介绍 第一天:mybatis的入门 mybatis的概述 mybatis的环境搭建 mybatis入门案例 自定义mybatis框架(目的:了解mybatis的执行细节) 第二天:mybatis基 ...

  5. Intellij自动下载导入框架包

    忽然发现intellij尽然可以自动导入 框架所需的包,而且可以选择jar包版本,瞬间发现Maven,gradle管理jar包还得写配置文件弱爆了. 以Hibernate为例: 1.ProjectSt ...

  6. HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID

    HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID HealthKit开发准备工作 在开发一款HealthKit应用程序时,首先需要讲解HealthKit中有哪些类,在i ...

  7. Intellij自动下载导入框架包和常用快捷键

    忽然发现intellij尽然可以自动导入 框架所需的包,而且可以选择jar包版本,瞬间发现Maven,gradle管理jar包还得写配置文件弱爆了. 以Hibernate为例: 1.ProjectSt ...

  8. 【转】MMORPG游戏服务器技能系统设计:表格字段与技能程序框架

    本文主要从一个程序员的角度阐述一下mmorpg服务器技能系统的程序框架设计,最近在做这个,就当做一个总结吧,其中某些概念可能没有解释清楚,欢迎大家拍砖讨论~ 技能其实是战斗系统的一个组成部分,战斗基本 ...

  9. 开源一个基于dotnet standard的轻量级的ORM框架-Light.Data

    还在dotnet framework 2.0的时代,当时还没有EF,而NHibernate之类的又太复杂,并且自己也有一些特殊需求,如查询结果直接入表.水平分表和新增数据默认值等,就试着折腾个轻量点O ...

  10. Requests库主要方法解析以及Requests库入门需要掌握的框架

    Requests库主要方法解析以及Requests库入门 1.requests.request(method,url,**kwargs) **kwargs:控制访问的参数,均为可选项 params:字 ...

随机推荐

  1. Retrofit源码分析

    目录介绍 1.首先回顾Retrofit简单使用方法 2.Retrofit的创建流程源码分析 2.1 Retrofit对象调用Builder()源码解析 2.2 Retrofit对象调用baseUrl( ...

  2. 记录--Vue 3 中的极致防抖/节流(含常见方式防抖/节流)

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 今天给大家带来的是Vue 3 中的极致防抖/节流(含常见方式防抖/节流)这篇文章,文章中不仅会讲述原来使用的防抖或节流方式,还会带来新的一 ...

  3. Mysql中的锁(case篇)

    case1(表锁的读-写-读阻塞) 上篇文档中提到过 WRITE locks normally have higher priority than READ locks to ensure that ...

  4. Games101--作业2

    说明 该作业主要想实现两个三角形的绘制 绘制结果走样 按照课上所讲的方法,对包围盒里面的所有像素进行判断是否在三角形内,然后着色,这样的结果由于采样频率的问题将导致边缘走样现象的发生 if(!insi ...

  5. JS实现决策报表缓存最后一次查询条件

    问题描述 决策报表在打开时希望参数控件的值可以默认是上一次页面关闭前最后一次查询所选择的值. 解决方案 每次点击查询后将参数值保存到浏览器缓存中(适用于控件在参数栏内),或每次控件值发生改变后将参数值 ...

  6. c语言的一些类型声明符

    基本类型: char: 字符类型 int: 整数类型 float: 单精度浮点数类型 double: 双精度浮点数类型 void: 无类型 修饰符: short: 短整数类型 long: 长整数类型 ...

  7. AndroidStudio配置 | 菜鸟教程

    https://www.runoob.com/android/android-studio-install.html

  8. 12 JavaScript 关于eval函数

    12 eval函数 eval本身在js里面正常情况下使用的并不多. 但是很多网站会利用eval的特性来完成反爬操作. 我们来看看eval是个什么鬼? 从功能上讲, eval非常简单. 它和python ...

  9. 使用OHOS SDK构建googletest

    参照OHOS IDE和SDK的安装方法配置好开发环境. 从github下载源码. 执行如下命令: git clone --depth=1 https://github.com/google/googl ...

  10. Docker 学习之道: 容器注册表及其最佳实践

    容器注册表是Docker容器镜像的集中存储和分发系统.它允许开发人员以这些镜像的形式轻松共享和部署应用程序.容器注册表在容器化应用程序的部署中发挥着关键作用,因为它们提供了一种快速.可靠和安全的方式, ...