-
Notifications
You must be signed in to change notification settings - Fork 359
[BUG] 在二次生成sql的过程中,后续SQL校验节点使用的sql语句一直是第一次的sql,而不是后续生成的sql #17
Description
Is there an existing issue for this?
- I have searched the existing issues
Current Behavior
如题,
在SqlGenerateDispatcher的apply方法去除掉sql是新的sql语句,String sqlGenerateOutput = (String) state.value(SQL_GENERATE_OUTPUT).orElseThrow();
logger.info("SQL 生成结果: {}", sqlGenerateOutput);
但是在校验节点SemanticConsistencyNode取出的sqlquery一直是第一次的sql语句:
ExecutionStep executionStep = getCurrentExecutionStep(state);
Integer currentStep = getCurrentStepNumber(state);
ExecutionStep.ToolParameters toolParameters = executionStep.getToolParameters();
String sqlQuery = toolParameters.getSqlQuery();
logger.info("Starting semantic consistency validation - SQL: {}", sqlQuery);
logger.info("Step description: {}", toolParameters.getDescription());
日志如下:
Semantic consistency validation failed, starting to regenerate SQL
2025-09-25T14:31:21.733+08:00 INFO 9408 --- [oundedElastic-3] c.alibaba.cloud.ai.node.SqlGenerateNode : 开始增强SQL生成流程 - 原始SQL: SELECT city, COUNT() AS card_count FROM list WHERE province = '浙江省' AND time >= '2024-09-25' AND time <= '2025-09-25' GROUP BY city ORDER BY card_count DESC;, 异常信息: 不通过,并附具体原因:省份字段值不带“省”字,但SQL中使用了'浙江省'作为过滤条件,应改为'浙江',否则无法匹配到任何数据,导致结果错误。
2025-09-25T14:31:21.733+08:00 INFO 9408 --- [oundedElastic-3] c.alibaba.cloud.ai.node.SqlGenerateNode : 开始第1轮SQL优化
2025-09-25T14:31:21.733+08:00 INFO 9408 --- [oundedElastic-3] c.a.c.ai.service.base.BaseNl2SqlService : Generating SQL for query: {"description":"查询浙江省在2024-09-25至2025-09-25期间各城市的在职员工数量,并按数量降序排列。","summary_and_recommendations":null,"sql_query":"SELECT city, COUNT() AS card_count FROM list WHERE province = '浙江省' AND time >= '2024-09-25' AND time <= '2025-09-25' GROUP BY city ORDER BY card_count DESC;","instruction":null,"input_data_description":null}, hasExistingSql: true
2025-09-25T14:31:34.029+08:00 INFO 9408 --- [oundedElastic-3] c.a.c.ai.service.base.BaseNl2SqlService : SQL error fixing completed
2025-09-25T14:31:34.030+08:00 INFO 9408 --- [oundedElastic-3] c.a.c.ai.service.base.BaseNl2SqlService : Final generated SQL: SELECT city, COUNT(*) AS card_count
FROM namelist
WHERE province = '浙江'
AND type = '在职'
AND time >= '2024-09-25'
AND time <= '2025-09-25'
GROUP BY city
ORDER BY card_count DESC;
2025-09-25T14:31:34.048+08:00 INFO 9408 --- [oundedElastic-3] c.a.c.a.d.SqlGenerateDispatcher : SQL 生成结果: SELECT city, COUNT() AS card_count
FROM list
WHERE province = '浙江'
AND type = '在职'
AND time >= '2024-09-25'
AND time <= '2025-09-25'
GROUP BY city
ORDER BY card_count DESC;
2025-09-25T14:31:34.049+08:00 INFO 9408 --- [oundedElastic-3] c.a.c.a.d.SqlGenerateDispatcher : SQL生成成功,进入SQL校验节点: SQL_VALIDATE_NODE
2025-09-25T14:31:34.099+08:00 INFO 9408 --- [oundedElastic-3] c.a.cloud.ai.node.AbstractPlanBasedNode : Entering SqlExecuteNode node
2025-09-25T14:31:34.104+08:00 INFO 9408 --- [oundedElastic-3] c.alibaba.cloud.ai.node.SqlExecuteNode : Executing SQL query: SELECT city, COUNT() AS card_count FROM list WHERE province = '浙江省' AND time >= '2024-09-25' AND time <= '2025-09-25' GROUP BY city ORDER BY card_count DESC;
2025-09-25T14:31:34.105+08:00 INFO 9408 --- [oundedElastic-3] c.alibaba.cloud.ai.node.SqlExecuteNode : Step description: 查询浙江省在2024-09-25至2025-09-25期间各城市的在职员工数量,并按数量降序排列。
Expected Behavior
No response
Steps To Reproduce
No response
Environment
Spring AI Alibaba DataAgent version(s):Debug logs
No response
Anything else?
No response