🙌

Semantic Kernel1.20の新しいFunction呼び出し

2024/09/18に公開

いままでのFunctionの呼び出し方

いままでは、AzureOpenAIとOpenAIコネクタ用、GeminiAIコネクタ用、Mistralコネクタ用というようにFunctionの呼び出しのクラスが異なっていました。

例えば、Azure OpenAI Service・OpenAI用では以下のようです

builder.AddAzureOpenAIChatCompletion(
   deploymentName,
   endpoint,
   new DefaultAzureCredential()).Build();
// プラグインを入れておく
builder.Services.AddSingleton<HttpClient>();
builder.Plugins.AddFromType<WeatherPlugin>();
Kernel kernel = builder.Build();

OpenAIPromptExecutionSettings? setting = new()
{
    ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions,
};
var result = await kernel.InvokePromptAsync("東京の天気が知りたいな", new(setting));

コード例のクラス名を見ての通りOpenAIを含むクラス名になっておりOpenAI系の専用であることがうかがえます。

新しいFunctionの呼び出し方

builder.AddAzureOpenAIChatCompletion(
   deploymentName,
   endpoint,
   new DefaultAzureCredential()).Build();
// プラグインを入れておく
builder.Services.AddSingleton<HttpClient>();
builder.Plugins.AddFromType<WeatherPlugin>();
Kernel kernel = builder.Build();

#pragma warning disable SKEXP0001 
PromptExecutionSettings promptExecutionSettings = new()
{
    FunctionChoiceBehavior = FunctionChoiceBehavior.Auto(),
};
#pragma warning restore SKEXP0001 
var result = await kernel.InvokePromptAsync("東京の天気が知りたいな", new(setting));

注意すべき点は現時点ではAzure OpenAI ServiceとOpenAIのみで使用可能なことです。

また、現時点では「FunctionChoiceBehavior」によるFunction呼び出しは実験的なものであり変更される可能性があります。2024年11月中頃に予定されているGAまで実験的扱いです。
また、その時点で現在の「TollCallBehavior」によるFunction呼び出しは非推奨になります。

参考

https://devblogs.microsoft.com/semantic-kernel/new-function-calling-model-available-in-net-for-semantic-kernel/?WT.mc_id=%3Fwt.mc_id%3DDT-MVP-5004827

https://learn.microsoft.com/semantic-kernel/concepts/ai-services/chat-completion/function-calling/function-choice-behaviors?pivots=programming-language-csharp&WT.mc_id=%3Fwt.mc_id%3DDT-MVP-5004827

Discussion