자동 함수 호출

완료됨

의미 체계 커널 SDK는 강력한 자동 함수 호출 함수를 지원합니다. 자동 함수 호출을 사용하면 제공하는 일부 입력에서 사용할 함수와 프롬프트를 커널이 자동으로 선택할 수 있습니다. 이 기능을 사용하면 함수와 프롬프트를 수동으로 호출할 때보다 시간을 절약하고 애플리케이션을 더 스마트하게 만들 수 있습니다.

자동 함수 호출을 사용하려면 이를 지원하는 OpenAI 모델을 사용해야 합니다. 현재 이러한 모델에는 버전 0613 이상인 GPT-3.5 터보와 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 설정은 프롬프트를 실행하는 데 필요한 플러그 인을 자동으로 호출하여 더 적은 코드로 애플리케이션을 동적이고 강력하게 만듭니다. 이 기능은 다양한 시나리오를 처리할 수 있는 보다 복잡한 애플리케이션을 만드는 데 도움이 될 수 있습니다.