Übung: Verwenden verschachtelter Funktionen für Songvorschläge

Abgeschlossen

Für diese Übung kombinieren Sie Ihre nativen Funktionen mit einer Eingabeaufforderung, die das LLM auffordert, basierend auf ihren letzten Wiedergaben einen empfohlenen Song für den Benutzer zu generieren. Legen wir los.

Vorbereiten Ihrer Entwicklungsumgebung

Für diese Übungen steht Ihnen ein Einstiegsprojekt zur Verfügung, das Sie verwenden können. Führen Sie die folgenden Schritte aus, um das Einstiegsprojekt einzurichten:

Wichtig

Visual Studio Code und .NET Framework 8.0 müssen installiert sein, um diese Schritte auszuführen. Möglicherweise müssen Sie auch die Visual Studio Code-Erweiterung mit dem C#-Dev Kit installieren.

  1. Öffnen Sie Visual Studio Code.

  2. Wählen Sie im Visual Studio Code-Abschnitt Start die Option Git-Repository klonen aus.

  3. Geben Sie auf der URL-Leiste https://github.com/MicrosoftLearning/MSLearn-Develop-AI-Agents-with-Azure-OpenAI-and-Semantic-Kernel-SDK.git ein.

  4. Erstellen Sie im Datei-Explorer einen neuen Ordner an einem Speicherort, der einfach zu finden und zu merken ist, z. B. einen Ordner auf Ihrem Desktop.

  5. Wählen Sie die Schaltfläche Als Repositoryziel auswählen aus.

    Sie müssen bei GitHub angemeldet sein, um das Projekt erfolgreich zu klonen.

  6. Öffnen Sie das Projekt in Visual Studio Code.

  7. Klicken Sie im Explorer mit der rechten Maustaste auf den Ordner M04-combine-prompts-and-functions/M04-Project, und klicken Sie auf Im integrierten Terminal öffnen.

  8. Erweitern Sie den Ordner M04-combine-prompts-and-functions/M04-Project.

    Es sollte eine Datei „Program.cs“ angezeigt werden.

  9. Öffnen Sie die Datei Program.cs und aktualisieren Sie die folgenden Variablen mit ihrem Azure OpenAI Services-Bereitstellungsnamen, API-Schlüssel, Endpunkt.

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

Jetzt können Sie mit der Übung beginnen. Viel Glück!

Abgeben personalisierter Songempfehlungen

  1. Fügen Sie in Ihrer MusicLibraryPlugin.cs-Datei die folgende Funktion hinzu:

    [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. Aktualisieren Sie die Datei „Program.cs“ mit dem folgenden Code:

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

    In diesem Code kombinieren Sie Ihre nativen Funktionen mit einer semantischen Eingabeaufforderung. Die nativen Funktionen können Benutzerdaten abrufen, auf die das große Sprachmodell (LLM) nicht zugreifen kann, und das LLM kann basierend auf der Texteingabe eine Songempfehlung generieren.

  3. Um Ihren Code zu testen, geben Sie dotnet run in das Terminal ein.

    Die Antwort sollte in etwa wie die folgende Ausgabe aussehen:

    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.
    

    Hinweis

    Ihre generierte Songempfehlung kann sich von der hier gezeigten unterscheiden.

Sie haben Ihre nativen Funktionen erfolgreich mit einer semantischen Eingabeaufforderung kombiniert. Sie haben nun die Anfänge eines Musikempfehlungsagenten! Experimentieren Sie mit den Eingabeaufforderungen und Eingabedateien, um zu sehen, welche anderen Empfehlungen Sie generieren können.