| | |
| | from src.nodes import (query_input, complexity_assessor, planner, agent, simple_executor, critic_evaluator, replanner, enhanced_finalizer) |
| | from src.state import AgentState |
| | from langgraph.graph import StateGraph, END |
| | from src.nodes import should_continue, should_use_planning, should_replan, should_use_tools_simple_executor |
| | from langgraph.checkpoint.memory import MemorySaver |
| | from src.config import DEBUGGING_TOOL_NODE |
| |
|
| | def build_workflow(checkpointer=None) -> StateGraph[AgentState]: |
| | builder = StateGraph(AgentState) |
| | builder.add_node("INPUT", query_input) |
| | builder.add_node("COMPLEXITY_ASSESSOR", complexity_assessor) |
| | builder.add_node("PLANNING", planner) |
| | builder.add_node("AGENT", agent) |
| | builder.add_node("TOOLS", DEBUGGING_TOOL_NODE) |
| | builder.add_node("TOOLS_SIMPLE", DEBUGGING_TOOL_NODE) |
| | builder.add_node("FINALIZER", enhanced_finalizer) |
| | builder.add_node("SIMPLE_EXECUTOR", simple_executor) |
| | builder.add_node("CRITIC", critic_evaluator) |
| | builder.add_node("REPLANNER", replanner) |
| |
|
| |
|
| | builder.set_entry_point("INPUT") |
| | builder.add_edge("INPUT", "COMPLEXITY_ASSESSOR") |
| |
|
| | builder.add_conditional_edges( |
| | "COMPLEXITY_ASSESSOR", |
| | should_use_planning, |
| | {"simple_executor": "SIMPLE_EXECUTOR", "planner": "PLANNING"}, |
| | ) |
| | builder.add_conditional_edges( |
| | "SIMPLE_EXECUTOR", |
| | should_use_tools_simple_executor, |
| | {"tools": "TOOLS_SIMPLE", "final_answer": "FINALIZER"}, |
| | ) |
| | |
| | builder.add_edge("TOOLS_SIMPLE", "FINALIZER") |
| |
|
| | builder.add_edge("PLANNING", "AGENT") |
| | builder.add_conditional_edges( |
| | "AGENT", |
| | should_continue, |
| | {"tools": "TOOLS", "agent": "AGENT", "final_answer": "FINALIZER"}, |
| | ) |
| | builder.add_edge("TOOLS", "AGENT") |
| | builder.add_edge("FINALIZER", "CRITIC") |
| | builder.add_conditional_edges( |
| | "CRITIC", |
| | should_replan, |
| | {"end": END, "replan": "REPLANNER"}, |
| | ) |
| | builder.add_edge("REPLANNER", "AGENT") |
| |
|
| | if checkpointer: |
| | system = builder.compile(checkpointer=checkpointer) |
| | else: |
| | system = builder.compile() |
| | return system |