練習 - 使用巢狀函式推薦歌曲

已完成

在此練習中,您會將原生函式與提示結合,以要求 LLM 根據使用者最近的播放歌曲,為使用者產生建議的歌曲。 現在就開始吧!

準備您的開發環境

針對這些練習,您可以使用入門專案。 使用下列步驟來設定入門專案:

重要

您必須安裝 Visual Studio Code 和 .NET Framework 8.0,才能完成這些步驟。 您可能也需要安裝 Visual Studio Code C# 開發套件延伸模組。

  1. 打開 Visual Studio Code。

  2. 在 Visual Studio Code [開始] 區段之下,選取 [複製 Git 存放庫]

  3. 在 URL 列中,輸入 https://github.com/MicrosoftLearning/MSLearn-Develop-AI-Agents-with-Azure-OpenAI-and-Semantic-Kernel-SDK.git

  4. 在 [檔案總管] 中,在容易尋找和記住的位置建立新的資料夾,例如桌面中的資料夾。

  5. 按一下 [選取作為存放庫目的地] 按鈕。

    您必須登入 GitHub 才能成功複製專案。

  6. 在 Visual Studio Code 中開啟專案。

  7. 在 [總管] 中,以滑鼠右鍵按一下 M04-combine-prompts-and-functions/M04-Project 資料夾,然後按一下 [在整合式終端中開啟]

  8. 展開 M04-combine-prompts-and-functions/M04-Project 資料夾。

    您應該會看到「Program.cs」檔案。

  9. 開啟 Program.cs 檔案,並使用 Azure OpenAI 服務部署名稱、API 金鑰和端點更新下列變數。

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

現在您已準備好開始練習。 祝您好運!

提供個人化歌曲建議

  1. 在您的 MusicLibraryPlugin.cs 檔案中,新增下列函式:

    [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. 使用下列程式碼來更新 'Program.cs' 檔案:

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

    在此程式碼中,您會將原生函式與語意提示結合。 原生函式能夠擷取大型語言模型 (LLM) 無法自行存取的使用者資料,讓 LLM 能夠根據文字輸入產生歌曲建議。

  3. 若要測試您的程式碼,請在終端機輸入 dotnet run

    您應該會看到類似下列輸出的回應:

    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.
    

    注意

    您產生的歌曲建議可能與此處顯示的歌曲建議不同。

您已成功將原生函式與語意提示結合。 您已經有了音樂建議代理程式作為開始! 請嘗試使用提示和輸入檔案來看看您可以產生哪些其他建議。