File size: 1,182 Bytes
006ec78
14ac8e9
006ec78
 
4bc43c8
bc8572b
4bc43c8
 
a232867
4bc43c8
a232867
4bc43c8
bc8572b
4bc43c8
 
bc8572b
4bc43c8
bc8572b
 
4bc43c8
 
006ec78
a232867
4bc43c8
bc8572b
4bc43c8
a232867
006ec78
4bc43c8
 
 
 
bc8572b
4bc43c8
a58fe1f
bc8572b
14ac8e9
 
 
 
 
 
 
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
37
38
39
40
41
42
43
44
from src.langgraphagenticai.state.state import State
from src.langgraphagenticai.logging.logging_utils import logger, log_entry_exit

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

    def process(self, state: State) -> dict:
        """
        Processes the input state and generates a response with tool integration.
        """
        user_input = state["messages"][-1] if state["messages"] else ""
        llm_response = self.llm.invoke([{"role": "user", "content": user_input}])

        # Simulate tool-specific logic
        tools_response = f"Tool integration for: '{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 a response.
            """
            return {"messages": [llm_with_tools.invoke(state["messages"])]}

        return chatbot_node