Functies gebruiken in prompts

Voltooid

Met de tijdelijke taal van de Semantic Kernel SDK kunt u dynamische prompts maken. De taal ondersteunt drie functies:

  • Variabelen gebruiken.
  • Externe functies aanroepen.
  • Argumenten doorgeven aan functies.

Als u expressies wilt insluiten in uw prompts, wordt in de sjabloontaal gekrulde haken {{...}} en variabelen aangeduid met een dollarteken $. De functies die u aanroept, moeten deel uitmaken van de invoegtoepassingen die u in de kernel laadt. Als u bijvoorbeeld een functie binnen een prompt wilt aanroepen, kunt u de volgende syntaxis gebruiken:

{{plugin.functionName $argument}}

U moet ervoor zorgen dat de invoegtoepassing met de functie in de kernel wordt geladen voordat u de functie aanroept in uw prompt. Het nesten van functies binnen prompts kan u helpen het aantal tokens dat in een prompt wordt gebruikt, te verminderen of extra context te bieden aan het model voor verbeterde resultaten.

Stel dat u wordt gevraagd een lijst met recepten aan te bevelen op basis van bepaalde gebruikersgegevens:

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);

U kunt een functie aanroepen om de lange achtergrondinformatie van de gebruiker samen te vatten voordat u een lijst met recepten opgeeft. Hier volgt een voorbeeld van hoe u functies kunt gebruiken in prompts:

 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);

In dit voorbeeld roept ConversationSummaryPlugin.SummarizeConversation de prompt de opgegeven $history invoer aan. De functie gebruikt de achtergrondinformatie van de gebruiker en vat deze samen en het resultaat wordt gebruikt om de lijst met relevante recepten op te halen. De ConversationSummaryPlugin invoegtoepassing moet worden toegevoegd aan de kernelbouwer om de prompt correct te laten werken.

Hier volgt de voorbeelduitvoer:

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.

Door variabelen en functies in prompts te gebruiken, kunt u herbruikbare sjablonen maken die dynamisch kunnen worden gevuld met verschillende invoerwaarden. Het opnieuw gebruiken van prompts is vooral handig wanneer u dezelfde taak met verschillende invoerbewerkingen moet uitvoeren of context moet bieden aan het model voor verbeterde resultaten.