Bật hội thoại nhiều lượt với bộ nhớ
Bạn gần như đã sẵn sàng chia sẻ bản cập nhật chatbot với ban giám hiệu! Để học sinh có trải nghiệm mượt mà, điều quan trọng là cho phép các em đặt câu hỏi tiếp theo. Như vậy, nếu câu trả lời đầu tiên của chatbot còn thiếu thông tin, học sinh có thể điều chỉnh câu hỏi thông qua hội thoại. Bây giờ bạn sẽ điều chỉnh hàm streaming của chatbot để hỗ trợ nhiều lượt, in ra cả truy vấn của người dùng và câu trả lời của chatbot. Để bật bộ nhớ, LangGraph sẽ gửi toàn bộ hội thoại tới LLM khi có câu hỏi tiếp theo. Trước tiên, tham số config của bạn đã được thiết lập cho một người dùng:
config = {"configurable": {"thread_id": "1"}}
Bài tập này là một phần của khóa học
Thiết kế Hệ thống Agentic với LangChain
Hướng dẫn bài tập
- Ở mỗi lượt, bắt đầu bằng cách in
querycủa người dùng từ danh sáchqueries. - Duyệt qua
msgvàmetadatabằngapp.stream(), truyềnquerylàmcontentcủaHumanMessagekèmconfig, và nối các giá trịmsg.content. - Để trích xuất phản hồi của chatbot, in
msg.contenttrong khi loại trừ cácmsgđược gắn nhãnHumanMessage, và thêm một dòng mới trước truy vấn tiếp theo.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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)