Invocación automática de funciones

Completado

El SDK de kernel semántico admite una eficaz característica de llamada automática a funciones. La habilitación de la llamada automática a funciones permite al kernel seleccionar automáticamente las funciones y las indicaciones que se deben usar en algunas entradas proporcionadas. Esta característica puede ayudarle a ahorrar tiempo para invocar manualmente funciones y avisos y hacer que las aplicaciones sean más inteligentes.

Para usar la llamada a funciones automática, debe usar un modelo de OpenAI que admita esta característica. Actualmente, estos modelos incluyen modelos GPT-3.5-turbo y GPT-4 que corresponden a la versión 0613 o posterior.

Para habilitar la llamada automática a funciones, debe establecer la propiedad ToolCallBehavior del objeto OpenAIPromptExecutionSettings en AutoInvokeKernelFunctions.

Por ejemplo, supongamos que tiene algunos complementos de ingredientes que admiten las siguientes funciones:

- `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

Puede usar el comportamiento AutoInvokeKernelFunctions para ejecutar automáticamente una función a partir de un símbolo del sistema. Por ejemplo:

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);

En función de los ingredientes y los detalles de la función, la salida de este código podría ser similar a la siguiente respuesta:

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

La llamada a funciones permite que la IA invoque funciones con los parámetros adecuados en el orden correcto. El LLM puede llamar de forma iterativa a funciones para satisfacer las necesidades del usuario. Esto se realiza a través de un bucle de retroalimentación en el que la IA puede llamar a una función, comprobar el resultado y decidir qué hacer a continuación.

El ajuste AutoInvokeKernelFunctions llama automáticamente a los complementos necesarios para ejecutar la indicación, lo que hace que la aplicación sea dinámica y sólida con menos código. Esta característica puede ayudarle a crear aplicaciones más complejas que puedan responder a una gran variedad de escenarios.