演習 - 曲の提案に入れ子になった関数を使用する

完了

この演習では、ネイティブ関数と、最近の再生に基づいてユーザーにお勧めの曲を生成するように 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 Services のデプロイ名、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.
    

    Note

    生成される曲のレコメンデーションは、ここに示されている曲とは異なる場合があります。

ネイティブ関数とセマンティック プロンプトの組み合わせに成功しました。 これで音楽レコメンデーション エージェントの始まりです! プロンプトと入力ファイルを試してみて、他にどのようなレコメンデーションを生成できるかを確認してください。