Exercice – Appeler automatiquement des fonctions
Le Kit de développement logiciel (SDK) Semantic Kernel vous permet de coordonner automatiquement les fonctions et les prompts référencés dans votre noyau. Cet outil rend vos applications plus intelligentes et vous aide à gagner du temps en vous évitant d’appeler manuellement des fonctions et des prompts. Essayons-le !
Préparer votre environnement de développement
Pour ces exercices, un projet de démarrage est mis à votre disposition. Effectuez les étapes suivantes pour configurer le projet de démarrage :
Important
Vous devez avoir installé Visual Studio Code et le .NET Framework 8.0 pour effectuer ces étapes. Vous devrez peut-être également installer l’extension du Kit de développement C# de Visual Studio Code.
Ouvrez Visual Studio Code.
Sous la section Démarrer de Visual Studio Code , sélectionnez le référentiel git clone.
Dans la barre d’URL, entrez
https://github.com/MicrosoftLearning/MSLearn-Develop-AI-Agents-with-Azure-OpenAI-and-Semantic-Kernel-SDK.git
Dans l’Explorateur de fichiers, créez un dossier dans un emplacement facile à trouver et à mémoriser, tel qu’un dossier dans votre Bureau.
Cliquez sur le bouton Sélectionner en tant que destination du référentiel.
Vous devez être connecté à GitHub pour cloner correctement le projet.
Ouvrir le projet dans Visual Studio Code
Dans l’Explorateur, cliquez avec le bouton droit sur le dossier M05-auto-invoke-functions/M05-Project, puis cliquez sur Ouvrir dans le terminal intégré
Développez le dossier M05-auto-invoke-functions/M05-Project
Vous devez voir un fichier « Program.cs ».
Ouvrez le fichier Program.cs, puis mettez à jour les variables suivantes avec votre point de terminaison, clé API et nom de déploiement Azure OpenAI Services.
string yourDeploymentName = ""; string yourEndpoint = ""; string yourAPIKey = "";
Vous êtes maintenant prêt à commencer l’exercice. Bonne chance !
Suggérer des concerts à l’utilisateur
Dans le dossier « Plugins », créez un fichier nommé « MusicConcertPlugin.cs »
Dans le fichier MusicConcertPlugin, ajoutez le code suivant :
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; } }
La fonction
GetTours
lit un fichier nommé « concertdates.txt » et retourne le contenu. Cette fonction sera utilisée pour récupérer une liste de concerts à venir.Ensuite, créez une invite pour demander au LLM de suggérer un concert basé sur la musique récemment jouée par l’utilisateur.
Dans le dossier « Invites », créez un dossier nommé « SuggestConcert »
Créez un fichier « config.json » dans le dossier « SuggestConcert » avec le contenu suivant :
{ "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 } ] }
Créez un fichier « skprompt.txt » dans le dossier « SuggestConcert » avec le contenu suivant :
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.
Cette invite demande au LLM de suggérer un concert basé sur les chansons et l’emplacement récemment joués par l’utilisateur. Ensuite, vous activez le paramètre d’appel de fonction automatique.
Ouvrez le fichier
Program.cs
et l’instruction using suivante :using Microsoft.SemanticKernel.Connectors.OpenAI;
Ce package vous permet d’utiliser le paramètre d’appel de fonction automatique.
Mettez à jour le fichier
Program.cs
avec le code suivant :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);
Entrez
dotnet run
dans le terminal.La suggestion générée doit recommander un concert basé sur les chansons récemment jouées et le lieu. Le résultat peut être similaire à la réponse suivante :
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.
Le noyau sémantique détecte automatiquement la fonction de plug-in appropriée à utiliser et passe les paramètres adéquats. Vous pouvez essayer de modifier le lieu pour voir comment la recommandation change. Vous pouvez également essayer de changer le prompt pour indiquer au LLM de suggérer une chanson de la bibliothèque.
Le paramètre AutoInvokeKernelFunctions
permet au noyau sémantique d’appeler automatiquement les fonctions et les prompts ajoutés dans votre noyau. Cet outil peut vous aider à créer des applications dynamiques et robustes avec moins de code.