from langgraph.graph import StateGraph, END from graph.state import GraphState from graph.retrieve import retrieve from graph.grade_documents import grade_documents from graph.rewrite_query import rewrite_query from graph.web_search import web_search from graph.generate import generate workflow = StateGraph(GraphState) workflow.add_node("retrieve", retrieve) workflow.add_node("grade", grade_documents) workflow.add_node("rewrite", rewrite_query) workflow.add_node("web", web_search) workflow.add_node("generate", generate) workflow.set_entry_point("retrieve") workflow.add_edge( "retrieve", "grade" ) def route(state): if state["route"] == "local": return "generate" return "rewrite" workflow.add_conditional_edges( "grade", route, { "generate": "generate", "rewrite": "rewrite" } ) workflow.add_edge( "rewrite", "web" ) workflow.add_edge( "web", "generate" ) workflow.add_edge( "generate", END ) app = workflow.compile()