Övning – Använda personas i prompter

Slutförd

Om du tilldelar personas till dina frågor kan du förbättra kvaliteten på de svar som genereras av den stora språkmodellen (LLM). Personas ger kontext till LLM så att den konsekvent kan generera svar som är bättre anpassade till användarens avsikt. Vi provar!

  1. Öppna Visual Studio Code-projektet som du skapade i föregående övning.

  2. Uppdatera uppmaningen från föregående övning med följande text:

    using Microsoft.SemanticKernel;
    using Microsoft.SemanticKernel.Plugins.Core;
    
    var builder = Kernel.CreateBuilder();
    builder.AddAzureOpenAIChatCompletion(
        "your-deployment-name",
        "your-endpoint",
        "your-api-key",
        "deployment-model");
    
    var kernel = builder.Build();
    
    string language = "French";
    string history = @"I'm traveling with my kids and one of them has a peanut allergy.";
    
    // Assign a persona to the prompt
    string prompt = @$"
        You are a travel assistant. You are helpful, creative, and very friendly. 
        Consider the traveler's background:
        ${history}
    
        Create a list of helpful phrases and words in ${language} a traveler would find useful.
    
        Group phrases by category. Include common direction words. 
        Display the phrases in the following format: 
        Hello - Ciao [chow]
    
        Begin with: 'Here are some phrases in ${language} you may find helpful:' 
        and end with: 'I hope this helps you on your trip!'";
    
    var result = await kernel.InvokePromptAsync(prompt);
    Console.WriteLine(result);
    
  3. Kör koden genom att ange dotnet run i terminalen.

    Om du kör koden kanske du märker att svaren är mer konsekventa än dina tidigare resultat. Det är mer troligt att LLM genererar ett svar som matchar den person som du har tilldelat och aktivitetens kontext.

    Svaret kan se ut ungefär så här:

    Here are some phrases in French you may find helpful:
    
    Greetings:
    - Hello - Bonjour [bon-zhur]
    - Goodbye - Au revoir [oh ruh-vwar]
    - Thank you - Merci [mehr-see]
    
    Directions:
    - Go straight ahead - Allez tout droit [ah-lay too dwa]
    - Turn left/right - Tournez à gauche/droite [toor-nay ah gohsh/dwaht]
    - It's on the left/right - C'est à gauche/droite [say ah gohsh/dwaht]
    
    Food:
    - Does this contain peanuts? - Est-ce que cela contient des cacahuètes? [ess-kuh suh suh-la kohn-tee-eh day kah-kah-weht?]
    - My child has a peanut allergy - Mon enfant est allergique aux cacahuètes [mohn ahn-fahn ay ah-lair-gee-k oh kah-kah-weht]
    
    ...
    
    I hope this helps you on your trip!
    

Du kan också ge instruktioner till LLM för att ta på dig en roll när du genererar ett svar och tillhandahålla exempelbegäranden och svar. I semantisk kernel används en särskild syntax för att definiera meddelanderoller. Om du vill definiera en meddelanderoll kan du omsluta meddelandet i <message> taggen med rollnamnet som ett attribut. Rollerna som stöds är "user", "system", "assistant" och "bot". Vi provar!

  1. Uppdatera prompten med följande text:

    string prompt = @$"
        The following is a conversation with an AI travel assistant. 
        The assistant is helpful, creative, and very friendly.
    
        <message role=""user"">Can you give me some travel destination suggestions?</message>
    
        <message role=""assistant"">Of course! Do you have a budget or any specific 
        activities in mind?</message>
    
        <message role=""user"">${input}</message>";
    

    Nu ska vi uppdatera indata för att ge AI:n lite information om resan.

  2. Uppdatera strängen input till följande text:

    string input = @"I'm planning an anniversary trip with my spouse. We like hiking, mountains, 
        and beaches. Our travel budget is $15000";
    

    Kör sedan koden och se hur LLM svarar.

  3. Ange dotnet run i terminalen.

    That sounds like a great trip ahead! Here are a few suggestions:
    
    1. New Zealand - With stunning mountain ranges, iconic hiking trails, and beautiful beaches, New Zealand is a popular destination for outdoor enthusiasts. Some must-visit spots include the Milford Track, Fox Glacier, and Abel Tasman National Park.
    
    2. Hawaii - Known for its picturesque beaches, Hawaii is also home to several stunning hiking trails. The Kalalau Trail on Kauai is a popular trail that offers breathtaking views of the Na Pali Coast.
    
    3. Costa Rica - Costa Rica boasts beautiful beaches and breathtaking mountains. Hike through the Monteverde Cloud Forest Reserve and catch a glimpse of exotic wildlife like the resplendent quetzal, or take a dip in the turquoise waters of Playa Manuel Antonio.
    
    4. Banff National Park, Canada - Located in the Canadian Rockies, Banff National Park offers some of the most stunning mountain scenery in the world. Explore the park's many hiking trails, relax in hot springs, and take in the beauty of the Canadian wilderness.
    
    5. Amalfi Coast, Italy - The Amalfi Coast is a picturesque stretch of coastline in Southern Italy that offers stunning views of the Mediterranean Sea. Take a hike along the famous Path of the Gods or enjoy a romantic stroll through one of the Amalfi Coast's charming towns like Positano or Ravello.
    
    These are just a few of many options, but with a budget of $15000, you should be able to have a fantastic trip to any of these destinations!
    

    Observera hur du kan skapa en mer naturlig och personlig konversation genom att tilldela en persona till LLM.

Du kan också justera frågor så att de är mindre utförliga och endast mata ut specifik information. Anta till exempel att användaren vill få en lista över flygningar från ett mål till ett annat. Du kan be LLM att parsa indata och endast returnera relevant information i ett format som du kan använda i koden. Vi provar!

  1. Uppdatera uppmaningen till följande text:

    string prompt = @$"
    <message role=""system"">Instructions: Identify the from and to destinations 
    and dates from the user's request</message>
    
    <message role=""user"">Can you give me a list of flights from Seattle to Tokyo? 
    I want to travel from March 11 to March 18.</message>
    
    <message role=""assistant"">Seattle|Tokyo|03/11/2024|03/18/2024</message>
    
    <message role=""user"">${input}</message>";
    

    I den här prompten <message> använder vi och tillhandahåller även ett exempel för LLM. Vi vill formatera utdata på ett sätt som vi kan parsa, så vi anger det formatet i exemplet. Nu ska vi uppdatera input för att ge AI:n lite information om resan.

  2. input Ändra till följande text:

    string input = @"I have a vacation from June 1 to July 22. I want to go to Greece. 
        I live in Chicago.";
    
  3. Kör koden genom att ange dotnet run i terminalen.

    Chicago|Greece|06/01/2024|07/22/2024
    

    Observera hur LLM kunde parsa indata och endast returnera relevant information. Att uppmana LLM att parsa data är ett bra sätt att snabbt få den information du behöver från användaren.

Viktigt!

Se till att du inte tar bort någon av koden som du har skrivit hittills, du behöver den för nästa övning.