自動叫用函式
語意核心 SDK 支援功能強大的自動函式呼叫功能。 啟用自動函式呼叫功能,可讓核心自動選取要在某個提供的輸入上使用哪些函式和提示。 此功能可幫助您節省手動叫用函式和提示的時間,並讓您的應用程式更加聰明。
若要使用自動函式呼叫,您必須使用支援此功能的 OpenAI 模型。 目前,這些模型包括 0613 版或更新版本的 GPT-3.5-turbo 和 GPT-4 模型。
若要啟用自動函式呼叫功能,您必須將 OpenAIPromptExecutionSettings
物件的 ToolCallBehavior
屬性設定為 AutoInvokeKernelFunctions
。
例如,假設您有一些支援下列函式的成分外掛程式:
- `GetIngredients`: Gets a list of the user's available ingredients
- `GetRecipe`: Gets a list of ingredients for a given recipe
- `GetMissingIngredients`: Gets a list of ingredients that are missing from the user's kitchen for a given recipe
您可以使用 AutoInvokeKernelFunctions
行為來根據提示自動執行函式。 例如:
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.OpenAI;
var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(
"your-deployment-name",
"your-endpoint",
"your-api-key",
"deployment-model");
kernel.ImportPluginFromType<IngredientsPlugin>();
kernel.ImportPluginFromPromptDirectory("Prompts/IngredientPrompts");
// Set the ToolCallBehavior property
OpenAIPromptExecutionSettings settings = new()
{
ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions
};
string prompt = @"What ingredients am I missing from my current list of ingredients
to make a recipe for aloo jeera?";
// Use the settings to automatically invoke plugins based on the prompt
var result = await kernel.InvokePromptAsync(prompt, new(settings));
Console.WriteLine(result);
視您的成分和函式詳細資料而定,此程式碼的輸出可能類似下列回應:
Based on the list of ingredients for aloo jeera, you are missing the following items:
- Cumin seeds
- Green chilies
- Ginger
- Turmeric powder
- Red chili powder
- Coriander powder
- Fresh coriander leaves
- Salt
- Oil
函式呼叫可讓 AI 以正確的順序叫用具有適當參數的函式。 LLM 可以反覆呼叫函式,以解決使用者的需求。 這是透過意見反應迴圈來完成,讓 AI 可以呼叫函式、檢查結果,然後決定下一步該怎麼做。
此 AutoInvokeKernelFunctions
設定會自動呼叫執行提示所需的外掛程式,讓您的應用程式無需太多程式碼即可動態且穩定地運作。 此功能可協助您建立更複雜、可處理多種案例的應用程式。