プロンプトで関数を使用する
Semantic Kernel SDK のテンプレート言語を使用すると、動的プロンプトを作成できます。 この言語では、次の 3 つの機能がサポートされています。
- 変数の使用。
- 外部関数の呼び出し。
- 関数に引数を渡す。
プロンプトに式を埋め込むには、テンプレート言語で中かっこ {{...}}
を使用し、変数はドル記号 $
で示されます。 呼び出す関数は、カーネルに読み込むプラグインの一部である必要があります。 たとえば、プロンプト内で関数を呼び出す場合は、次の構文を使用できます。
{{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.
プロンプトで変数と関数を使用すると、さまざまな入力を動的に設定できる再利用可能なテンプレートを作成できます。 プロンプトの再利用は、異なる入力で同じタスクを実行する必要がある場合や、モデルにコンテキストを提供して結果を改善する必要がある場合に特に便利です。