Exercice : utiliser des personnages dans des invites

Effectué

L’attribution de personnages à vos invites peut améliorer la qualité des réponses générées par le grand modèle de langage (LLM). Les personnages fournissent un contexte au LLM, ce qui lui permet de générer de façon cohérente des réponses mieux adaptées à l’intention de l’utilisateur. Essayons-le !

  1. Ouvrez le projet Visual Studio Code créé dans l’exercice précédent.

  2. Mettez à jour votre invite à partir de l’exercice précédent en utilisant le texte suivant :

    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. Exécutez le code en entrant dotnet run dans le terminal.

    Si vous exécutez le code, il est possible que vous remarquiez que les réponses sont plus cohérentes que vos résultats précédents. Il est plus probable que le LLM génère une réponse qui correspond au personnage que vous avez affecté et au contexte de la tâche.

    Votre réponse doit ressembler à la sortie suivante :

    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!
    

Vous pouvez également fournir des instructions au LLM pour qu’il assume un rôle lors de la génération d’une réponse et fournisse des exemples de demandes et de réponses. Dans Semantic Kernel, une syntaxe spéciale est utilisée pour définir des rôles de message. Pour définir un rôle de message, vous pouvez envelopper le message dans la balise <message> avec le nom du rôle en tant qu’attribut. Les rôles pris en charge sont « utilisateur », « système », « assistant » et « bot ». Essayons-le !

  1. Mettez à jour votre invite en utilisant le texte suivant :

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

    Ensuite, nous allons mettre à jour l’entrée afin de fournir à l’IA des détails pour le voyage.

  2. Mettez à jour la chaîne input le texte suivant :

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

    Exécutez ensuite le code et observez la façon dont le LLM répond.

  3. Entrez dotnet run dans le terminal.

    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!
    

    Notez que l’affectation d’un personnage au LLM vous permet de créer une conversation plus naturelle et personnalisée.

Vous pouvez également ajuster des invites pour qu’elles soient moins détaillées et fournissent uniquement des informations spécifiques à la sortie. Par exemple, supposons que l’utilisateur souhaite obtenir la liste des vols d’une destination à une autre. Vous pouvez demander au LLM d’analyser leur entrée et de renvoyer uniquement les informations pertinentes dans un format que vous pouvez utiliser dans votre code. Essayons-le !

  1. Mettez à jour votre invite à l’aide du texte suivant :

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

    Dans cette invite, nous utilisons le <message> et fournissons également un exemple pour le LLM. Nous voulons mettre en forme la sortie de manière à ce que nous puissions analyser. Nous fournissons donc ce format dans l’exemple. Ensuite, nous allons mettre à jour le input afin de fournir à l’IA des détails pour le voyage.

  2. Remplacez le input par le texte suivant :

    string input = @"I have a vacation from June 1 to July 22. I want to go to Greece. 
        I live in Chicago.";
    
  3. Exécutez le code en entrant dotnet run dans le terminal.

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

    Notez la façon dont le LLM a pu analyser l’entrée et retourner uniquement les informations pertinentes. Inviter le LLM à analyser des données constitue un excellent moyen pour obtenir rapidement les informations nécessaires auprès de l’utilisateur.

Important

Veillez à conserver tout le code que vous avez écrit jusqu’à présent, car vous en aurez besoin pour l’exercice suivant.