retry_handler and ASTPlannerNode in the SQL agent subgraph.RefinerNodepackages/nl2sql/src/nl2sql/pipeline/nodes/refiner/node.pyPLAN_FEEDBACK warnings to drive retry.Upstream:
retry_handlerDownstream:
ASTPlannerNodeTrigger conditions:
flowchart LR
RetryHandler[retry_handler] --> Refiner[RefinerNode] --> Planner[ASTPlannerNode]
From SubgraphExecutionState:
errorsreasoningrelevant_tablesast_planner_response.plan (optional)sub_query.intentValidation performed:
MISSING_LLM.Mutations to SubgraphExecutionState:
refiner_response (RefinerResponse)errors (includes PLAN_FEEDBACK warning)reasoningSide effects:
MISSING_LLM and stop.PLAN_FEEDBACK warning and return RefinerResponse.REFINER_FAILED.Implements a LangGraph node callable:
def __call__(self, state: SubgraphExecutionState) -> Dict[str, Any]
Key contracts:
RefinerResponsePipelineError (PLAN_FEEDBACK, MISSING_LLM, REFINER_FAILED)Emits PipelineError with:
MISSING_LLMPLAN_FEEDBACK (warning)REFINER_FAILEDLogs failures via logger.error.
refinerrefiner via llm.yaml.REFINER_PROMPT for different refinement behavior.build_sql_agent_graph() for alternate retry strategies.packages/nl2sql/src/nl2sql/pipeline/nodes/refiner/node.py