Увімкніть багатореплікову розмову з пам'яттю
Ви майже готові поділитися оновленням чатбота з адміністрацією школи! Щоб студенти мали зручний досвід навчання, важливо дозволити їм ставити додаткові запитання. Так, якщо якоїсь інформації бракує в першій відповіді чатбота, студенти зможуть уточнити свої запитання під час розмови. Тепер ви адаптуєте функцію стримінгу вашого чатбота, щоб підтримати кілька кроків діалогу, виводячи і запит користувача, і відповідь чатбота. Щоб увімкнути пам'ять, LangGraph надсилатиме повну розмову до LLM, коли ставляться додаткові запитання. Для початку параметри config уже задані для одного користувача:
config = {"configurable": {"thread_id": "1"}}
Ця вправа є частиною курсу
Проєктування агентних систем з LangChain
Інструкції до вправи
- Для кожного кроку спочатку виведіть
queryкористувача зі спискуqueries. - Ітеруйте через
msgіmetadata, використовуючиapp.stream(), передаючиqueryякcontentоб'єктаHumanMessageразом ізconfig, і об'єднайте значенняmsg.content. - Щоб отримати відповіді чатбота, виводьте
msg.content, виключаючи будь-якіmsgз міткоюHumanMessage, додаючи новий рядок перед наступним запитом.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# Print the user query first for every interaction
def user_agent_multiturn(queries):
for ____ in ____:
print(f"User: {____}")
# Stream through messages corresponding to queries, excluding metadata
print("Agent: " + "".join(____.____ for ____, ____ in app.____(
{"messages": [____(____=_____)]}, config, stream_mode="messages")
# Filter out the human messages to print agent messages
if ____.____ and not isinstance(____, ____)) + "____")
queries = ["Is `stressed desserts?` a palindrome?", "What about the word `kayak`?",
"What happened on the May 8th, 1945?", "What about 9 November 1989?"]
user_agent_multiturn(queries)