Spaces:
Running
Running
File size: 1,527 Bytes
b1d65a7 e8cbb38 b1d65a7 e8cbb38 b1d65a7 e8cbb38 b1d65a7 e8cbb38 b1d65a7 e8cbb38 b1d65a7 e8cbb38 b1d65a7 e8cbb38 b1d65a7 e8cbb38 b1d65a7 | 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 | from langgraph.graph import StateGraph, END
from app.graph.state import GraphState
from app.graph.nodes.router import router_node
from app.graph.nodes.rag_agent import rag_agent_node
from app.graph.nodes.synthesizer import synthesizer_node
from app.graph.nodes.evaluator import evaluator_node
from app.graph.nodes.general_agent import general_agent_node
from app.graph.nodes.hybrid_agent import hybrid_agent_node
def route_decision(state):
return state["route"]
def build_graph():
builder = StateGraph(GraphState)
# nodes
builder.add_node("router", router_node)
builder.add_node("synthesizer", synthesizer_node)
builder.add_node("evaluator", evaluator_node)
builder.add_node("rag_agent", rag_agent_node)
builder.add_node("general_agent", general_agent_node)
builder.add_node("hybrid_agent", hybrid_agent_node)
# edges
builder.set_entry_point("router")
builder.add_conditional_edges(
"router",
route_decision,
{
"rag": "rag_agent",
"hybrid": "hybrid_agent",
"general": "general_agent"
}
)
# ✅ both paths merge at synthesizer
builder.add_edge("rag_agent", "synthesizer")
builder.add_edge("hybrid_agent", "synthesizer")
builder.add_edge("general_agent", "synthesizer")
# ✅ synthesizer → evaluator → end
builder.add_edge("synthesizer", "evaluator")
builder.add_edge("evaluator", END)
return builder.compile() |