👏
今日の日付を返すSemantic KernelのPlugin
始めに
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日」としか返してないのにちゃんと「今日は」とオウム返ししてくれていていい感じですね!
Discussion