自動叫用函式

已完成

語意核心 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 設定會自動呼叫執行提示所需的外掛程式,讓您的應用程式無需太多程式碼即可動態且穩定地運作。 此功能可協助您建立更複雜、可處理多種案例的應用程式。