Skip to content

[BUG] 在二次生成sql的过程中,后续SQL校验节点使用的sql语句一直是第一次的sql,而不是后续生成的sql #17

@iodeer

Description

@iodeer

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

Metadata

Metadata

Labels

bugSomething isn't working

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions