练习 - 使用内置插件

已完成

在本练习中,将现有插件添加到你的语义内核项目,并了解如何使用你的第一个插件来完成任务。 现在就开始吧!

准备开发环境

在这些练习中,你可以使用初学者项目。 使用以下步骤设置初学者项目:

重要

必须安装 Visual Studio Code 和 .NET Framework 8.0 才能完成这些步骤。 可能还需要安装 Visual Studio Code C# 开发工具包扩展。

  1. 打开 Visual Studio Code。

  2. 在 Visual Studio Code 的“开始”部分下,选择“克隆 Git 存储库”。

  3. 在 URL 栏中,输入 https://github.com/MicrosoftLearning/MSLearn-Develop-AI-Agents-with-Azure-OpenAI-and-Semantic-Kernel-SDK.git

  4. 在文件资源管理器中,在易于查找和记住的位置(例如桌面中的文件夹)中创建新文件夹。

  5. 单击“选择为存储库目标”按钮。

    需要登录到 GitHub 才能成功克隆项目。

  6. 在 Visual Studio Code 中打开项目。

  7. 在资源管理器中,右键单击 M02-create-plugins-for-semantic-kernel/M02-Project 文件夹,然后单击“在集成终端中打开”。

  8. 展开 M02-create-plugins-for-semantic-kernel/M02-Project 文件夹。

    此时应会看到“Program.cs”文件。

  9. 打开 Program.cs 文件,然后使用 Azure OpenAI 服务部署名称、API 密钥、终结点来更新以下变量

    string yourDeploymentName = "";
    string yourEndpoint = "";
    string yourKey = "";
    

现在,你已准备好开始进行练习。 祝你好运!

获取用户的意向

  1. 在集成终端中,添加语义内核插件。 通过运行以下命令将核心包添加到你的项目:dotnet add package Microsoft.SemanticKernel.Plugins.Core --version 1.2.0-alpha

    注意

    目前该包是预发行版版本。 可能需要检查最新版本 https://www.nuget.org/packages/Microsoft.SemanticKernel.Plugins.Core/1.2.0-alpha

  2. 将以下代码添加到 Program.cs 文件:

    builder.Plugins.AddFromType<ConversationSummaryPlugin>();
    var kernel = builder.Build();
    
    string input = @"I'm a vegan in search of new recipes. I love spicy food! 
    Can you give me a list of breakfast recipes that are vegan friendly?";
    
    var result = await kernel.InvokeAsync(
        "ConversationSummaryPlugin", 
        "GetConversationActionItems", 
        new() {{ "input", input }});
    
    Console.WriteLine(result);
    

    在此代码中,从 Core.Plugins 包导入 ConversationSummaryPlugin。 创建新的内核生成器并将插件添加到生成器。 ConversationSummaryPlugin 支持多个操作:GetConversationActionItemsSummarizeConversationGetConversationTopics

    使用示例对话创建字符串,然后使用函数名称调用插件并传入聊天字符串。 该插件会返回会话的摘要。

    注意

    由于插件仍处于预览状态,因此可能需要在文件顶部使用 #pragma warning disable SKEXP0050 禁止显示警告。

  3. 通过在终端中输入 dotnet run 来运行代码。

    你应该会看到类似于以下输出的响应:

    {
        "actionItems": [
            {
                "owner": "",
                "actionItem": "Provide a list of vegan-friendly spicy breakfast recipes",
                "dueDate": "",
                "status": "Open",
                "notes": ""
            }
        ]
    }
    

    请注意,该插件能够识别输入字符串中的简化意向。

此示例只是可以用语义内核 SDK 做到的事情的开头。 在下一单元中,你将了解自定义插件和运行函数的更多方法。

重要

请确保不要删除你编写的任何代码,你在下一个练习中需要它。