-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgraph.py
More file actions
49 lines (42 loc) · 1.45 KB
/
Copy pathgraph.py
File metadata and controls
49 lines (42 loc) · 1.45 KB
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
48
49
"""
LangGraph graph definition for ReasonGraph.
Wires all nodes and edges into a single compiled graph.
"""
from langgraph.graph import END, START, StateGraph
from app.graph.state import GraphState
from app.nodes.generator import generator_node
from app.nodes.loop_controller import increment_search_node, loop_controller
from app.nodes.query_optimizer import query_optimizer_node
from app.nodes.retriever import retriever_node
from app.nodes.verifier import verifier_node
builder = StateGraph(GraphState)
# Nodes
builder.add_node("query_optimizer", query_optimizer_node)
builder.add_node("retriever", retriever_node)
builder.add_node("generator", generator_node)
builder.add_node("verifier", verifier_node)
builder.add_node("increment_search", increment_search_node)
builder.add_node(
"graceful_failure",
lambda state: {
"draft_answer": "Available evidence does not sufficiently support a reliable answer.",
"verifier_passed": False,
},
)
# Edges
builder.add_edge(START, "query_optimizer")
builder.add_edge("query_optimizer", "retriever")
builder.add_edge("retriever", "generator")
builder.add_edge("generator", "verifier")
builder.add_conditional_edges(
"verifier",
loop_controller,
{
"end": END,
"increment_search": "increment_search",
"graceful_failure": "graceful_failure",
},
)
builder.add_edge("increment_search", "query_optimizer")
builder.add_edge("graceful_failure", END)
graph = builder.compile()