Übung: Erstellen nativer Funktionen

Abgeschlossen

In dieser Übung erstellen Sie eine systemeigene Funktion, die der Liste „Kürzlich wiedergegeben“ eines Benutzers einen Song hinzufügt. Später können Sie die Liste der zuletzt wiedergegebenen Songs verwenden, um angepasste Empfehlungen bereitzustellen. 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 M03-give-your-ai-agent-skills/M03-Project und klicken Sie auf In integriertem Terminal öffnen.

  8. Erweitern Sie den Ordner M03-give-your-ai-agent-skills/M03-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!

Erstellen eines Musikbibliotheks-Plug-Ins

  1. Erstellen Sie einen neuen Ordner im Verzeichnis „Projekt“ und nennen Sie ihn „Plug-Ins.“

  2. Erstellen Sie im Ordner „Plug-Ins“ eine neue Datei „MusicLibrary.cs“

  3. Geben Sie den folgenden Code ein:

    using System.ComponentModel;
    using System.Text.Json;
    using System.Text.Json.Nodes;
    using Microsoft.SemanticKernel;
    
    public class MusicLibraryPlugin
    {
        [KernelFunction, 
        Description("Get a list of music recently played by the user")]
        public static string GetRecentPlays()
        {
            string dir = Directory.GetCurrentDirectory();
            string content = File.ReadAllText($"{dir}/data/recentlyplayed.txt");
            return content;
        }
    }
    

    In diesem Code verwenden Sie den KernelFunction-Decorator um Ihre systemeigene Funktion zu deklarieren. Sie verwenden auch den Description-Decorator, um eine Beschreibung der Funktion hinzuzufügen. Derzeit können Sie davon ausgehen, dass die Liste der zuletzt verwendeten Wiedergaben des Benutzers in einer Textdatei mit dem Namen „recentlyplayed.txt“ gespeichert ist. Als Nächstes können Sie Code hinzufügen, um der Liste einen Song hinzuzufügen.

  4. Fügen Sie der MusicLibraryPlugin-Klasse den folgenden Code hinzu:

    [KernelFunction, Description("Add a song to the recently played list")]
    public static string AddToRecentlyPlayed(
        [Description("The name of the artist")] string artist, 
        [Description("The title of the song")] string song, 
        [Description("The song genre")] string genre)
    {
        // Read the existing content from the file
        string filePath = "data/recentlyplayed.txt";
        string jsonContent = File.ReadAllText(filePath);
        var recentlyPlayed = (JsonArray) JsonNode.Parse(jsonContent);
    
        var newSong = new JsonObject
        {
            ["title"] = song,
            ["artist"] = artist,
            ["genre"] = genre
        };
    
        recentlyPlayed.Insert(0, newSong);
        File.WriteAllText(filePath, JsonSerializer.Serialize(recentlyPlayed,
            new JsonSerializerOptions { WriteIndented = true }));
    
        return $"Added '{song}' to recently played";
    }
    

    In diesem Code erstellen Sie eine Funktion, die den Künstler, Song und Genre als Zeichenfolgen akzeptiert. Zusätzlich zur Description-Funktion fügen Sie auch Beschreibungen der Eingabevariablen hinzu. Dieser Code liest den vorhandenen Inhalt aus der Datei, analysiert ihn und fügt den neuen Song der Liste hinzu. Danach wird die aktualisierte Liste wieder in die Datei geschrieben. Als Nächstes erstellen Sie die Datei „recentlyplayed.txt“ mit einigen Beispieldaten.

  5. Erstellen Sie einen neuen Ordner „Daten“ im Ordner „M03-Projekt“.

  6. Erstellen Sie eine neue Datei „recentlyplayed.txt“ im Ordner „Daten“, und fügen Sie dann den folgenden Inhalt ein:

    [
        {
            "title": "Loanh Quanh",
            "artist": "Ly Hoa",
            "genre": "indie, folk"
        },
        {
            "title": "Kalam Eineh",
            "artist": "Yasemin",
            "genre": "pop, Egyptian pop"
        },
        {
            "title": "I Miss You",
            "artist": "Chishin",
            "genre": "hiphop, rap"
        },
        {
            "title": "4EVER",
            "artist": "Gaby",
            "genre": "alternative, indie"
        }
    ]
    

    Als Nächstes ändern wir die Liste, indem wir Ihr neues Plug-In importieren und aufrufen.

  7. Aktualisieren Sie Ihre Datei „Program.cs“ mit dem folgenden Code:

    var kernel = builder.Build();
    kernel.ImportPluginFromType<MusicLibraryPlugin>();
    
    var result = await kernel.InvokeAsync(
        "MusicLibraryPlugin", 
        "AddToRecentlyPlayed", 
        new() {
            ["artist"] = "Tiara", 
            ["song"] = "Danse", 
            ["genre"] = "French pop, electropop, pop"
        }
    );
    
    Console.WriteLine(result);
    

    In diesem Code importieren Sie den MusicLibraryPlugin-Kernel mithilfe von ImportPluginFromType. Anschließend rufen Sie InvokeAsync mit dem Namen des Plug-Ins auf, das Sie verwenden möchten, und die Funktion, die Sie aufrufen möchten. Sie geben auch den Künstler, Song und Genre als Argumente an.

  8. Führen Sie den Code aus, indem Sie dotnet run in den Terminal eingeben.

    Die folgende Ausgabe wird angezeigt.

    Added 'Danse' to recently played
    

    Öffnen Sie „recentlyplayed.txt“, und Sie sollten sehen, dass der neue Titel der Liste hinzugefügt wurde. Gut gemacht!