Semantic Kernel开发实践:定义并使用本机函数(plugin)

前言

作为SK(Semantic Kernel)核心组件之一,Plugins是一组为了实现功能而定义的函数的集合,可以达到增强LLM(大语言模型)的能力。

LLM的训练数据都是截止到过去的某一个时间,所以如果问它现在发生的事情,那么生成的内容,基本上是它在一本正经的胡说八道。LLM也不能进行调用API、发送邮件、发布文章等等操作,如果想让LLM获取新的知识和能力,就需要为它开发一些插件。

这里有一张从微软官方网站上找到的图,展示了plugin的作用。

演示示例使用的控制台应用程序,编程语言是C#,.net版本是8.0

使用Azure OpenAI部署的gpt-3.5-turbo大模型

本机函数功能是获取今天的日期

本机函数

SK的插件有本机函数和语义函数两类。下面我会演示如何创建本机函数,并手动调用它。

1、创建控制台应用

javascript 复制代码
dotnet new console -o dotnet-sk-plugins

2、cd到dotnet-sk-plugins目录下,添加相关的依赖包

csharp 复制代码
dotnet add package Microsoft.KernelMemory.Core
dotnet add package Microsoft.SemanticKernel

3、创建TimePlugin插件类

项目结构如下:

css 复制代码
dotnet-sk-plugins
|--Plugins
|--|--Plugin.Time
|--|--|--TimePlugin.cs
|--Program.cs

代码示例如下:

csharp 复制代码
using System.ComponentModel;
using Microsoft.SemanticKernel;
​
namespace dotnet_sk_plugins.Plugins.Plugin.Time;
​
public sealed class TimePlugin
{
    [KernelFunction, Description("获取今天的日期")]
    public static string GetToday()
    {
        return DateTime.Today.ToString("yyyy-M-d dddd");
    }
}

4、手动调用插件

csharp 复制代码
using dotnet_sk_plugins.Plugins.Plugin.Time;
using Microsoft.KernelMemory;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.ChatCompletion;
using Microsoft.SemanticKernel.Connectors.OpenAI;
​
var builder = Kernel.CreateBuilder()
    .AddAzureOpenAIChatCompletion(Env.Var("AOAI_MODEL_ID"), Env.Var("AOAI_ENDPOINT"), Env.Var("AOAI_API_KEY"));
​
builder.Plugins.AddFromType<TimePlugin>();
​
//1、手动调用
var kernel = builder.Build();
var answer = await kernel.InvokeAsync<string>(
    "TimePlugin",
    "GetToday"
);
​
Console.WriteLine("今天是: " + answer);

结语

这篇文章展示了如何定义一个本机函数,并手动调用它。

相关推荐
m0_650108241 小时前
【论文精读】MotionEditor:基于内容感知扩散模型的视频运动编辑
aigc·论文精读·视频运动编辑·潜在扩散模型(ldm)·注意力注入·时空一致性
墨风如雪6 小时前
OAK:打破壁垒,共绘智能体生态新蓝图
aigc
多喝开水少熬夜9 小时前
损失函数系列:focal-Dice-vgg
图像处理·python·算法·大模型·llm
算家计算9 小时前
一张白纸,无限画布:SkyReels刚刚重新定义了AI视频创作
人工智能·aigc·资讯
大千AI助手11 小时前
微软SPARTA框架:高效稀疏注意力机制详解
人工智能·深度学习·神经网络·llm·大千ai助手·sparta·稀疏注意力机制
Cyril_KI12 小时前
大模型长文生成中的幻觉与事实性:研究进展综述
大模型·llm·github·综述·幻觉
智泊AI13 小时前
AI大模型八股 | 多模态RAG怎么做?
llm
win4r15 小时前
🚀超越DeepSeek-OCR!OCR领域的革命性突破:Chandra OCR本地部署+真实测评!手写体、繁体字、数学公式、重叠文字全部完美识别,告别漏字漏页
llm·aigc·deepseek
AiTop10015 小时前
美团LongCat-Flash-Omni上线:5600亿参数实现音视频交互“零延迟”
人工智能·ai·aigc·音视频·交互
FreeCode16 小时前
Agent开发:LangChain1.0快速入门(一)
人工智能·llm·agent