Semantic Kernel 是 Microsoft 开源的一款 SDK(软件开发工具包),用于构建基于大语言模型和 AI 服务 的应用程序。它旨在帮助开发者更轻松地将 AI 模型与自定义功能、外部数据源和业务逻辑集成在一起,从而实现更强大、更智能的应用程序。
一、Semantic Kernel 的核心概念
- Kernel 核心组件
- Plugins(插件)
- Prompts(提示)
- Functions(函数)
- Connectors(连接器)
- Planning(规划)
二、编写 Microsoft.SemanticKernel 库和 OpenAI 的控制台应用(官方示例)
1)效果演示:
2)编码实现
导入必要的包
配置大模型
从支持的大模型选择OpenAI的Chat Completion:
构建 Kernel 实例
创建Chat Completion服务实例
添加插件
配置模型执行设置
设置 FunctionChoiceBehavior 为 Auto(),它告诉模型自动选择使用哪种功能(例如生成文本,回答问题等)。
启动聊天
创建本机插件
这个插件 LightsPlugin 是一个用于模拟灯光控制功能的插件,它通过 Semantic Kernel
功能概述
- 获取灯光列表及其状态:提供一个查询所有灯光及其当前状态的功能。
- 更改灯光的状态:允许用户更改指定灯光的开关状态(开启或关闭)。
代码解析
LightsPlugin 类
- 该类包含一个灯光列表 lights,用于模拟灯光设备的当前状态。每个灯光有 Id、Name 和 IsOn(是否开)属性。
- GetLightsAsync 和 ChangeStateAsync 两个异步方法提供了对灯光状态的访问和修改:
LightModel 类
- LightModel类代表一个灯光对象,包含以下属性:
- Id:灯光的唯一标识符。
- Name:灯光的名称(例如,“台灯”,“门廊灯”等)。
- IsOn:灯光的状态,true 表示开,false 表示关。
该类使用了 JsonPropertyName 特性,以便将属性映射为与 JSON 数据中的字段相对应的名称。
在实际应用中,这个插件可以作为聊天系统的一部分,允许用户通过对话接口控制灯光。例如,用户可以查询所有灯光的状态,或者直接请求更改某个灯光的开关状态。
附录:完整代码:
SemanticKernelDemo-02/LightsPlugin.cs
SemanticKernelDemo-02/Program.cs