Invocación automática de funciones
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.