Exercício - Invocar funções automaticamente
Neste exercício, você pratica o uso de prompts para chamar automaticamente funções que podem recomendar músicas ao usuário ou adicionar uma música à lista de músicas tocadas recentemente. Vamos começar!
Abra o projeto Visual Studio Code usado no exercício anterior.
Atualize seu arquivo 'Program.cs' com o seguinte código:
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);
Neste código, você cria uma função a partir de um prompt que informa ao LLM como sugerir uma música. Depois, você invoca um prompt com a configuração de chamada de função automática ativada. O kernel é capaz de executar a função e fornecer os parâmetros corretos para completar o prompt.
No terminal, digite
dotnet run
para executar seu código.A saída gerada deve recomendar uma música ao usuário com base em sua música tocada recentemente. Sua resposta pode ser semelhante à seguinte saída:
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!
Em seguida, vamos tentar um prompt para atualizar a lista de músicas tocadas recentemente.
Atualize seu arquivo 'Program.cs' com o seguinte código:
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);
Entre
dotnet run
no terminalO resultado deve ser semelhante ao seguinte:
I have added the song 'Touch' by Cat's Eye to the recently played songs list.
Quando abrir o ficheiro recentlyplayed.txt, deverá ver a nova música adicionada ao topo da lista.
Usar a AutoInvokeKernelFunctions
configuração permite que você se concentre na criação de plugins para atender às necessidades do seu usuário.