Exercício - Forneça pistas de contexto
Neste exercício, você usa o histórico de conversas para fornecer contexto ao modelo de linguagem grande (LLM). Você também ajusta o código para que ele permita que o usuário continue a conversa, assim como um chatbot real. Vamos começar!
Modifique o código para usar um
do
-while
loop para aceitar a entrada do usuário:string input; do { Console.WriteLine("What would you like to do?"); input = Console.ReadLine(); // ... } while (!string.IsNullOrWhiteSpace(input));
Agora você pode manter a conversa até que o usuário insira uma linha em branco.
Capture detalhes sobre a viagem do usuário modificando o
SuggestDestinations
caso:case "SuggestDestinations": chatHistory.AppendLine("User:" + input); var recommendations = await kernel.InvokePromptAsync(input!); Console.WriteLine(recommendations); break;
Use os detalhes da viagem no caso com o
SuggestActivities
seguinte código:case "SuggestActivities": var chatSummary = await kernel.InvokeAsync( "ConversationSummaryPlugin", "SummarizeConversation", new() {{ "input", chatHistory.ToString() }}); break;
Neste código, você usa a função interna para resumir o bate-papo
SummarizeConversation
com o usuário. Em seguida, vamos usar o resumo para sugerir atividades no destino.Estenda o
SuggestActivities
caso com o seguinte código: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;
Neste código, você adiciona
input
echatSummary
como argumentos do kernel. Em seguida, o kernel invoca o prompt e o encaminha para oSuggestActivities
plugin. Você também anexa a entrada do usuário e a resposta do assistente ao histórico de bate-papo e exibe os resultados. Em seguida, você precisa adicionar achatSummary
variável aoSuggestActivities
plugin.Navegue até Prompts/SuggestActivities/config.json e abra o arquivo no Visual Studio Code
Em
input_variables
, adicione uma variável para o histórico de bate-papo:"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 } ]
Navegue até Prompts/SuggestActivities/skprompt.txt e abra o arquivo
Adicione um prompt para usar o histórico de bate-papo:
You are an experienced travel agent. You are helpful, creative, and very friendly. Consider the traveler's background: {{$history}}
Deixe o resto do prompt como está. Agora, o plugin usa o histórico de bate-papo para fornecer contexto ao LLM.
Verifique o seu trabalho
Nesta tarefa, você executa seu aplicativo e verifica se o código está funcionando corretamente.
Compare seus casos de switch atualizados com o seguinte código:
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;
Introduza
dotnet run
no terminal. Quando solicitado, insira algum texto semelhante ao seguinte:What would you like to do? How much is 60 USD in new zealand dollars?
Você deve receber alguma saída semelhante à seguinte:
$60 USD is approximately $97.88 in New Zealand Dollars (NZD) What would you like to do?
Insira um prompt para sugestões de destino com algumas dicas de contexto, por exemplo:
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?
Você deve receber alguma saída com recomendações de destinos acessíveis.
Insira um prompt para sugestões de atividades, por exemplo:
What would you like to do? What are some things to do in Barcelona?
Você deve receber recomendações que se encaixam no contexto anterior, por exemplo, atividades acessíveis em Barcelona semelhantes às seguintes:
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.
Nota
Se o código não produzir a saída esperada, você poderá revisar o código na pasta Solução .
Você pode continuar a testar o aplicativo com diferentes prompts e pistas de contexto. Ótimo trabalho! Você forneceu com sucesso dicas de contexto para o LLM e ajustou o código para permitir que o usuário continue a conversa.