Esercizio - Scrivere un prompt personalizzato

Completato

Per questo esercizio si compila un prompt che chiede al modello linguistico di grandi dimensioni (LLM) di fornire un elenco di frasi utili in francese. È anche possibile testare il codice con linguaggi diversi a scelta. È ora di iniziare.

  1. Aprire il progetto di Visual Studio Code creato nell'esercizio precedente.

  2. Aggiornare il file Program.cs con il codice seguente:

    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 prompt = @$"Create a list of helpful phrases and 
        words in ${language} a traveler would find useful.";
    
    var result = await kernel.InvokePromptAsync(prompt);
    Console.WriteLine(result);
    
  3. Eseguire il codice immettendo dotnet run nel terminale.

    La risposta dovrebbe essere simile all'output seguente:

    1. Bonjour - Hello
    2. Merci - Thank you
    3. Oui - Yes
    4. Non - No
    5. S'il vous plaît - Please
    6. Excusez-moi - Excuse me
    7. Parlez-vous anglais? - Do you speak English?
    8. Je ne comprends pas - I don't understand
    9. Pouvez-vous m'aider? - Can you help me? 
    10. Combien ça coûte? - How much does it cost?
    11. Où est la gare? - Where is the train station?
    

    La risposta deriva dal modello di Azure OpenAI passato al kernel. L’SDK Kernel semantico si connette al modello linguistico di grandi dimensioni (LLM) ed esegue il prompt. È possibile migliorare questo prompt aggiungendo istruzioni più specifiche.

  4. Aggiornare il prompt in modo che corrisponda al testo seguente:

    string prompt = @$"Create a list of helpful phrases and 
        words in ${language} a traveler would find useful.
    
        Group phrases by category. Display the phrases in 
        the following format: Hello - Ciao [chow]";
    

    In questo prompt viene fornito l'LLM con istruzioni specifiche per formattare la risposta. Se si esegue il nuovo prompt, verrà visualizzata una risposta più dettagliata, simile all'output seguente:

    Restaurant Phrases:
    - Water, please - De l'eau, s'il vous plaît [duh loh, seel voo pleh]
    - Check, please - L'addition, s'il vous plaît [lah-di-syo(n), seel voo pleh]
    - Bon appétit - Bon appétit [bohn ah-peh-teet]
    
    Transportation Phrases:
    - Where is the train station? - Où est la gare? [oo-eh lah gahr]
    - How do I get to...? - Comment aller à...? [ko-mahn tah-lay ah]
    - I need a taxi - J'ai besoin d'un taxi [zhay buh-zwan dunn tah-xee]
    

    È anche possibile chiedere all'LLM di includere una categoria specifica di frasi e di prendere in considerazione alcune informazioni di base sul viaggiatore. A questo punto è possibile provare.

  5. Aggiornare il prompt in modo che corrisponda al testo seguente:

    string language = "French";
    string history = @"I'm traveling with my kids and one of them 
        has a peanut allergy.";
    
    string prompt = @$"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]";
    

    Ora l'LLM può prendere in considerazione le informazioni del viaggiatore durante la generazione dell'elenco di frasi. Sono state aggiunte anche istruzioni per includere parole di direzione comuni.

    L'output potrebbe essere simile alla risposta seguente:

    Phrases for dealing with peanut allergy:
    My child has a peanut allergy - Mon enfant a une allergie aux arachides [mon on-fon ah oon ah-lair-zhee oh a-rah-sheed]
    Is there a peanut-free option available? - Y a-t-il une option sans arachide? [ee ah-teel une oh-pee-syon sahn ah-rah-sheed]
    
    Phrases for directions:
    Turn left - Tournez à gauche [toor-nay ah gohsh]
    Turn right - Tournez à droite [toor-nay ah dwaht]
    

Nell'esercizio successivo, ci si eserciterà ad assegnare utenti tipo all'LLM per migliorare la qualità delle risposte.

Importante

Assicurarsi di non eliminare il codice scritto finora, perché sarà necessario per l'esercizio successivo.