Spaces:
Sleeping
Sleeping
| 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"], | |
| ) | |