Exercice - Utiliser des fonctions imbriquées pour des suggestions de chanson
Pour cet exercice, vous combinez vos fonctions natives avec un prompt qui demande au grand modèle de langage (LLM) de générer une chanson recommandée pour l’utilisateur en fonction de ses écoutes récentes. C’est parti !
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.
Ouvrez le projet dans Visual Studio Code.
Dans l’Explorateur, cliquez avec le bouton droit sur le dossier M04-combine-prompts-and-functions/M04-Project, puis cliquez sur Ouvrir dans le terminal intégré.
Développez le dossier M04-combine-prompts-and-functions/M04-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 yourKey = "";
Vous êtes maintenant prêt à commencer l’exercice. Bonne chance !
Fournir des recommandations personnalisées sur les chansons
Dans votre fichier
MusicLibraryPlugin.cs
, ajoutez la fonction suivante :[KernelFunction, Description("Get a list of music available to the user")] public static string GetMusicLibrary() { string dir = Directory.GetCurrentDirectory(); string content = File.ReadAllText($"{dir}/data/musiclibrary.txt"); return content; }
Mettez à jour votre fichier « Program.cs » avec le code suivant :
var kernel = builder.Build(); kernel.ImportPluginFromType<MusicLibraryPlugin>(); string prompt = @"This is a list of music available to the user: {{MusicLibraryPlugin.GetMusicLibrary}} This is a list of music the user has recently played: {{MusicLibraryPlugin.GetRecentPlays}} Based on their recently played music, suggest a song from the list to play next"; var result = await kernel.InvokePromptAsync(prompt); Console.WriteLine(result);
Dans ce code, vous combinez vos fonctions natives avec un prompt sémantique. Les fonctions natives a la capacité de récupérer des données utilisateur auxquelles le grand modèle de langage (LLM) n’a pas pu accéder par lui-même, et le LLM a la capacité de générer une recommandation de chanson en fonction de l’entrée texte.
Pour tester votre code, entrez
dotnet run
dans le terminal.Vous devez voir une réponse similaire à la sortie suivante :
Based on the user's recently played music, a suggested song to play next could be "Sabry Aalil" since the user seems to enjoy pop and Egyptian pop music.
Remarque
Votre recommandation de chanson générée peut être différente de celle affichée ici.
Vous avez combiné vos fonctions natives avec un prompt sémantique. Vous avez là les prémices d’un agent de recommandation de musiques ! Essayez en testant d’autres prompts et fichiers d’entrée pour voir d’autres recommandations que vous pouvez générer.