Автоматическое вызов функций

Завершено

Пакет SDK для семантического ядра поддерживает мощную функцию вызова функции. Включение автоматического вызова функций позволяет ядру автоматически выбирать функции и запрашивать их для некоторых предоставленных входных данных. Эта функция поможет вам сэкономить время, чтобы вручную вызывать функции и запросы, а также сделать приложения более умными.

Чтобы использовать автоматический вызов функций, необходимо использовать модель OpenAI, поддерживающую ее. В настоящее время эти модели включают в себя модели GPT-3.5-turbo и GPT-4, которые являются версией 0613 или более поздней.

Чтобы включить вызов автоматической 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

Вызов функции позволяет ИИ вызывать функции с соответствующими параметрами в правильном порядке. LLM может итеративно вызывать функции для решения потребностей пользователя. Это делается с помощью цикла обратной связи, в котором ИИ может вызвать функцию, проверить результат, а затем решить, что делать дальше.

Параметр AutoInvokeKernelFunctions автоматически вызывает необходимые подключаемые модули для выполнения запроса, что делает приложение динамическим и надежным с меньшим количеством кода. Эта функция помогает создавать более сложные приложения, которые могут обрабатывать различные сценарии.