File size: 1,079 Bytes
d9d3b1d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from langgraph.graph import StateGraph, END
from agent.state import ResearchState
from agent.nodes.reader import reader_node
from agent.nodes.search import search_node
from agent.nodes.planner import planner_node
from agent.nodes.synthesizer import synthesizer_node
from agent.nodes.reflection import reflection_node, should_continue

# Create the graph
graph = StateGraph(ResearchState)

# Add all nodes
graph.add_node("planner", planner_node)
graph.add_node("search", search_node)
graph.add_node("reader", reader_node)
graph.add_node("synthesizer", synthesizer_node)
graph.add_node("reflection", reflection_node)

# Add edges (flow between nodes)
graph.set_entry_point("planner")
graph.add_edge("planner", "search")
graph.add_edge("search", "reader")
graph.add_edge("reader", "synthesizer")
graph.add_edge("synthesizer", "reflection")

# Conditional edge - reflection either ends or loops back
graph.add_conditional_edges(
    "reflection",
    should_continue,
    {
        "search": "search",  # loop back
        "END": END           # finish
    }
)

app = graph.compile()