👏

今日の日付を返すSemantic KernelのPlugin

2023/12/08に公開

始めに

Semantic KernelのPluginの扱いがすごく簡単になってきています。
その一端を紹介するために極簡単なPluginとして今日の日付を返すというPluginを作ってみたいと思います。

Pluginの定義

public class TodayPlugin()
{
    [KernelFunction, Description("今日は何月何日?。")]
    public string GetToday()
    {
        return DateTime.Now.ToString("M月d日");
    }
}

説明文をみてこのFunctionを使用するかどうかを決定するので説明文が重要なことは言うまでもないです。
思ったようにこのプラグインが呼ばれないときは説明文を工夫しましょう。

呼び出し側

            KernelBuilder builder = new();
            builder.Services.AddAzureOpenAIChatCompletion(deploymentName, modelId, endpoint, apiKey);
            builder.Plugins.AddFromType<TodayPlugin>();
            kernel = builder.Build();

            OpenAIPromptExecutionSettings? setting = new()
            {
                FunctionCallBehavior = FunctionCallBehavior.AutoInvokeKernelFunctions
            };

            var result = await kernel.InvokePromptAsync(input, new(setting));

このとき、inputに質問文が入るようにします。

プラグインとしては「12月8日」としか返してないのにちゃんと「今日は」とオウム返ししてくれていていい感じですね!

https://devblogs.microsoft.com/semantic-kernel/release-candidate-1-for-the-semantic-kernel-net-sdk-is-now-live/

Discussion