Plugins prêts à l'emploi
Les plugins prêts à l’emploi dans Semantic Kernel sont des bibliothèques ou des ensembles de compétences préconçus qui encapsulent des fonctionnalités courantes, comme l’accès à des API, des transformations de données ou des utilitaires de texte. Ces plugins permettent de gagner du temps en intégrant rapidement des capacités standard à votre application.
1. Pourquoi utiliser des plugins prêts à l’emploi ?
- Gain de temps : Pas besoin de réécrire des fonctionnalités courantes.
- Facilité d’intégration : Compatibilité native avec le noyau.
- Personnalisation : Vous pouvez étendre ou modifier ces plugins pour répondre à vos besoins.
2. Exemples de plugins prêts à l’emploi
Semantic Kernel propose des plugins intégrés pour des tâches variées, notamment :
- TextSkill : Manipulations de texte (résumés, nettoyage, analyse).
- TimeSkill : Gestion du temps (formatage de dates, décalages horaires).
- MathSkill : Calculs mathématiques de base.
- FileSkill : Manipulation de fichiers.
- EmailSkill : Envoi d’emails (nécessite une configuration avec des API externes).
3. Comment utiliser un plugin prêt à l’emploi
Étape 1 : Charger un plugin intégré
Les plugins intégrés sont directement disponibles via le noyau. Par exemple, pour utiliser le plugin TextSkill :
using Microsoft.SemanticKernel;using Microsoft.SemanticKernel.CoreSkills;
var kernel = Kernel.Builder.Build();
// Charger le plugin intégré TextSkillvar textSkill = kernel.ImportSkill(new TextSkill(), "TextSkill");
// Exécuter une fonction du pluginvar result = await kernel.RunAsync(textSkill["Uppercase"], new(){ ["input"] = "bonjour, comment ça va ?"});
Console.WriteLine($"Résultat : {result}"); // Résultat : BONJOUR, COMMENT ÇA VA ?
Étape 2 : Importer un plugin externe depuis un répertoire
Si un plugin est disponible sous forme de fichiers de prompt, comme un répertoire contenant des fichiers .txt
, vous pouvez l’importer directement.
Structure du répertoire
/Plugins /ExampleSkill Summarize.txt Translate.txt
Charger et utiliser un plugin
var kernel = Kernel.Builder .Configure(config => { config.AddOpenAIChatCompletion("gpt-3.5-turbo", "your-api-key"); }) .Build();
// Charger le plugin depuis un répertoirevar exampleSkill = kernel.ImportSkillFromDirectory("Plugins", "ExampleSkill");
// Utiliser une fonction du pluginvar summary = await kernel.RunAsync(exampleSkill["Summarize"], new(){ ["input"] = "Semantic Kernel est une bibliothèque puissante pour l'intégration de l'IA."});
Console.WriteLine($"Résumé : {summary}");
Étape 3 : Utiliser un plugin distant (API)
Certains plugins exploitent des API externes (comme des services météo ou des bases de données). Ces plugins nécessitent souvent une configuration.
Exemple : Utilisation d’un plugin météo
using Microsoft.SemanticKernel.SkillDefinition;using System.Net.Http;using System.Threading.Tasks;
public class WeatherPlugin{ private readonly HttpClient _httpClient;
public WeatherPlugin(HttpClient httpClient) { _httpClient = httpClient; }
[SKFunction("Obtenir la météo actuelle")] public async Task<string> GetWeatherAsync( [SKParameter("city", "Nom de la ville")] string city) { var response = await _httpClient.GetStringAsync($"https://api.weatherapi.com/v1/current.json?key=your-api-key&q={city}"); return response; }}
Intégration avec le noyau
var kernel = Kernel.Builder.Build();var weatherPlugin = new WeatherPlugin(new HttpClient());
// Charger et utiliser le pluginkernel.ImportSkill(weatherPlugin, "WeatherPlugin");
var result = await kernel.RunAsync(weatherPlugin["GetWeatherAsync"], new(){ ["city"] = "Paris"});
Console.WriteLine($"Météo à Paris : {result}");
4. Liste des plugins intégrés importants
a) TextSkill
Ce plugin permet des manipulations courantes de texte :
- Uppercase : Convertit un texte en majuscules.
- Lowercase : Convertit un texte en minuscules.
- Trim : Supprime les espaces inutiles.
- Concatenate : Combine plusieurs chaînes.
Exemple
var textSkill = kernel.ImportSkill(new TextSkill(), "TextSkill");
var concatenated = await kernel.RunAsync(textSkill["Concatenate"], new(){ ["input1"] = "Bonjour", ["input2"] = "le monde"});
Console.WriteLine($"Concaténé : {concatenated}");
b) TimeSkill
Ce plugin gère des tâches liées au temps :
- AddToDate : Ajoute un décalage (jours, heures) à une date.
- GetCurrentTime : Renvoie l’heure actuelle.
Exemple
var timeSkill = kernel.ImportSkill(new TimeSkill(), "TimeSkill");
var currentTime = await kernel.RunAsync(timeSkill["GetCurrentTime"]);Console.WriteLine($"Heure actuelle : {currentTime}");
var futureTime = await kernel.RunAsync(timeSkill["AddToDate"], new(){ ["input"] = "2024-01-01", ["days"] = "5"});
Console.WriteLine($"Date future : {futureTime}");
5. Plugins disponibles dans la communauté
a) Dépôt GitHub
Consultez le dépôt GitHub officiel ou communautaire pour trouver des plugins préconçus :
Certains plugins courants incluent :
- Génération de rapports.
- Résumés de documents PDF.
- Connexion à des API tierces.
b) Marketplace
Des marketplaces de plugins ou des répertoires collaboratifs sont souvent utilisés pour partager des plugins (actuellement en cours de développement pour SK).
6. Cas d’utilisation courants
- Applications de productivité : Résumer des textes ou combiner des notes.
- Intégration d’API : Accéder à des services comme la météo, des bases de données ou des services de traduction.
- Automatisation : Gérer des dates, manipuler des fichiers ou envoyer des emails.
En utilisant des plugins prêts à l’emploi, vous pouvez rapidement intégrer des fonctionnalités avancées dans votre application sans avoir à les développer de zéro, tout en conservant la flexibilité de les modifier selon vos besoins.