Développement de fonction d'invite
Le développement de fonction d’invite (prompt engineering) dans Semantic Kernel consiste à créer des fonctions qui utilisent des modèles d’IA pour accomplir des tâches spécifiques. Ces fonctions peuvent être créées directement à partir de prompts (invitations) écrites en texte naturel. Semantic Kernel vous permet de développer ces fonctions via des fichiers ou du code inline.
1. Qu’est-ce qu’une fonction d’invite dans Semantic Kernel ?
Une fonction d’invite est une méthode encapsulée dans le noyau qui utilise un prompt pour interagir avec un modèle d’IA. Ces fonctions sont définies par un texte d’invite contenant des instructions sur ce que le modèle doit accomplir. Par exemple :
{{$input}}
Réponds à la question ci-dessus de manière concise et professionnelle.
2. Étapes pour créer une fonction d’invite
a) Créer une fonction à partir d’un fichier
-
Créer le fichier d’invite
Créez un fichier.txt
contenant l’invite. Par exemple,Plugins/AnswerQuestion.txt
:{{$input}}Réponds à la question ci-dessus de manière concise et professionnelle. -
Charger la fonction dans le noyau
Ajoutez le fichier dans votre projet, puis chargez-le dans le noyau avecImportSkillFromDirectory
:using Microsoft.SemanticKernel;var kernel = Kernel.Builder.Configure(config =>{config.AddOpenAIChatCompletion("gpt-3.5-turbo", "your-openai-api-key");}).Build();// Charger la fonction à partir du fichiervar questionFunction = kernel.ImportSkillFromDirectory("Plugins", "AnswerQuestion");// Exécuter la fonctionvar result = await kernel.RunAsync(questionFunction["AnswerQuestion"], new(){["input"] = "Qu'est-ce que l'intelligence artificielle ?"});Console.WriteLine($"Réponse : {result}");
b) Créer une fonction inline
Vous pouvez aussi définir une fonction directement dans votre code sans utiliser de fichier.
using Microsoft.SemanticKernel;
var kernel = Kernel.Builder .Configure(config => { config.AddOpenAIChatCompletion("gpt-4", "your-openai-api-key"); }) .Build();
// Créer une fonction inlinevar inlineFunction = kernel.CreateSemanticFunction(@"{{$input}}
Réponds à la question ci-dessus avec des exemples si possible.", maxTokens: 200);
// Exécuter la fonctionvar result = await kernel.RunAsync(inlineFunction, new(){ ["input"] = "Comment fonctionne un réseau de neurones ?"});
Console.WriteLine($"Réponse : {result}");
3. Personnalisation des fonctions d’invite
a) Utiliser des paramètres personnalisés
Vous pouvez ajouter des paramètres dynamiques à vos fonctions d’invite pour rendre les réponses plus adaptées.
Exemple : Ajouter une tonalité aux réponses (formelle, humoristique, etc.).
using Microsoft.SemanticKernel.SkillDefinition;
public class CustomPromptSkill{ [SKFunction("Répondre avec une tonalité spécifique")] public string AnswerWithTone( [SKParameter("input", "La question à laquelle répondre")] string input, [SKParameter("tone", "Le ton souhaité pour la réponse")] string tone) { return $@" Question : {input}
Réponds de manière {tone} à cette question."; }}
Ajoutez cette compétence au noyau et utilisez-la :
var kernel = Kernel.Builder.Build();
var customSkill = kernel.ImportSkill(new CustomPromptSkill(), "CustomPromptSkill");
var result = await kernel.RunAsync(customSkill["AnswerWithTone"], new(){ ["input"] = "Qu'est-ce que l'apprentissage supervisé ?", ["tone"] = "formelle"});
Console.WriteLine($"Réponse : {result}");
b) Ajuster les paramètres du modèle
Vous pouvez personnaliser les réponses en ajustant les paramètres comme maxTokens
, temperature
ou topP
.
var inlineFunction = kernel.CreateSemanticFunction(@"{{$input}}
Fournis une réponse très détaillée à cette question.", maxTokens: 500, temperature: 0.7, topP: 0.9);
var result = await kernel.RunAsync(inlineFunction, new(){ ["input"] = "Quels sont les avantages des modèles de langage comme GPT ?"});
Console.WriteLine($"Réponse : {result}");
4. Meilleures pratiques pour écrire des invites
-
Soyez clair et concis : Les modèles répondent mieux à des instructions explicites.
Explique les avantages des voitures électriques en 3 points clés. -
Fournissez un contexte : Ajoutez des informations pour guider le modèle.
Imagine que tu es un expert en énergie durable. Explique comment les voitures électriques réduisent les émissions de CO2. -
Encadrez la réponse : Donnez des instructions précises sur la structure.
Donne une liste numérotée des étapes nécessaires pour installer un panneau solaire. -
Testez et ajustez : Essayez différentes variations pour obtenir des résultats optimaux.
5. Exemples de cas d’utilisation
a) Générer des idées
Prompt :
Génère 5 idées innovantes pour améliorer la productivité des équipes de développement logiciel.
b) Résumer un texte
Prompt :
{{$input}}
Résumé : Résume le texte ci-dessus en 3 phrases.
c) Traduction contextuelle
Prompt :
Traduis le texte suivant en français avec un ton formel :{{$input}}
En suivant ces étapes, vous pouvez développer des fonctions d’invite puissantes et adaptées à vos besoins spécifiques dans Semantic Kernel. Ces fonctions permettent d’exploiter pleinement les capacités des modèles d’IA pour automatiser des tâches complexes et enrichir vos applications.