Übung: Verwenden von Personas in Prompts

Abgeschlossen

Das Zuweisen von Personas zu Ihren Eingabeaufforderungen kann die Qualität der Antworten verbessern, die durch das große Sprachmodell (LLM) generiert werden. Personas stellen kontextbezogene Informationen zum LLM bereit, sodass es konsistent Antworten generieren kann, die besser auf die Absicht Ihres Benutzers abgestimmt sind. Probieren Sie es aus!

  1. Öffnen Sie das Visual Studio Code-Projekt, das Sie in der vorherigen Übung erstellt haben.

  2. Aktualisieren Sie Ihre Eingabeaufforderung aus der vorherigen Übung mit dem folgenden 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. Führen Sie den Code aus, indem Sie dotnet run in den Terminal eingeben.

    Wenn Sie den Code ausführen, stellen Sie möglicherweise fest, dass die Antworten konsistenter sind als die vorherigen Ergebnisse. Das LLM generiert wahrscheinlicher eine Antwort, die mit der Persona übereinstimmt, die Sie zugewiesen haben, und dem Kontext der Aufgabe.

    Ihre Antwort sieht möglicherweise ähnlich wie die folgende Ausgabe aus:

    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!
    

Sie können dem LLM auch Anweisungen zur Annahme einer Rolle beim Generieren einer Antwort bereitstellen, sowie Beispielanforderungen und -antworten. Im Semantic Kernel wird eine spezielle Syntax verwendet, um Nachrichtenrollen zu definieren. Um eine Nachrichtenrolle zu definieren, können Sie die Nachricht im <message>-Tag mit dem Rollennamen als Attribut umschließen. Die unterstützten Rollen sind „Benutzer“, „System“, „Assistent“ und „Bot“. Probieren Sie es aus!

  1. Aktualisieren Sie Ihre Eingabeaufforderung mit dem folgenden 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>";
    

    Als Nächstes aktualisieren wir die Eingabe, um der KI einige Details zur Reise bereitzustellen.

  2. Aktualisieren Sie die input-Zeichenfolge mit dem folgenden Text:

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

    Führen Sie als Nächstes den Code aus, und beobachten Sie, wie das LLM reagiert.

  3. Geben Sie im Terminal dotnet run ein.

    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!
    

    Beachten Sie, dass Sie eine Persona dem LLM zuweisen können, um eine natürlichere und personalisierte Unterhaltung zu erstellen.

Sie können Eingabeaufforderungen so optimieren, dass sie weniger ausführlich sind und nur bestimmte Informationen enthalten. Angenommen, der Benutzer möchte eine Liste von Flügen von einem Ziel zu einem anderen abrufen. Sie können das LLM bitten, ihre Eingabe zu analysieren und nur die relevanten Informationen in einem Format zurückzugeben, das Sie in Ihrem Code verwenden können. Probieren Sie es aus!

  1. Aktualisieren Sie Ihre Eingabeaufforderung mit dem folgenden 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>";
    

    In dieser Aufforderung verwenden wir <message> und stellen ein Beispiel für das LLM bereit. Wir möchten die Ausgabe so formatieren, dass wir sie analysieren können, daher verwenden wir dieses Format im Beispiel. Als Nächstes aktualisieren wir input, um der KI einige Details zur Reise bereitzustellen.

  2. Ändern Sie input mit dem folgenden Text:

    string input = @"I have a vacation from June 1 to July 22. I want to go to Greece. 
        I live in Chicago.";
    
  3. Führen Sie den Code aus, indem Sie dotnet run in den Terminal eingeben.

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

    Beachten Sie, dass das LLM die Eingabe analysiert und nur die relevanten Informationen zurückgegeben hat. Das Auffordern des LLM zum Analysieren von Daten ist eine hervorragende Möglichkeit, um die vom Benutzer benötigten Informationen schnell abzurufen.

Wichtig

Achten Sie darauf, keinen Code zu löschen, den Sie geschrieben haben, sie benötigen ihn für die nächsten Übungen.