生产级 Text-to-SQL 难题:执行成功但语义错误的 SQL 怎么救
Fun-Following-1723 · reddit · 2026-10-15
一位开发者在构建支持 PostgreSQL、MySQL、SQL Server 的 Text-to-SQL agent,流水线为:解析 schema → LLM 生成只读 SELECT → 校验只读 → 执行失败时把报错和 schema 回传 LLM 重试一次 → 汇总结果。核心痛点是语义错误:比如用户问「购买总量最多的曲目」,模型生成 COUNT(invoicelineid) 而非 SUM(quantity),两条 SQL 都能成功执行,仅靠执行报错触发的重试机制完全无法发现。作者列出了正在考虑的对策:
- 执行报错后携带 schema 上下文重试
- 执行前用第二次 LLM 调用对照原问题审查 SQL
- 对常见聚合错误做确定性检查
- 生成多个候选查询再择优
- 校验返回结果与原始问题的一致性
- 用列描述、业务定义、示例查询丰富 schema 上下文
并希望了解实际部署过此类系统的团队如何评估这些方法、如何权衡准确率与延迟/成本。
「编程与Agent」频道最新
- TorchLean 升级:可在 Lean 里编写带形状检查与证明的张量程序 — burny_tech · 2026-10-15
- 一图对照 Kiro/Claude Code/Codex/Cursor 功能命名速查表 — DigitalColmer · 2026-10-15
- 一周攒点子、并行 10 个 agent 做原型:一人软件工厂工作流 — Stefania_druga · 2026-10-15
- 华为等提出 SwarmRSI:科学 agent 集群实现递归自我改进 — Qianru Meng · 2026-10-15
- 驾驭大规模 Agent 集群要靠价值观与故事化提示词,而非硬规则 — liminal_bardo · 2026-10-15
- 一张图对比瀑布式、敏捷与 AI 开发:Vibe First, Validate Fast — burny_tech · 2026-10-15