Ejercicio: invocación automática de funciones

Completado

En este ejercicio, practicará el uso de indicaciones para llamar automáticamente a funciones que pueden recomendar canciones al usuario o agregar una canción a la lista de música reproducida recientemente. Comencemos.

  1. Abra el proyecto de Visual Studio Code que ha usado en el ejercicio anterior.

  2. Actualice el archivo 'Program.cs' con el código siguiente:

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

    En este código, creará una función a partir de una indicación que muestra al LLM cómo sugerir una canción. Después, se invoca una indicación con la configuración de llamada de función automática habilitada. El kernel puede ejecutar la función y proporcionar los parámetros correctos para completar la indicación.

  3. En el terminal, escriba dotnet run para ejecutar el código.

    La salida generada debe recomendar una canción al usuario en función de su música reproducida recientemente. La respuesta puede tener un aspecto similar a la salida siguiente:

    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!  
    

    A continuación, vamos a probar una indicación para actualizar la lista de canciones reproducidas recientemente.

  4. Actualice el archivo 'Program.cs' con el código siguiente:

    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. Escriba dotnet run en el terminal

    La salida debe ser similar a la siguiente:

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

    Al abrir el archivo recentlyplayed.txt, debería ver la nueva canción agregada a la parte superior de la lista.

El uso de la configuración de AutoInvokeKernelFunctions le permite centrarse en la creación de complementos para satisfacer las necesidades del usuario.