五厂面经真题集百度面经高频百度真题NL2SQL工具调用速答 · 约 5 分钟更新 2026-09-29

NL2SQL 的工具 Schema 怎么设计,才能降低参数错误和工具误选?

一句话结论

把表名和列名做成基于元数据的封闭枚举,前置校验类型与格式,并拆分生成和执行工具,再用权限规则控制执行。

先这样答

结论是,NL2SQL 的工具 Schema 要把参数限制在可枚举、可校验、可审批的范围内。表名和列名从 schema 元数据生成枚举项。模型不能自由填写这些名称。日期、ID 等参数也要在进入工具前校验类型和格式。

NL2SQL 的特殊之处在于,参数本身就是语义。表名、列名和过滤条件一旦错了,模型可能选错数据范围,甚至调用错误的工具。因此,工具描述不能只写一个宽泛的 SQL 字符串参数。它要明确字段范围和参数格式,让模型在受限选项中完成选择。

还要把查询和执行拆成两个工具。第一个工具只负责生成 SQL。第二个工具负责执行 SQL,并带审批控制。执行工具可以设置危险操作白名单。只读查询自动执行。写操作必须先获得确认。这样既能降低工具误选,也能限制错误操作的影响。

如果参数校验失败,工具不要只返回失败状态。它要把具体错误信息回传给模型。模型根据错误修改参数,再重新生成或提交。这个过程依赖清晰的校验信息,不依赖模型自行猜测正确格式。

面试官会怎么追问

  • 「为什么表名和列名一定要做枚举,不能让模型直接生成?」
    表名和列名属于 NL2SQL 的核心语义参数。模型自由生成时,容易出现不存在或不准确的名称。用 schema 元数据生成封闭枚举,可以把选择限制在已有范围内。

  • 「为什么要把生成 SQL 和执行 SQL 拆成两个工具?」
    生成和执行承担的风险不同。生成工具只产出 SQL,执行工具才会真正影响数据。拆开后,可以单独给执行工具加审批和危险操作规则。

  • 「参数校验失败后,系统应该怎么处理?」
    工具把失败原因和具体错误信息回传给模型。模型根据信息修正日期、ID、表名或列名等参数。校验通过后,再进入后续的生成或执行步骤。

回答的坑

只说“增加 Schema 描述”不够,必须说明枚举来源、类型格式校验,以及校验失败后的回传方式。

只设计一个既生成又执行的 SQL 工具,容易把参数错误和危险操作直接带到执行阶段。

—— 本题完 ——