Övning – Anropa funktioner automatiskt
Med Semantic Kernel SDK kan du automatiskt samordna funktioner och uppmaningar som refereras till i kerneln. I stället för att manuellt anropa funktioner och uppmaningar hjälper det här verktyget dig att spara tid och göra dina program smartare. Vi provar!
Förbereda utvecklingsmiljön
För de här övningarna är ett startprojekt tillgängligt för dig att använda. Använd följande steg för att konfigurera startprojektet:
Viktigt!
Du måste ha Visual Studio Code och .NET Framework 8.0 installerat för att slutföra de här stegen. Du kan också behöva installera Tillägget Visual Studio Code C# Dev Kit.
Öppna Visual Studio Code.
Under avsnittet Start i Visual Studio Code väljer du Klona Git-lagringsplats.
I URL-fältet anger du
https://github.com/MicrosoftLearning/MSLearn-Develop-AI-Agents-with-Azure-OpenAI-and-Semantic-Kernel-SDK.git
I Utforskaren skapar du en ny mapp på en plats som är lätt att hitta och komma ihåg, till exempel en mapp i skrivbordet.
Klicka på knappen Välj som lagringsplatsmål.
Du måste vara inloggad på GitHub för att kunna klona projektet.
Öppna projektet i Visual Studio Code
Högerklicka på mappen M05-auto-invoke-functions/M05-Project i Utforskaren och klicka på Öppna i integrerad terminal
Expandera mappen M05-auto-invoke-functions/M05-Project
Du bör se filen "Program.cs".
Öppna filen Program.cs och uppdatera följande variabler med distributionsnamnet för Azure OpenAI Services, API-nyckeln och slutpunkten.
string yourDeploymentName = ""; string yourEndpoint = ""; string yourAPIKey = "";
Nu är du redo att börja övningen. Lycka till!
Föreslå konserter till användaren
I mappen Plugins skapar du en ny fil med namnet "MusicConcertPlugin.cs"
Lägg till följande kod i filen MusicConcertPlugin:
using System.ComponentModel; using Microsoft.SemanticKernel; public class MusicConcertPlugin { [KernelFunction, Description("Get a list of upcoming concerts")] public static string GetTours() { string dir = Directory.GetCurrentDirectory(); string content = File.ReadAllText($"{dir}/data/concertdates.txt"); return content; } }
Funktionen
GetTours
läser en fil med namnet "concertdates.txt" och returnerar innehållet. Den här funktionen används för att hämta en lista över kommande konserter.Skapa sedan en uppmaning om att be LLM att föreslå en konsert baserat på användarens nyligen spelade musik.
I mappen "Prompts" skapar du en ny mapp med namnet "SuggestConcert"
Skapa en config.json-fil i mappen SuggestConcert med följande innehåll:
{ "schema": 1, "type": "completion", "description": "Suggest a concert to the user", "execution_settings": { "default": { "max_tokens": 4000, "temperature": 0 } }, "input_variables": [ { "name": "upcomingConcerts", "description": "A list of artist's upcoming concerts", "required": true }, { "name": "recentlyPlayedSongs", "description": "A list of songs recently played by the user", "required": true }, { "name": "location", "description": "The user's location", "required": true } ] }
Skapa en skprompt.txt-fil i mappen SuggestConcert med följande innehåll:
Based on the user's recently played songs: {{$recentlyPlayedSongs}} And a list of upcoming concerts: {{$upcomingConcerts}} Suggest an upcoming concert. The user lives in {{$location}}, please recommend a relevant concert that is close to their location.
Den här uppmaningen ber LLM att föreslå en konsert baserat på användarens nyligen spelade låtar och plats. Därefter aktiverar du inställningen för automatiska funktionsanrop.
Program.cs
Öppna filen och följande med hjälp av -instruktionen:using Microsoft.SemanticKernel.Connectors.OpenAI;
Med det här paketet kan du använda inställningen för automatiska funktionssamtal.
Program.cs
Uppdatera filen med följande kod:kernel.ImportPluginFromType<MusicLibraryPlugin>(); kernel.ImportPluginFromType<MusicConcertPlugin>(); kernel.ImportPluginFromPromptDirectory("Prompts"); OpenAIPromptExecutionSettings settings = new() { ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions }; string prompt = @"I live in Portland OR USA. Based on my recently played songs and a list of upcoming concerts, which concert do you recommend?"; var result = await kernel.InvokePromptAsync(prompt, new(settings)); Console.WriteLine(result);
Ange
dotnet run
i terminalenDet genererade förslaget bör rekommendera en konsert baserat på de senast spelade låtarna och platsen. Utdata kan likna följande svar:
Based on your recently played songs and your location in Portland, OR, I would recommend attending the upcoming concert of Lisa Taylor. She will be performing in Portland on April 16, 2024. This concert would be a great opportunity for you to enjoy live music and experience Lisa Taylor' beautiful songs.
Den semantiska kerneln identifierar automatiskt lämplig plugin-funktion som ska användas och skickar in rätt parametrar. Du kan prova att ändra platsen för att se hur rekommendationen ändras. Du kan också prova att ändra uppmaningen för att be LLM att föreslå en låt från biblioteket.
Med AutoInvokeKernelFunctions
inställningen kan den semantiska kerneln automatiskt anropa funktioner och uppmaningar som läggs till i kerneln. Med det här verktyget kan du skapa dynamiska, robusta program med mindre kod.