from langgraph.graph import END, StateGraph, START from langgraph.checkpoint.memory import MemorySaver from IPython.display import Image, display workflow = StateGraph(GraphState) # Define the nodes workflow.add_node("retrieve", retrieve) # retrieve workflow.add_node("grade_documents", grade_documents) # grade documents workflow.add_node("generate", generate) # generatae workflow.add_node("transform_query", transform_query) # transform_query # Build graph workflow.add_edge(START, "retrieve") workflow.add_edge("retrieve", "grade_documents") workflow.add_conditional_edges( "grade_documents", decide_to_generate, { "transform_query": "transform_query", "generate": "generate", }, ) workflow.add_edge("transform_query", "retrieve") workflow.add_conditional_edges( "generate", grade_generation_v_documents_and_question, { "useful": END, "not supported": "transform_query", "not useful": "transform_query", }, ) # Compile memory = MemorySaver() app = workflow.compile(checkpointer=memory) display(Image(app.get_graph(xray=True).draw_mermaid_png()))