Spaces:
Sleeping
Sleeping
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())) | |