자동 함수 호출
의미 체계 커널 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
설정은 프롬프트를 실행하는 데 필요한 플러그 인을 자동으로 호출하여 더 적은 코드로 애플리케이션을 동적이고 강력하게 만듭니다. 이 기능은 다양한 시나리오를 처리할 수 있는 보다 복잡한 애플리케이션을 만드는 데 도움이 될 수 있습니다.