Spaces:
Sleeping
Sleeping
File size: 1,322 Bytes
ebb8326 |
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 |
"""LangGraph definition for the RAG pipeline."""
from langgraph.graph import END, StateGraph
from src.state import GraphState
from src.nodes.logic import logic_solver_node
from src.nodes.rag import knowledge_rag_node
from src.nodes.router import route_question, router_node
from src.nodes.direct import direct_answer_node
def build_graph() -> StateGraph:
"""Build and compile the LangGraph pipeline."""
workflow = StateGraph(GraphState)
workflow.add_node("router", router_node)
workflow.add_node("knowledge_rag", knowledge_rag_node)
workflow.add_node("logic_solver", logic_solver_node)
workflow.add_node("direct_answer", direct_answer_node)
workflow.set_entry_point("router")
workflow.add_conditional_edges(
"router",
route_question,
{
"knowledge_rag": "knowledge_rag",
"logic_solver": "logic_solver",
"direct_answer": "direct_answer",
"__end__": END,
},
)
workflow.add_edge("knowledge_rag", END)
workflow.add_edge("logic_solver", END)
workflow.add_edge("direct_answer", END)
return workflow.compile()
graph = None
def get_graph():
"""Get or create the compiled graph singleton."""
global graph
if graph is None:
graph = build_graph()
return graph |