НачатьНачать бесплатно

Создание функции для возврата ответа 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": [____.____(____["____"])]}
Редактировать и запускать код