Exercício - Use funções aninhadas para sugestões de músicas

Concluído

Para este exercício, você combina suas funções nativas com um prompt que pede ao LLM para gerar uma música recomendada para o usuário com base em suas reproduções recentes. Vamos começar!

Preparar o ambiente de desenvolvimento

Para estes exercícios, um projeto inicial está disponível para você usar. Use as seguintes etapas para configurar o projeto inicial:

Importante

Você deve ter o Visual Studio Code e o .NET Framework 8.0 instalado para concluir essas etapas. Também pode ser necessário instalar a extensão Visual Studio Code C# Dev Kit.

  1. Abra o Visual Studio Code.

  2. Na seção Visual Studio Code Start , selecione Clone Git Repository.

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

  4. No Explorador de Arquivos, crie uma nova pasta em um local fácil de encontrar e lembrar, como uma pasta na área de trabalho.

  5. Clique no botão Selecionar como destino do repositório.

    Você precisa estar conectado ao GitHub para clonar o projeto com êxito.

  6. Abra o projeto no Visual Studio Code.

  7. No Explorer, clique com o botão direito do mouse na pasta M04-combine-prompts-and-functions/M04-Project e clique em Abrir no Terminal Integrado.

  8. Expanda a pasta M04-combine-prompts-and-functions/M04-Project .

    Deverá ver um ficheiro "Program.cs".

  9. Abra o arquivo Program.cs e atualize as seguintes variáveis com seu nome de implantação dos Serviços OpenAI do Azure, chave de API, ponto de extremidade.

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

Agora você está pronto para começar o exercício. Boa sorte!

Forneça recomendações personalizadas de músicas

  1. No seu MusicLibraryPlugin.cs ficheiro, adicione a seguinte função:

    [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. Atualize seu arquivo 'Program.cs' com o seguinte código:

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

    Neste código, você combina suas funções nativas com um prompt semântico. As funções nativas são capazes de recuperar dados do usuário que o modelo de linguagem grande (LLM) não poderia acessar por conta própria, e o LLM é capaz de gerar uma recomendação de música com base na entrada de texto.

  3. Para testar o seu código, entre dotnet run no terminal.

    Você verá uma resposta semelhante à seguinte saída:

    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

    Sua recomendação de música gerada pode ser diferente da mostrada aqui.

Você combinou com êxito suas funções nativas com um prompt semântico. Você tem o início de um agente de recomendação musical! Tente brincar com os prompts e arquivos de entrada para ver quais outras recomendações você pode gerar.