Đặt câu hỏi về lịch sử hội thoại
Với một ReAct agent cơ bản trong LangChain, bạn có thể đặt câu hỏi tiếp theo bằng cách lưu lịch sử hội thoại của agent. Vì LLM có quyền truy cập vào tất cả các tin nhắn trước đó, bạn có thể đặt câu hỏi mới và agent sẽ sử dụng toàn bộ ngữ cảnh để phản hồi.
Bây giờ bạn sẽ hỏi một câu tiếp nối về các cạnh của một tam giác khác.
Để sử dụng được các lớp HumanMessage và AIMessage, các module sau đã được nhập sẵn cho bạn: HumanMessage, AIMessage.
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
- Gán câu hỏi ngôn ngữ tự nhiên đã cho vào
new_query. - Gọi đối tượng
app, truyền vào toàn bộ các tin nhắn, bao gồmmessage_historyvànew_query. - Dùng list comprehension để trích xuất các tin nhắn từ
response["messages"]có nhãnHumanMessagehoặcAIMessage. - Truyền truy vấn mới làm input và in ra các tin nhắn đã trích xuất bằng cách truyền các lớp tin nhắn vào
"agent_output".
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.
message_history = response["messages"]
____ = "What about one with sides 12 and 14?"
# Invoke the app with the full message history
response = app.____({"messages": ____ + [("human", ____)]})
# Extract the human and AI messages from the result
filtered_messages = [msg for msg in ____["____"] if isinstance(msg, (____, ____)) and msg.content.strip()]
# Pass the new query as input and print the final outputs
print({
"user_input": ____,
"agent_output": [f"{msg.____.____}: {msg.content}" for msg in ____]
})