Team Ai
Apppublic

Sam2425/langgraphproject

sourceHugging Faceapache-2.0updated 2y agoView on Hugging Face
0likes
graph_builder.py74 linesDownload Raw Back to graph
1from langgraph.graph import StateGraph, START,END, MessagesState2from langgraph.prebuilt import tools_condition,ToolNode3from langchain_core.prompts import ChatPromptTemplate4from src.langgraphagenticai.state.state import State5from src.langgraphagenticai.nodes.basic_chatbot_node import BasicChatbotNode6from src.langgraphagenticai.nodes.chatbot_with_Tool_node import ChatbotWithToolNode7from src.langgraphagenticai.tools.search_tool import get_tools,create_tool_node8 9 10 11 12class GraphBuilder:13 14    def __init__(self,model):15        self.llm=model16        self.graph_builder=StateGraph(State)17 18    def basic_chatbot_build_graph(self):19        """20        Builds a basic chatbot graph using LangGraph.21        This method initializes a chatbot node using the `BasicChatbotNode` class22        and integrates it into the graph. The chatbot node is set as both the23        entry and exit point of the graph.24        """25        self.basic_chatbot_node=BasicChatbotNode(self.llm)26        self.graph_builder.add_node("chatbot",self.basic_chatbot_node.process)27        self.graph_builder.add_edge(START,"chatbot")28        self.graph_builder.add_edge("chatbot",END)29 30 31    def chatbot_with_tools_build_graph(self):32        """33        Builds an advanced chatbot graph with tool integration.34        This method creates a chatbot graph that includes both a chatbot node35        and a tool node. It defines tools, initializes the chatbot with tool36        capabilities, and sets up conditional and direct edges between nodes.37        The chatbot node is set as the entry point.38        """39        ## Define the tool and tool node40 41        tools=get_tools()42        tool_node=create_tool_node(tools)43 44        ##Define LLM45        llm = self.llm46 47        # Define chatbot node48        obj_chatbot_with_node = ChatbotWithToolNode(llm)49        chatbot_node = obj_chatbot_with_node.create_chatbot(tools)50 51        # Add nodes52        self.graph_builder.add_node("chatbot", chatbot_node)53        self.graph_builder.add_node("tools", tool_node)54 55        # Define conditional and direct edges56        self.graph_builder.add_edge(START,"chatbot")57        self.graph_builder.add_conditional_edges("chatbot", tools_condition)58        self.graph_builder.add_edge("tools","chatbot")59 60 61 62 63    def setup_graph(self, usecase: str):64        """65        Sets up the graph for the selected use case.66        """67        if usecase == "Basic Chatbot":68            self.basic_chatbot_build_graph()69 70        if usecase == "Chatbot with Tool":71            self.chatbot_with_tools_build_graph()72        return self.graph_builder.compile()73 74