|
|
from langgraph.graph import StateGraph, END
|
|
|
from src.agenticRAG.models.state import AgentState
|
|
|
from src.agenticRAG.nodes.query_upgrader import query_upgrader_node
|
|
|
from src.agenticRAG.nodes.query_router import query_router_node
|
|
|
from src.agenticRAG.nodes.rag_node import rag_node
|
|
|
from src.agenticRAG.nodes.web_search_node import web_search_node
|
|
|
from src.agenticRAG.nodes.direct_llm_node import direct_llm_node
|
|
|
from src.agenticRAG.graph.router import route_query
|
|
|
|
|
|
class GraphBuilder:
|
|
|
"""Builder for the AgenticRAG graph"""
|
|
|
|
|
|
@staticmethod
|
|
|
def create_graph():
|
|
|
"""Create the LangGraph workflow"""
|
|
|
|
|
|
|
|
|
workflow = StateGraph(AgentState)
|
|
|
|
|
|
|
|
|
workflow.add_node("query_upgrader", query_upgrader_node)
|
|
|
workflow.add_node("query_router", query_router_node)
|
|
|
workflow.add_node("rag_path", rag_node)
|
|
|
workflow.add_node("web_search", web_search_node)
|
|
|
workflow.add_node("direct_llm", direct_llm_node)
|
|
|
|
|
|
|
|
|
workflow.set_entry_point("query_upgrader")
|
|
|
|
|
|
|
|
|
workflow.add_edge("query_upgrader", "query_router")
|
|
|
|
|
|
|
|
|
workflow.add_conditional_edges(
|
|
|
"query_router",
|
|
|
route_query,
|
|
|
{
|
|
|
"rag_path": "rag_path",
|
|
|
"web_search": "web_search",
|
|
|
"direct_llm": "direct_llm"
|
|
|
}
|
|
|
)
|
|
|
|
|
|
|
|
|
workflow.add_edge("rag_path", END)
|
|
|
workflow.add_edge("web_search", END)
|
|
|
workflow.add_edge("direct_llm", END)
|
|
|
|
|
|
|
|
|
return workflow.compile() |