Створіть функцію для повернення відповіді LLM
Ваш чат-бот тепер має чимало інструментів. Однак корисно викликати LLM і самостійно, коли запит не стосується жодного з доданих до чат-бота інструментів. Тепер ви визначите функцію, яка перевіряє останнє повідомлення в розмові на наявність можливих викликів інструментів. Якщо їх немає, чат-бот просто використає LLM, щоб повернути відповідь. Щоб обробляти і запити користувача, і відповіді чат-бота, для вас імпортовано такі модулі для роботи з різними типами повідомлень.
from langchain_core.messages import AIMessage, HumanMessage
Ця вправа є частиною курсу
Проєктування агентних систем з LangChain
Інструкції до вправи
- Отримайте останнє повідомлення зі
state, використовуючи"messages". - Напишіть умовний вираз, щоб перевірити, чи є
last_messageекземпляромAIMessageі чи містить це повідомленняtool_calls. - Якщо умова виконується, поверніть перший
"response"зtool_calls, взятий зlast_message, у поліcontentоб'єктаAIMessage. - Якщо умова не виконується, застосуйте
.invoke()доmodel_with_tools, щоб згенерувати відповідь, передавши повну історію розмови зstate["messages"].
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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": [____.____(____["____"])]}