🙌
Semantic Kernel1.20の新しいFunction呼び出し
いままでの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呼び出しは非推奨になります。
参考
Discussion