Упражнение. Предоставление подсказок контекста
В этом упражнении вы используете журнал бесед для предоставления контекста большой языковой модели (LLM). Вы также настраиваете код таким образом, чтобы пользователь продолжал беседу, как и реальный чат-бот. Приступим.
Измените код, чтобы использовать
do
-while
цикл для принятия входных данных пользователя:string input; do { Console.WriteLine("What would you like to do?"); input = Console.ReadLine(); // ... } while (!string.IsNullOrWhiteSpace(input));
Теперь вы можете продолжать беседу, пока пользователь не введет пустую строку.
Зафиксируйте сведения о поездке пользователя, изменив ситуацию
SuggestDestinations
:case "SuggestDestinations": chatHistory.AppendLine("User:" + input); var recommendations = await kernel.InvokePromptAsync(input!); Console.WriteLine(recommendations); break;
Используйте сведения о поездке
SuggestActivities
в случае со следующим кодом:case "SuggestActivities": var chatSummary = await kernel.InvokeAsync( "ConversationSummaryPlugin", "SummarizeConversation", new() {{ "input", chatHistory.ToString() }}); break;
В этом коде используется встроенная
SummarizeConversation
функция для сводки чата с пользователем. Далее рассмотрим сводку, чтобы предложить действия в месте назначения.Расширьте случай с помощью следующего
SuggestActivities
кода: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;
В этом коде вы добавляете
input
иchatSummary
в качестве аргументов ядра. Затем ядро вызывает запрос и направляет его в подключаемыйSuggestActivities
модуль. Вы также добавляете входные данные пользователя и ответ помощник в журнал чата и отображает результаты. Затем необходимо добавить переменную в подключаемыйchatSummary
SuggestActivities
модуль.Перейдите в раздел "Запросы","Предложение"/config.json и откройте файл в Visual Studio Code
В разделе
input_variables
добавьте переменную для журнала чата:"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 } ]
Перейдите в раздел "Запросы", "Предложить активацию"/skprompt.txt и откройте файл
Добавьте запрос на использование журнала чата:
You are an experienced travel agent. You are helpful, creative, and very friendly. Consider the traveler's background: {{$history}}
Оставьте оставшуюся часть запроса как есть. Теперь подключаемый модуль использует журнал чата для предоставления контекста LLM.
Проверьте свою работу
В этой задаче вы запустите приложение и убедитесь, что код работает правильно.
Сравните обновленные варианты переключения со следующим кодом:
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;
Введите в терминале
dotnet run
. При появлении запроса введите текст, аналогичный следующему:What would you like to do? How much is 60 USD in new zealand dollars?
Вы должны получить некоторые выходные данные, аналогичные следующему:
$60 USD is approximately $97.88 in New Zealand Dollars (NZD) What would you like to do?
Введите запрос на предложения назначения с некоторыми подсказками контекста, например:
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?
Вы должны получить некоторые выходные данные с рекомендациями о доступных назначениях.
Введите запрос на предложения действий, например:
What would you like to do? What are some things to do in Barcelona?
Вы должны получить рекомендации, которые соответствуют предыдущему контексту, например, доступные действия в Барселоне, как показано ниже:
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.
Примечание.
Если ваш код не создает ожидаемые выходные данные, можно просмотреть код в папке решения .
Вы можете продолжать тестировать приложение с различными запросами и подсказками контекста. Отличная работа! Вы успешно предоставили подсказки контекста llM и отрегулировали код, чтобы разрешить пользователю продолжить беседу.