File size: 1,992 Bytes
910ae58
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e4f6727
910ae58
 
 
 
 
 
e4f6727
910ae58
 
 
 
 
 
 
 
 
 
 
 
e4f6727
910ae58
 
 
 
 
 
 
 
 
 
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
45
46
47
48
49
50
51
52
53
54
55
56
57
from IPython.display import Image, display
from langgraph.graph import StateGraph, END, START
from langgraph.graph.state import CompiledStateGraph
from graph import State, Nodes, Edges


class GraphBuilder:
    def __init__(self):
        """
        Initializes the GraphBuilder.
        """
        self.nodes = Nodes()
        self.edges = Edges()
        self.compiled_graph = None
        
    def build_agent_graph(self) -> CompiledStateGraph:
        """Build and return the agent graph."""
        graph = StateGraph(State)
        
        graph.add_node("manager", self.nodes.manager_node)
        graph.add_node("final_answer", self.nodes.final_answer_node)
        graph.add_node("auditor", self.nodes.auditor_node)
        graph.add_node("solver", self.nodes.solver_node)
        graph.add_node("researcher", self.nodes.researcher_node)
        graph.add_node("reasoner", self.nodes.reasoner_node)
        graph.add_node("viewer", self.nodes.viewer_node)
        
        graph.add_edge(START, "manager")
        graph.add_edge("final_answer", END)
        graph.add_edge("auditor", "manager")
        graph.add_edge("researcher", "solver")
        graph.add_edge("reasoner", "solver")
        graph.add_edge("viewer", "solver")

        graph.add_conditional_edges(
            "manager",
            self.edges.manager_edge,
            {
                "solver": "solver", "auditor": "auditor", "final_answer": "final_answer"
            }
        )
        graph.add_conditional_edges(
            "solver",
            self.edges.solver_edge,
            {
                "manager": "manager", "researcher": "researcher", "reasoner": "reasoner", "viewer": "viewer"
            }
        )
        
        return graph.compile()

    def display_graph(self):
        if self.compiled_graph is None:
            raise ValueError("Graph has not been compiled yet. Call build_agent_graph() first.")

        display(Image(self.compiled_graph.get_graph().draw_mermaid_png()))