Cvičení – automatické vyvolání funkcí
V tomto cvičení si procvičíte používání výzev k automatickému volání funkcí, které mohou uživateli doporučit skladby, nebo přidat skladbu do seznamu naposledy přehrávané hudby. Pusťme se do toho.
Otevřete projekt editoru Visual Studio Code, který jste použili v předchozím cvičení.
Aktualizujte soubor Program.cs následujícím kódem:
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);
V tomto kódu vytvoříte funkci z výzvy, která řekne LLM, jak navrhnout skladbu. Potom vyvoláte výzvu s povoleným nastavením automatického volání funkce. Jádro dokáže funkci spustit a zadat správné parametry pro dokončení výzvy.
V terminálu zadejte
dotnet run
kód a spusťte ho.Vygenerovaný výstup by měl uživateli doporučit skladbu na základě jeho nedávno přehráané hudby. Odpověď může vypadat podobně jako v následujícím výstupu:
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!
V dalším kroku vyzkoušíme výzvu k aktualizaci seznamu naposledy přehrávaných skladeb.
Aktualizujte soubor Program.cs následujícím kódem:
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);
Zadejte
dotnet run
do terminálu.Výstup by měl vypadat přibližně takto:
I have added the song 'Touch' by Cat's Eye to the recently played songs list.
Když otevřete soubor recentlyplayed.txt, měla by se nová skladba přidat do horní části seznamu.
AutoInvokeKernelFunctions
Pomocí nastavení se můžete zaměřit na vytváření modulů plug-in tak, aby vyhovovaly potřebám uživatele.