Övning – Ange kontexttips
I den här övningen använder du konversationshistoriken för att ge kontext till den stora språkmodellen (LLM). Du kan också justera koden så att användaren kan fortsätta konversationen, precis som en riktig chattrobot. Nu sätter vi igång!
Ändra koden så att den använder en
do
-while
loop för att acceptera användarens indata:string input; do { Console.WriteLine("What would you like to do?"); input = Console.ReadLine(); // ... } while (!string.IsNullOrWhiteSpace(input));
Nu kan du hålla igång konversationen tills användaren anger en tom rad.
Samla in information om användarens resa genom att ändra ärendet
SuggestDestinations
:case "SuggestDestinations": chatHistory.AppendLine("User:" + input); var recommendations = await kernel.InvokePromptAsync(input!); Console.WriteLine(recommendations); break;
Använd reseinformationen i fallet
SuggestActivities
med följande kod:case "SuggestActivities": var chatSummary = await kernel.InvokeAsync( "ConversationSummaryPlugin", "SummarizeConversation", new() {{ "input", chatHistory.ToString() }}); break;
I den här koden använder du den inbyggda
SummarizeConversation
funktionen för att sammanfatta chatten med användaren. Nu ska vi använda sammanfattningen för att föreslå aktiviteter på målet.Utöka ärendet
SuggestActivities
med följande kod: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;
I den här koden lägger du till
input
ochchatSummary
som kernelargument. Sedan anropar kerneln kommandotolken och dirigerar den till plugin-programmetSuggestActivities
. Du lägger också till användarens indata och assistentens svar i chatthistoriken och visar resultatet. Därefter måste du lägga till variabelnchatSummary
i plugin-programmetSuggestActivities
.Gå till Prompts/SuggestActivities/config.json och öppna filen i Visual Studio Code
Under
input_variables
lägger du till en variabel för chatthistoriken:"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 } ]
Gå till Prompts/SuggestActivities/skprompt.txt och öppna filen
Lägg till en uppmaning om att använda chatthistoriken:
You are an experienced travel agent. You are helpful, creative, and very friendly. Consider the traveler's background: {{$history}}
Lämna resten av prompten som den är. Nu använder plugin-programmet chatthistoriken för att ge kontext till LLM.
Kontrollera ditt arbete
I den här uppgiften kör du programmet och kontrollerar att koden fungerar korrekt.
Jämför dina uppdaterade växelfall med följande kod:
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;
Ange
dotnet run
i terminalen. När du uppmanas till det anger du text som liknar följande:What would you like to do? How much is 60 USD in new zealand dollars?
Du bör få utdata som liknar följande:
$60 USD is approximately $97.88 in New Zealand Dollars (NZD) What would you like to do?
Ange en fråga om målförslag med några kontexttips, till exempel:
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?
Du bör få utdata med rekommendationer för tillgängliga mål.
Ange en uppmaning om aktivitetsförslag, till exempel:
What would you like to do? What are some things to do in Barcelona?
Du bör få rekommendationer som passar i den tidigare kontexten, till exempel tillgängliga aktiviteter i Barcelona som liknar följande:
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.
Kommentar
Om koden inte ger utdata som du förväntade dig kan du granska koden i mappen Lösning .
Du kan fortsätta att testa programmet med olika frågor och kontexttips. Bra jobbat! Du har angett sammanhangssignaler till LLM och justerat koden så att användaren kan fortsätta konversationen.