프롬프트에서 함수 사용
의미 체계 커널 SDK의 템플릿 언어를 사용하면 동적 프롬프트를 만들 수 있습니다. 이 언어는 세 가지 기능을 지원합니다.
- 변수 사용.
- 외부 함수 호출.
- 함수에 인수 전달.
프롬프트에 식을 포함하기 위해 템플릿 언어는 중괄호 {{...}}
을 사용하고 변수는 달러 기호 $
로 표시됩니다. 호출하는 함수는 커널에 로드하는 플러그 인의 일부여야 합니다. 예를 들어, 프롬프트 내에서 함수를 호출하려면 다음 구문을 사용할 수 있습니다.
{{plugin.functionName $argument}}
프롬프트에서 함수를 호출하기 전에 함수가 포함된 플러그 인이 커널에 로드되었는지 확인해야 합니다. 프롬프트 내에 함수를 중첩하면 프롬프트에 사용되는 토큰 수를 줄이거나 모델에 추가 컨텍스트를 제공하여 결과를 개선하는 데 도움이 될 수 있습니다.
일부 사용자 정보를 기반으로 레시피 목록을 권장하라는 프롬프트가 있다고 가정해 보겠습니다.
string history = @"In the heart of my bustling kitchen, I have embraced the challenge
of satisfying my family's diverse taste buds and navigating their unique tastes.
With a mix of picky eaters and allergies, my culinary journey revolves around
exploring a plethora of vegetarian recipes.
One of my kids is a picky eater with an aversion to anything green, while another
has a peanut allergy that adds an extra layer of complexity to meal planning.
Armed with creativity and a passion for wholesome cooking, I've embarked on a
flavorful adventure, discovering plant-based dishes that not only please the
picky palates but are also heathy and delicious.";
string prompt = @"This is some information about the user's background: {{$history}}
Given this user's background, provide a list of relevant recipes.";
var result = await kernel.InvokePromptAsync(suggestRecipes, new() { "history", history });
Console.WriteLine(result);
레시피 목록을 제공하기 전에 사용자의 긴 백그라운드 정보를 요약하는 함수를 호출할 수 있습니다. 다음은 프롬프트에서 함수를 사용하는 방법에 대한 예입니다.
kernel.ImportPluginFromType<ConversationSummaryPlugin>();
string prompt = @"User information:
{{ConversationSummaryPlugin.SummarizeConversation $history}}
Given this user's background information, provide a list of relevant recipes.";
var result = await kernel.InvokePromptAsync(suggestRecipes, new() { "history", history });
Console.WriteLine(result);
이 예에서 프롬프트는 제공된 $history
입력에 대해 ConversationSummaryPlugin.SummarizeConversation
을 호출합니다. 이 함수는 사용자의 백그라운드 정보를 가져와 요약하고, 그 결과를 사용하여 관련 레시피 목록을 검색합니다. 프롬프트가 올바르게 작동하려면 커널 작성기에 ConversationSummaryPlugin
플러그 인을 추가해야 합니다.
출력의 예제는 다음과 같습니다.
1. Lentil and vegetable soup - a hearty, filling soup that is perfect for a cold day. This recipe is vegetarian and can easily be adapted to accommodate allergies.
2. Cauliflower "steaks" - a delicious and healthy main course that is sure to satisfy even the pickiest of eaters. This recipe is vegetarian and can easily be made vegan.
3. Quinoa salad with roasted vegetables - a healthy and filling salad that is perfect for any occasion. This recipe is vegetarian and can easily be adapted to accommodate allergies.
4. Peanut-free pad Thai - a classic dish made without peanut sauce, perfect for those with peanut allergies. This recipe is vegetarian and can easily be made vegan.
5. Black bean and sweet potato enchiladas - a delicious and healthy twist on traditional enchiladas. This recipe is vegetarian and can easily be made vegan.
프롬프트에서 변수 및 함수를 사용하면 다른 입력으로 동적으로 채울 수 있는 재사용 가능한 템플릿을 만들 수 있습니다. 프롬프트 재사용은 다른 입력으로 동일한 작업을 수행하거나 향상된 결과를 위해 모델에 컨텍스트를 제공해야 하는 경우에 특히 유용합니다.