Utiliser des fonctions dans les invites
Le langage de création de modèles du Kit de développement logiciel (SDK) Semantic Kernel vous permet de créer des invites dynamiques. Le langage prend en charge trois fonctionnalités :
- L’utilisation de variables.
- L’appel de fonctions externes.
- Le passage d’arguments à des fonctions.
Pour incorporer des expressions dans vos invites, le langage de création de modèles utilise des accolades {{...}}
et les variables sont notées par un symbole dollar $
. Les fonctions que vous appelez doivent faire partie des plug-ins que vous chargez dans le noyau. Par exemple, si vous souhaitez appeler une fonction dans une invite, vous pouvez utiliser la syntaxe suivante :
{{plugin.functionName $argument}}
Vous devez vous assurer que le plug-in contenant la fonction est chargé dans le noyau avant d’appeler la fonction dans votre invite. Les fonctions d’imbrication dans les invites peuvent vous aider à réduire le nombre de jetons utilisés dans une invite ou à fournir un contexte supplémentaire au modèle pour obtenir des résultats améliorés.
Supposons que vous ayez une invite pour recommander une liste de recettes en fonction de certaines informations utilisateur :
string history = @"In the heart of my bustling kitchen, I have embraced the challenge
of satisfying my family's diverse taste buds and navigating their unique tastes.
With a mix of picky eaters and allergies, my culinary journey revolves around
exploring a plethora of vegetarian recipes.
One of my kids is a picky eater with an aversion to anything green, while another
has a peanut allergy that adds an extra layer of complexity to meal planning.
Armed with creativity and a passion for wholesome cooking, I've embarked on a
flavorful adventure, discovering plant-based dishes that not only please the
picky palates but are also heathy and delicious.";
string prompt = @"This is some information about the user's background: {{$history}}
Given this user's background, provide a list of relevant recipes.";
var result = await kernel.InvokePromptAsync(suggestRecipes, new() { "history", history });
Console.WriteLine(result);
Vous pouvez appeler une fonction pour résumer les informations d’arrière-plan longues de l’utilisateur avant de fournir une liste de recettes. Voici un exemple d’utilisation des fonctions dans les invites :
kernel.ImportPluginFromType<ConversationSummaryPlugin>();
string prompt = @"User information:
{{ConversationSummaryPlugin.SummarizeConversation $history}}
Given this user's background information, provide a list of relevant recipes.";
var result = await kernel.InvokePromptAsync(suggestRecipes, new() { "history", history });
Console.WriteLine(result);
Dans cet exemple, l’invite appelle ConversationSummaryPlugin.SummarizeConversation
sur l’entrée $history
fournie. La fonction prend les informations d’arrière-plan de l’utilisateur et les récapitule, et le résultat est utilisé pour récupérer la liste des recettes pertinentes. Le plug-in ConversationSummaryPlugin
doit être ajouté au générateur de noyau pour que l’invite fonctionne correctement.
Voici l’exemple de sortie :
1. Lentil and vegetable soup - a hearty, filling soup that is perfect for a cold day. This recipe is vegetarian and can easily be adapted to accommodate allergies.
2. Cauliflower "steaks" - a delicious and healthy main course that is sure to satisfy even the pickiest of eaters. This recipe is vegetarian and can easily be made vegan.
3. Quinoa salad with roasted vegetables - a healthy and filling salad that is perfect for any occasion. This recipe is vegetarian and can easily be adapted to accommodate allergies.
4. Peanut-free pad Thai - a classic dish made without peanut sauce, perfect for those with peanut allergies. This recipe is vegetarian and can easily be made vegan.
5. Black bean and sweet potato enchiladas - a delicious and healthy twist on traditional enchiladas. This recipe is vegetarian and can easily be made vegan.
L’utilisation de variables et de fonctions dans des invites vous permet de créer des modèles réutilisables pouvant être remplis dynamiquement avec diverses entrées. La réutilisation des invites est particulièrement utile lorsque vous devez effectuer la même tâche avec des entrées différentes ou fournir un contexte au modèle pour obtenir des résultats améliorés.