Exercício – Usar funções aninhadas para sugestões de música
Para esse exercício, você irá combinar suas funções nativas com um prompt que solicita ao LLM que gere uma música recomendada para o usuário com base nas escutadas recentemente. Vamos começar!
Preparar seu ambiente de desenvolvimento
No caso desses exercícios, um projeto inicial está disponível para você usar. Use as seguintes etapas para configurar o projeto inicial:
Importante
Você deverá ter o Visual Studio Code e o .NET Framework 8.0 instalados para concluir essas etapas. É possível que você também precise instalar a extensão do Kit de Desenvolvimento do C# do Visual Studio Code.
Abra o Visual Studio Code.
Na seção Iniciar do Visual Studio Code, selecione Clonar repositório do Git.
Na barra de URL, insira
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 localizar e lembrar, como uma pasta em sua Á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.
Você deve ver um arquivo "Program.cs".
Abra o arquivo Program.cs e atualize as seguintes variáveis com o nome de implantação dos Serviços OpenAI do Azure, a chave de API e o ponto de extremidade.
string yourDeploymentName = ""; string yourEndpoint = ""; string yourKey = "";
Agora você está pronto para começar o exercício. Boa sorte!
Fornecer recomendações personalizadas de músicas
No seu arquivo do
MusicLibraryPlugin.cs
, 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 código a seguir:
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);
Nesse código, você vai combinar 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 conseguiu 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 seu código, insira
dotnet run
no terminal.Você deverá ver uma resposta semelhante ao seguinte resultado:
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.
Observação
Sua recomendação de música gerada pode ser diferente da mostrada aqui.
Você combinou suas funções nativas com um prompt semântico com sucesso. Agora você já tem o início de um agente de recomendação de músicas! Tente brincar com os prompts e os arquivos de entrada de dados para ver quais outras recomendações você consegue gerar.