Oefening: persona's gebruiken in prompts

Voltooid

Het toewijzen van persona's aan uw prompts kan de kwaliteit van de antwoorden verbeteren die worden gegenereerd door het model voor grote talen (LLM). Persona's bieden context aan de LLM, zodat deze consistent antwoorden kan genereren die beter zijn afgestemd op de intentie van uw gebruiker. Laten we het eens proberen.

  1. Open het Visual Studio Code-project dat u in de vorige oefening hebt gemaakt.

  2. Werk uw prompt uit de vorige oefening bij met de volgende tekst:

    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. Voer de code uit door de terminal in te voeren dotnet run .

    Als u de code uitvoert, ziet u mogelijk dat de antwoorden consistenter zijn dan de vorige resultaten. De LLM genereert waarschijnlijk een antwoord dat overeenkomt met de persoon die u hebt toegewezen en de context van de taak.

    Uw antwoord ziet er mogelijk ongeveer als volgt uit:

    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!
    

U kunt ook instructies geven aan de LLM om een rol uit te voeren bij het genereren van een antwoord en voorbeelden van aanvragen en antwoorden geven. In Semantic Kernel wordt een speciale syntaxis gebruikt om berichtrollen te definiëren. Als u een berichtrol wilt definiëren, kunt u het bericht in <message> een tag verpakken met de rolnaam als kenmerk. De ondersteunde rollen zijn 'user', 'system', 'assistant' en 'bot'. Laten we het eens proberen.

  1. Werk uw prompt bij met de volgende tekst:

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

    Vervolgens gaan we de invoer bijwerken om de AI enkele details voor de reis te geven.

  2. Werk de input tekenreeks bij naar de volgende tekst:

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

    Voer vervolgens de code uit en bekijk hoe de LLM reageert.

  3. Voer dotnet run in de terminal in.

    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!
    

    Als u een persona toewijst aan de LLM, kunt u een natuurlijker en persoonlijker gesprek maken.

U kunt ook vragen afstemmen om minder uitgebreid te zijn en alleen specifieke informatie uit te voeren. Stel dat de gebruiker een lijst met vluchten van de ene bestemming naar een andere wil ophalen. U kunt de LLM vragen hun invoer te parseren en alleen de relevante informatie in een indeling te retourneren die u in uw code kunt gebruiken. Laten we het eens proberen.

  1. Werk uw prompt bij naar de volgende tekst:

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

    In deze prompt gebruiken we de <message> en geven we ook een voorbeeld voor de LLM. We willen de uitvoer op een manier opmaken die we kunnen parseren, zodat we die indeling in het voorbeeld opgeven. Vervolgens gaan we de input AI bijwerken met enkele details voor de reis.

  2. Wijzig de input tekst in de volgende tekst:

    string input = @"I have a vacation from June 1 to July 22. I want to go to Greece. 
        I live in Chicago.";
    
  3. Voer de code uit door de terminal in te voeren dotnet run .

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

    U ziet hoe de LLM de invoer kon parseren en alleen de relevante informatie kon retourneren. Het vragen van de LLM om gegevens te parseren is een uitstekende manier om snel de informatie op te halen die u nodig hebt van de gebruiker.

Belangrijk

Zorg ervoor dat u geen code verwijdert die u tot nu toe hebt geschreven. U hebt deze nodig voor de volgende oefening.