问句到SQL · 2024 年 12 月 31 日 · 15 分钟
执行反馈:报错是输入,不是终点
自纠错在 DIN-SQL、MAC-SQL、多种 Agent 框架里都出现。工程上它依赖三件事:能执行、错误信息可读、每次只改一处。连发三版,成功了也不知道哪一处有用。
错误要分类:语法、对象不存在、超时、权限、空结果。对象不存在 → 回描述工具。超时 → 加时间窗或改汇总表。权限 → 告诉用户可见范围,不要改去查别人的数。空结果 → 先放松过滤再下结论。
BIRD 还提出 VES(Valid Efficiency Score):只有结果正确的语句才谈效率。先对再快。两阶段优化(先写对,再按规则改写)在他们抽的例子里可把耗时降一个数量级;那是优化器的活,不是第一轮生成的活。
迭代上限建议 5–8。到上限输出:已选表、已试过滤、仍缺的口径。这比再赌一轮更像产品。
出处
- DIN-SQL self-correction;BIRD VES 与两阶段优化;观远纠错循环上限