File size: 1,197 Bytes
6846bc6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from src.langgraphagenticai.state.state import State
from src.langgraphagenticai.tools.search_tool import get_tavily_search_tool

class ChatbotWithToolNode:
    """ 
    Chatbot logic enhanced with tool integration
    """
    def __init__(self,model):
        self.llm = model

    def process(self,state:State):
        """ 
        Processes the input state and generates response with the tool integration.
        """
        user_input = state["messages"][-1] if state["messages"] else ""
        llm_response = self.llm.invoke([{"role":"user","content":user_input}])
        
        # Tool invocation
        tool = get_tavily_search_tool()
        tools_response = tool.invoke({"query":user_input})
        return {"messages": [llm_response,tools_response]}
    
    def create_chatbot(self,tools):
        """ 
        Returns a chatbot node function.
        """
        llm_with_tools = self.llm.bind_tools(tools)

        def chatbot_node(state:State):
            """ 
            Chatbot logic for processing the input state and returning the response.
            """
            return {"messages": [llm_with_tools.invoke(state["messages"])]}
        
        return chatbot_node