Oefening: functies automatisch aanroepen
Met de Semantische Kernel SDK kunt u functies en prompts waarnaar wordt verwezen in uw kernel automatisch coördineren. In plaats van functies en prompts handmatig aan te roepen, helpt dit hulpprogramma u tijd te besparen en uw toepassingen slimmer te maken. Laten we het eens proberen.
Uw ontwikkelomgeving voorbereiden
Voor deze oefeningen is er een startersproject beschikbaar dat u kunt gebruiken. Gebruik de volgende stappen om het startersproject in te stellen:
Belangrijk
U moet Visual Studio Code en .NET Framework 8.0 hebben geïnstalleerd om deze stappen uit te voeren. Mogelijk moet u ook de Visual Studio Code C# Dev Kit-extensie installeren.
Open Visual Studio Code.
Selecteer Git-opslagplaats klonen in de sectie Start van Visual Studio Code.
Voer in de URL-balk het volgende in
https://github.com/MicrosoftLearning/MSLearn-Develop-AI-Agents-with-Azure-OpenAI-and-Semantic-Kernel-SDK.git
Maak in de Bestandenverkenner een nieuwe map op een locatie die gemakkelijk te vinden en te onthouden is, zoals een map in uw bureaublad.
Klik op de knop Selecteren als opslagplaatsbestemming .
U moet zijn aangemeld bij GitHub om het project te klonen.
Het project openen in Visual Studio Code
Klik in Explorer met de rechtermuisknop op de map M05-auto-invoke-functions/M05-Project en klik op Openen in geïntegreerde terminal
Vouw de map M05-auto-invoke-functions/M05-Project uit
Als het goed is, ziet u een bestand met de naam 'Program.cs'.
Open het Program.cs-bestand en werk de volgende variabelen bij met de naam van uw Azure OpenAI Services-implementatie, API-sleutel, eindpunt.
string yourDeploymentName = ""; string yourEndpoint = ""; string yourAPIKey = "";
Nu bent u klaar om de oefening te starten. Succes!
Concerten voorstellen aan de gebruiker
Maak in de map Invoegtoepassingen een nieuw bestand met de naam 'MusicConcertPlugin.cs'
Voeg in het bestand MusicConcertPlugin de volgende code toe:
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; } }
De
GetTours
functie leest een bestand met de naam 'concertdates.txt' en retourneert de inhoud. Deze functie wordt gebruikt om een lijst met aanstaande concerten op te halen.Maak vervolgens een prompt om de LLM te vragen een concert voor te stellen op basis van de onlangs afgespeelde muziek van de gebruiker.
Maak in de map Prompts een nieuwe map met de naam 'SuggestConcert'
Maak een bestand 'config.json' in de map 'SuggestConcert' met de volgende inhoud:
{ "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 } ] }
Maak een bestand 'skprompt.txt' in de map 'SuggestConcert' met de volgende inhoud:
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.
Deze prompt vraagt de LLM om een concert voor te stellen op basis van de onlangs gespeelde nummers en locatie van de gebruiker. Vervolgens schakelt u de instelling voor het automatisch aanroepen van functies in.
Open het
Program.cs
bestand en de volgende using-instructie:using Microsoft.SemanticKernel.Connectors.OpenAI;
Met dit pakket kunt u de instelling voor het automatisch aanroepen van functies gebruiken.
Werk het
Program.cs
bestand bij met de volgende code: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);
Voer
dotnet run
in de terminal inDe gegenereerde suggestie moet een concert aanbevelen op basis van de onlangs afgespeelde nummers en locatie. De uitvoer kan vergelijkbaar zijn met het volgende antwoord:
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.
De semantische kernel detecteert automatisch de juiste invoegtoepassingsfunctie die moet worden gebruikt en geeft de juiste parameters door. U kunt proberen de locatie te wijzigen om te zien hoe de aanbeveling verandert. U kunt ook proberen de prompt te wijzigen zodat de LLM een nummer uit de bibliotheek voorstelt.
Met AutoInvokeKernelFunctions
de instelling kan de semantische kernel automatisch functies en prompts aanroepen die aan uw kernel worden toegevoegd. Met dit hulpprogramma kunt u dynamische, robuuste toepassingen maken met minder code.