演習 - 関数を自動的に呼び出す

完了

この演習では、プロンプトを使用して、ユーザーに曲を推奨できる関数を自動的に呼び出すか、最近再生した音楽の一覧に曲を追加する練習を行います。 それでは始めましょう。

  1. 前の演習で使用した Visual Studio Code プロジェクトを開きます。

  2. 次のコードで "Program.cs" ファイルを更新します。

    OpenAIPromptExecutionSettings settings = new()
    {
        ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions
    };
    
    var songSuggesterFunction = kernel.CreateFunctionFromPrompt(
        promptTemplate: @"Based on the user's recently played music:
            {{$recentlyPlayedSongs}}
            recommend a song to the user from the music library:
            {{$musicLibrary}}",
        functionName: "SuggestSong",
        description: "Recommend a song from the library"
    );
    
    kernel.Plugins.AddFromFunctions("SuggestSong", [songSuggesterFunction]);
    
    string prompt = @"Can you recommend a song from the music library?";
    
    var result = await kernel.InvokePromptAsync(prompt, new(settings));
    
    Console.WriteLine(result);
    

    このコードでは、LLM に曲の提案方法を指示する関数をプロンプトから作成します。 その後、自動関数呼び出し設定を有効にしてプロンプトを呼び出します。 カーネルは、関数を実行し、プロンプトを完了するための正しいパラメーターを指定できます。

  3. ターミナルで、「dotnet run」と入力してコードを実行します。

    出力結果には、ユーザーが最近聴いた曲に基づいて、おすすめの曲を提案するようにします。 応答は次の出力のようになります。

    Based on your recently played music, I recommend you listen to the song "Luv(sic)". It falls under the genres of hiphop and rap, which aligns with some of your recently played songs. Enjoy!  
    

    次に、最近再生した曲の一覧を更新するプロンプトを試してみましょう。

  4. 次のコードで "Program.cs" ファイルを更新します。

    string prompt = @"Add this song to the recently played songs list:  title: 'Touch', artist: 'Cat's Eye', genre: 'Pop'";
    
    var result = await kernel.InvokePromptAsync(prompt, new(settings));
    
    Console.WriteLine(result);
    
  5. ターミナルに「dotnet run」と入力します

    出力は次のようになります。

    I have added the song 'Touch' by Cat's Eye to the recently played songs list.
    

    recentlyplayed.txt ファイルを開くと、新しい曲がリストの一番上に追加されていることがわかります。

AutoInvokeKernelFunctions 設定を使用すると、ユーザーのニーズに合わせてプラグインを構築することに集中できます。