Ejercicio: Uso de funciones anidadas para sugerencias de canciones

Completado

En este ejercicio, combinará las funciones nativas con un mensaje que pide al LLM que genere una canción recomendada para el usuario en función de sus reproducciones recientes. Comencemos.

Preparación del entorno de desarrollo

Para estos ejercicios, hay disponible un proyecto de inicio para su uso. Siga estos pasos para configurar el proyecto de inicio:

Importante

Debe tener Instalado Visual Studio Code y .NET Framework 8.0 para completar estos pasos. Es posible que también tenga que instalar la extensión Dev Kit de C# de Visual Studio Code.

  1. Abra Visual Studio Code.

  2. En la sección Iniciode Visual Studio Code, seleccione Clonar repositorio de Git.

  3. En la barra de direcciones URL, escriba https://github.com/MicrosoftLearning/MSLearn-Develop-AI-Agents-with-Azure-OpenAI-and-Semantic-Kernel-SDK.git

  4. En el Explorador de archivos, cree una nueva carpeta en una ubicación que sea fácil de encontrar y recordar, como una carpeta en el escritorio.

  5. Haga clic en el botón Seleccionar como destino del repositorio.

    Debe iniciar sesión en GitHub para clonar correctamente el proyecto.

  6. Abra el proyecto en Visual Studio Code.

  7. En el Explorador, haga clic con el botón derecho en la carpeta M04-combine-prompts-and-functions/M04-Project y haga clic en Abrir en terminal integrado.

  8. Expanda la carpeta M04-combine-prompts-and-functions/M04-Project.

    Debería ver un archivo "Program.cs".

  9. Abra el archivo Program.cs y actualice las siguientes variables con el nombre de implementación de Azure OpenAI Services, la clave de API y el punto de conexión.

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

Ya está listo para comenzar el ejercicio. Buena suerte.

Proporcionar recomendaciones de canciones personalizadas

  1. En el archivo MusicLibraryPlugin.cs, agregue la siguiente función:

    [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. Actualice el archivo "Program.cs" con el código siguiente:

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

    En este código, combinará las funciones nativas con una solicitud semántica. Las funciones nativas pueden recuperar los datos de usuario a los que el modelo de lenguaje de gran tamaño (LLM) no pudo acceder por sí mismo. Además, el LLM puede generar una recomendación de canción basada en la entrada de texto.

  3. Para probar el código, escriba dotnet run en el terminal.

    Debería ver una respuesta similar a la siguiente salida:

    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.
    

    Nota:

    La recomendación de canción generada puede ser diferente de la que se muestra aquí.

Ha combinado correctamente las funciones nativas con una solicitud semántica. ¡Ahora tiene las bases de un agente de recomendación de música! Pruebe a jugar con las solicitudes y los archivos de entrada para ver qué otras recomendaciones puede generar.