Exercice – Fournir des indicateurs de contexte
Dans cet exercice, vous utilisez l’historique des conversations pour fournir un contexte au modèle de langage volumineux (LLM). Vous ajustez également le code afin qu’il permette à l’utilisateur de poursuivre la conversation, tout comme un vrai chatbot. C’est parti !
Modifiez le code pour utiliser une boucle
do
-while
pour accepter l’entrée de l’utilisateur :string input; do { Console.WriteLine("What would you like to do?"); input = Console.ReadLine(); // ... } while (!string.IsNullOrWhiteSpace(input));
Vous pouvez maintenant poursuivre la conversation jusqu’à ce que l’utilisateur entre une ligne vide.
Capturez des détails sur le voyage de l’utilisateur en modifiant le cas
SuggestDestinations
:case "SuggestDestinations": chatHistory.AppendLine("User:" + input); var recommendations = await kernel.InvokePromptAsync(input!); Console.WriteLine(recommendations); break;
Utilisez les détails du voyage dans le cas
SuggestActivities
avec le code suivant :case "SuggestActivities": var chatSummary = await kernel.InvokeAsync( "ConversationSummaryPlugin", "SummarizeConversation", new() {{ "input", chatHistory.ToString() }}); break;
Dans ce code, vous utilisez la fonction intégrée
SummarizeConversation
pour résumer la conversation avec l’utilisateur. Ensuite, utilisons le résumé pour suggérer des activités à la destination.Étendez le cas
SuggestActivities
avec le code suivant :var activities = await kernel.InvokePromptAsync( input, new () { {"input", input}, {"history", chatSummary}, {"ToolCallBehavior", ToolCallBehavior.AutoInvokeKernelFunctions} }); chatHistory.AppendLine("User:" + input); chatHistory.AppendLine("Assistant:" + activities.ToString()); Console.WriteLine(activities); break;
Dans ce code, vous ajoutez
input
etchatSummary
en tant qu’arguments de noyau. Ensuite, le noyau appelle l’invite et l’achemine vers le plug-inSuggestActivities
. Vous ajoutez également l’entrée utilisateur et la réponse de l’Assistant à l’historique des conversations et affichez les résultats. Ensuite, vous devez ajouter la variablechatSummary
au plug-inSuggestActivities
.Accédez à Prompts/SuggestActivities/config.json et ouvrez le fichier dans Visual Studio Code
Sous
input_variables
, ajoutez une variable pour l’historique des conversations :"input_variables": [ { "name": "history", "description": "Some background information about the user", "required": false }, { "name": "destination", "description": "The destination a user wants to visit", "required": true } ]
Accédez à Prompts/SuggestActivities/skprompt.txt et ouvrez le fichier
Ajoutez une invite pour utiliser l’historique des conversations :
You are an experienced travel agent. You are helpful, creative, and very friendly. Consider the traveler's background: {{$history}}
Laissez le reste de l’invite en l’état. Maintenant, le plug-in utilise l’historique des conversations pour fournir un contexte au LLM.
Vérifier votre travail
Dans cette tâche, vous exécutez votre application et vous vérifiez que le code fonctionne correctement.
Comparez vos cas de commutateur mis à jour au code suivant :
case "SuggestDestinations": chatHistory.AppendLine("User:" + input); var recommendations = await kernel.InvokePromptAsync(input!); Console.WriteLine(recommendations); break; case "SuggestActivities": var chatSummary = await kernel.InvokeAsync( "ConversationSummaryPlugin", "SummarizeConversation", new() {{ "input", chatHistory.ToString() }}); var activities = await kernel.InvokePromptAsync( input!, new () { {"input", input}, {"history", chatSummary}, {"ToolCallBehavior", ToolCallBehavior.AutoInvokeKernelFunctions} }); chatHistory.AppendLine("User:" + input); chatHistory.AppendLine("Assistant:" + activities.ToString()); Console.WriteLine(activities); break;
Entrez
dotnet run
dans le terminal. Lorsque vous y êtes invité, entrez du texte similaire à ce qui suit :What would you like to do? How much is 60 USD in new zealand dollars?
La sortie devrait ressembler à ce qui suit :
$60 USD is approximately $97.88 in New Zealand Dollars (NZD) What would you like to do?
Entrez une invite pour les suggestions de destination avec des indicateurs de contexte, par exemple :
What would you like to do? I'm planning an anniversary trip with my spouse, but they are currently using a wheelchair and accessibility is a must. What are some destinations that would be romantic for us?
Vous devez recevoir une sortie avec des recommandations de destinations accessibles.
Entrez une invite pour les suggestions d’activité, par exemple :
What would you like to do? What are some things to do in Barcelona?
Vous devez recevoir des recommandations qui s’inscrivent dans le contexte précédent, par exemple, des activités accessibles à Barcelone comme suit :
1. Visit the iconic Sagrada Família: This breathtaking basilica is an iconic symbol of Barcelona's architecture and is known for its unique design by Antoni Gaudí. 2. Explore Park Güell: Another masterpiece by Gaudí, this park offers stunning panoramic views of the city, intricate mosaic work, and whimsical architectural elements. 3. Visit the Picasso Museum: Explore the extensive collection of artworks by the iconic painter Pablo Picasso, showcasing his different periods and styles.
Remarque
Si votre code ne produit pas le résultat attendu, vous pouvez le passer en revue dans le dossier Solution.
Vous pouvez continuer à tester l’application avec différentes invites et différents indicateurs de contexte. Bon travail ! Vous avez fourni des indicateurs de contexte au LLM et ajusté le code pour permettre à l’utilisateur de poursuivre la conversation.