探索内置插件

已完成

插件是语义内核 SDK 的核心组件之一。 插件定义内核在与大语言模型 (LLM) 交互时要执行的任务。 插件可以由本机代码和 LLM 提示组成。 语义内核 SDK 还提供了一些用于常见任务的内置插件,可以直接在应用程序中使用。

什么是插件?

在语义内核 SDK 中,插件是一个类,其中包含可由内核运行的函数。 可以通过语义提示或本机函数代码生成插件函数。 若要使用插件,请将其添加到内核,然后使用 InvokeAsync 方法调用所需的函数。 内核访问插件,查找并运行函数,然后返回结果。 让我们来看看一些预定义的插件。

内置插件

语义内核 SDK 提供了一个额外的包,其中包含用于常见任务的预定义插件。 可在 Plugins.Core 包中找到这些内容,可以使用 NuGet 安装该包:dotnet add package Microsoft.SemanticKernel.Plugins.Core --version 1.2.0-alpha 该包包含以下插件:

  • ConversationSummaryPlugin - 汇总对话
  • FileIOPlugin - 读取和写入文件系统
  • HttpPlugin - 向 HTTP 终结点发出请求
  • MathPlugin - 执行数学运算
  • TextPlugin - 执行文本操作
  • TimePlugin - 获取时间和日期信息
  • WaitPlugin - 将执行暂停指定的一段时间

若要使用核心插件,可以使用 AddFromType 方法将其添加到内核生成器。 例如,要将 TimePlugin 添加到内核,可以使用以下代码:

using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Plugins.Core;
    
var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(
    "your-deployment-name",
    "your-endpoint",
    "your-api-key",
    "deployment-model");
builder.Plugins.AddFromType<TimePlugin>();
var kernel = builder.Build();
var currentDay = await kernel.InvokeAsync("TimePlugin", "DayOfWeek");
Console.WriteLine(currentDay);

此代码将 TimePlugin 添加到内核,然后调用 DayOfWeek 函数来获取当前是星期几。 输出显示当前是星期几。

这些现成的插件可用于快速将功能添加到项目。 在下一个练习中,可了解如何使用 ConversationSummaryPlugin 获取对话摘要或文本块中的操作项。