Exercício - Use funções aninhadas para sugestões de músicas
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.
Abra o Visual Studio Code.
Na seção Visual Studio Code Start , selecione Clone Git Repository.
Na barra de URL, digite
https://github.com/MicrosoftLearning/MSLearn-Develop-AI-Agents-with-Azure-OpenAI-and-Semantic-Kernel-SDK.git
No Explorador de Arquivos, crie uma nova pasta em um local fácil de encontrar e lembrar, como uma pasta na área de trabalho.
Clique no botão Selecionar como destino do repositório.
Você precisa estar conectado ao GitHub para clonar o projeto com êxito.
Abra o projeto no Visual Studio Code.
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.
Expanda a pasta M04-combine-prompts-and-functions/M04-Project .
Deverá ver um ficheiro "Program.cs".
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
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; }
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.
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.