Optimiser les invites d’un modèle de langage
Les invites sont des repères de conversation que vous fournissez à de grands modèles de langage (LLM) et qui permettent de mettre en forme des réponses en fonction de vos requêtes ou instructions. Par exemple, vous pouvez inviter des LLM à convertir une phrase de l’anglais vers le français ou pour générer le résumé d’un texte.
Dans l’unité précédente, vous avez créé l’invite en tant que chaîne d’entrée :
string input = @"I'm a vegan in search of new recipes. I love spicy food!
Can you give me a list of breakfast recipes that are vegan friendly?";
Les invites impliquent l’élaboration d’instructions enrichies claires et contextuelles pour guider le modèle afin de générer une réponse souhaitée. La précision et la clarté sont essentielles pour créer une invite efficace. Il est possible que vous deviez tester et ajuster vos invites pour obtenir des résultats précis.
Astuces pour l’élaboration des invites
Des entrées spécifiques produisent des sorties spécifiques : Les LLM répondent en fonction de l’entrée qu’ils reçoivent. L’élaboration d’invites claires et spécifiques est cruciale pour obtenir la sortie souhaitée.
L’expérimentation est essentielle : Vous devrez peut-être itérer et tester diverses invites pour comprendre comment le modèle interprète et génère des réponses. De petites adaptations peuvent entraîner des changements significatifs dans les résultats.
Le contexte est important : Les LLM considèrent le contexte fourni dans l’invite. Vous devez vérifier que le contexte est bien défini et pertinent pour obtenir des réponses précises et cohérentes.
Gérez l’ambiguïté : Gardez à l’esprit que les LLM peuvent faire face à des demandes ambiguës. Fournissez un contexte ou une structure pour éviter des résultats vagues ou inattendus.
Longueur des invites : Même si les LLM peuvent traiter des invites courtes et longues, vous devriez envisager un compromis entre concision et clarté. Faire des essais avec les longueurs d’invite peut vous permettre de trouver l’équilibre optimal.
Créer des modèles d’invite
Le kit SDK de noyau sémantique prend en charge un langage de création de modèles qui vous permet d’utiliser des expressions et des variables dans vos invites en langage naturel. Cela signifie que vous pouvez créer des invites réutilisables avec différents paramètres d’entrée. Pour incorporer des expressions dans vos invites, le langage de création de modèles utilise des accolades {{...}}
.
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Plugins.Core;
var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(
"your-deployment-name",
"your-endpoint",
"your-api-key",
"deployment-model");
builder.Plugins.AddFromType<ConversationSummaryPlugin>();
var kernel = builder.Build();
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(prompt,
new KernelArguments() {{ "history", history }});
Console.WriteLine(result);
Dans cet exemple, la variable history
est référencée dans l’invite, indiquée par le symbole $
. Lorsque l’invite est appelée, la variable history
est remplacée par la valeur réelle fournie dans le dictionnaire KernelArguments
. Cela vous permet de créer des invites qui peuvent être remplies dynamiquement avec différentes entrées.
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.
La création d’invites réutilisables est particulièrement utile lorsque vous devez effectuer la même tâche avec différentes entrées. Dans l’exercice suivant, vous allez vous entraîner à créer vos propres invites réutilisables à l’aide du kit de développement logiciel (SDK) de noyau sémantique.