演習 - 曲の提案に入れ子になった関数を使用する
この演習では、ネイティブ関数と、最近の再生に基づいてユーザーにお勧めの曲を生成するように LLM に求めるプロンプトを組み合わせます。 それでは始めましょう。
開発環境を準備する
これらの演習では、スターター プロジェクトを使用できます。 スターター プロジェクトを設定するには、次の手順を使用します。
重要
これらの手順を完了するには、Visual Studio Code と .NET Framework 8.0 がインストールされている必要があります。 Visual Studio Code C# 開発キット拡張機能のインストールが必要になる場合もあります。
Visual Studio Code を開きます。
Visual Studio Code の[開始] セクションで、[Git リポジトリのクローン] を選択してください。
URL バーに、「
https://github.com/MicrosoftLearning/MSLearn-Develop-AI-Agents-with-Azure-OpenAI-and-Semantic-Kernel-SDK.git
」と入力してくださいエクスプローラーで、デスクトップ内のフォルダーなど、見つけやすく覚えやすい場所に新しいフォルダーを作成してください。
[リポジトリの場所を選択] ボタンをクリックしてください。
プロジェクトを正常にクローンするには、GitHub にサインインする必要があります。
Visual Studio Code でプロジェクトを開きます。
エクスプローラーで、M04-combine-prompts-and-functions/M04-Project フォルダーを右クリックし、[統合ターミナルで開く] をクリックします。
M04-combine-prompts-and-functions/M04-Project フォルダーを展開します。
"Program.cs" ファイルが表示されます。
Program.cs ファイルを開き、以下の変数をお使いの Azure OpenAI Services のデプロイ名、API キー、エンドポイントに更新します。
string yourDeploymentName = ""; string yourEndpoint = ""; string yourKey = "";
これで、演習を始める準備ができました。 がんばってください。
パーソナライズされた曲のレコメンデーションを提供する
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; }
次のコードで "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 はテキスト入力に基づいて曲のレコメンデーションを生成できます。
コードをテストするには、ターミナルに入力
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
生成される曲のレコメンデーションは、ここに示されている曲とは異なる場合があります。
ネイティブ関数とセマンティック プロンプトの組み合わせに成功しました。 これで音楽レコメンデーション エージェントの始まりです! プロンプトと入力ファイルを試してみて、他にどのようなレコメンデーションを生成できるかを確認してください。