Final_Assignment_Template / graph_builder.py
24Arys11's picture
bugfixing; fixed toolbox; isolated [Base|AI|Human]Message crap logic to the agent interface; implemented tests
e4f6727
raw
history blame
1.99 kB
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()))