Tạo một hàm để trả về phản hồi từ LLM
Chatbot của bạn hiện có rất nhiều tool. Tuy vậy, vẫn hữu ích khi gọi LLM trực tiếp khi câu hỏi không liên quan đến bất kỳ tool nào đã được thêm vào chatbot. Giờ bạn sẽ định nghĩa một hàm kiểm tra tin nhắn cuối cùng trong cuộc hội thoại để tìm các lời gọi tool tiềm năng. Nếu không có, chatbot sẽ chỉ dùng LLM để trả lời. Để có thể xử lý cả truy vấn của người dùng lẫn phản hồi của chatbot, các mô-đun sau đã được nhập sẵn để xử lý các kiểu tin nhắn khác nhau.
from langchain_core.messages import AIMessage, HumanMessage
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
- Truy cập tin nhắn cuối cùng từ
statebằng"messages". - Viết câu lệnh điều kiện để kiểm tra xem
last_messagecó phải làAIMessagevà tin nhắn này cũng cótool_calls. - Nếu điều kiện thỏa, trả về
"response"đầu tiên từtool_callslấy từlast_messagetrong trườngcontentcủaAIMessage. - Nếu điều kiện không thỏa, áp dụng
.invoke()lênmodel_with_toolsđể tạo phản hồi, truyền toàn bộ lịch sử hội thoại từstate["messages"].
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.
# Extract the last message from the history
def call_model(state: MessagesState):
____ = ____["____"][____]
# If the last message has tool calls, return the tool's response
if isinstance(____, ____) and ____.____:
# Return only the messages from the tool call
return {"messages": [____(content=____.____[0]["____"])]}
# Otherwise, proceed with a regular LLM response
return {"messages": [____.____(____["____"])]}