Cvičení – použití vnořených funkcí pro návrhy skladby

Dokončeno

V tomto cvičení zkombinujete nativní funkce s výzvou, která požádá LLM o vygenerování doporučené skladby pro uživatele na základě jejich nedávných přehrávání. Pusťme se do toho.

Příprava vývojového prostředí

Pro tato cvičení je k dispozici počáteční projekt, který můžete použít. Pomocí následujících kroků nastavte počáteční projekt:

Důležité

K provedení těchto kroků musíte mít nainstalovaný Visual Studio Code a rozhraní .NET Framework 8.0. Možná budete muset nainstalovat rozšíření Visual Studio Code C# Dev Kit.

  1. Otevřete Visual Studio Code.

  2. V části Start editoru Visual Studio Code vyberte Klonovat úložiště Git.

  3. Na panelu URL zadejte https://github.com/MicrosoftLearning/MSLearn-Develop-AI-Agents-with-Azure-OpenAI-and-Semantic-Kernel-SDK.git

  4. V Průzkumník souborů vytvořte novou složku v umístění, které je snadné najít a zapamatovat, například složku v Desktopu.

  5. Klikněte na tlačítko Vybrat jako cíl úložiště.

    Abyste mohli projekt úspěšně naklonovat, musíte být přihlášení k GitHubu.

  6. Otevřete projekt v editoru Visual Studio Code.

  7. V Průzkumníku klikněte pravým tlačítkem myši na složku M04-combine-prompts-and-functions/M04-Project a klikněte na Otevřít v integrovaném terminálu.

  8. Rozbalte složku M04-combine-prompts-and-functions/M04-Project.

    Měl by se zobrazit soubor "Program.cs".

  9. Otevřete soubor Program.cs a aktualizujte následující proměnné názvem nasazení služby Azure OpenAI Services, klíčem rozhraní API a koncovým bodem.

    string yourDeploymentName = "";
    string yourEndpoint = "";
    string yourKey = "";
    

Teď jste připraveni zahájit cvičení. Hodně zdaru!

Poskytování doporučení pro přizpůsobenou skladbu

  1. MusicLibraryPlugin.cs Do souboru přidejte následující funkci:

    [KernelFunction, Description("Get a list of music available to the user")]
    public static string GetMusicLibrary()
    {
        string dir = Directory.GetCurrentDirectory();
        string content = File.ReadAllText($"{dir}/data/musiclibrary.txt");
        return content;
    }
    
  2. Aktualizujte soubor Program.cs následujícím kódem:

    var kernel = builder.Build();
    kernel.ImportPluginFromType<MusicLibraryPlugin>();
    
    string prompt = @"This is a list of music available to the user:
        {{MusicLibraryPlugin.GetMusicLibrary}} 
    
        This is a list of music the user has recently played:
        {{MusicLibraryPlugin.GetRecentPlays}}
    
        Based on their recently played music, suggest a song from
        the list to play next";
    
    var result = await kernel.InvokePromptAsync(prompt);
    Console.WriteLine(result);
    

    V tomto kódu zkombinujete nativní funkce s sémantickou výzvou. Nativní funkce dokážou načíst uživatelská data, ke kterým velký jazykový model (LLM) nemohl získat přístup samostatně, a LLM dokáže vygenerovat doporučení skladby na základě textového vstupu.

  3. Kód otestujete zadáním dotnet run do terminálu.

    Měla by se zobrazit odpověď podobná následujícímu výstupu:

    Based on the user's recently played music, a suggested song to play next could be "Sabry Aalil" since the user seems to enjoy pop and Egyptian pop music.
    

    Poznámka:

    Vaše vygenerované doporučení skladby se může lišit od doporučení, které vidíte tady.

Nativní funkce jste úspěšně zkombinovali s sémantickou výzvou. Máte začátek hudebního agenta doporučení! Zkuste si pohrát s výzvami a vstupními soubory a podívat se, jaká další doporučení můžete vygenerovat.