File size: 1,346 Bytes
47203d3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from langgraph.graph import END, StateGraph

from backend.graph.nodes import (
    ask_question,
    counter_question,
    evaluate_answer,
    generate_report,
    route_after_evaluation,
    summarize,
)
from backend.graph.state import InterviewState


def build_graph(checkpointer):
    """Compile the interview graph with the given checkpointer. Call once at startup."""
    builder = StateGraph(InterviewState)

    builder.add_node("ask_question", ask_question)
    builder.add_node("evaluate_answer", evaluate_answer)
    builder.add_node("counter_question", counter_question)
    builder.add_node("summarize", summarize)
    builder.add_node("generate_report", generate_report)

    builder.set_entry_point("ask_question")

    builder.add_edge("ask_question", "evaluate_answer")

    builder.add_conditional_edges(
        "evaluate_answer",
        route_after_evaluation,
        {
            "counter": "counter_question",
            "next_question": "ask_question",
            "summarize": "summarize",
            "end": "generate_report",
        },
    )

    builder.add_edge("counter_question", "evaluate_answer")
    builder.add_edge("summarize", "ask_question")
    builder.add_edge("generate_report", END)

    return builder.compile(
        checkpointer=checkpointer,
        interrupt_before=["evaluate_answer"],
    )