有了这个编译器就不必再赌 AI 的正确率了?

简介: 我们打造SQLazy编译器,终结“AI写SQL靠祈祷”的困局:AI专注拆解业务逻辑步骤,编译器严格翻译为确定性、可验证、可审计的SQL,杜绝空值排序遗漏、LEAD默认值缺失等隐蔽偏差——每步可视、可验、可修,不赌模型,只信流程。

我们造了一个编译器,让你不必再赌 AI 的正确率了。不是因为模型不够准,而是行业一直让它做不该做的事。

你有没有遇到过 AI 给的 SQL 能跑、能过检查,上线后才发现边界错了一行,却不报错?

我们为什么要造编译器
我们曾经把一句需求丢给 AI,几秒就拿到一段漂亮的 CTE,窗口函数套窗口函数,review 挑不出毛病。直到对账才发现分组错了一位,兜底的那行丢了。

那一刻我们明白,行业都在卷模型更准,我们换了一条赛道:别让模型负责复杂的终态 SQL。

AI 擅长把口语拆成步骤,编译器擅长把步骤翻成 SQL。各干各的,就不用赌了。

db6d9935a07b4e09bab7979a882db5bb_q.png
一个跑得通但得靠祈祷的例子
需求很简单,却足够让我们捏着鼻子上线。

事件表 events 按时间排序,相邻 value 相同时属同一组,要输出每组的开始时间 effective_from 与下一组开始时间 effective_to,末组 effective_to 约定为 9999-12-31。

源数据表的 value 字段是序列 1,2,2,1,1,1,2,2,1,相邻相同并为一组:
image.png
期望结果只有 5 行:
image.png
我们把一句话需求丢给 AI,拿到的 SQL 长下面这样,6 个 CTE 还套着子查询,LAG、SUM、LEAD 全齐,还多套了一层意义不明的过滤,看起来完全正确,你敢直接上线吗?

WITH Value AS (
    SELECT id, value, timestamp FROM events
),
Value1 AS (
    SELECT Value.*, LAG(value) OVER (ORDER BY timestamp ASC) AS prev_value
    FROM Value
),
Value2 AS (
    SELECT id, value, timestamp,
        SUM(CASE WHEN value <> prev_value THEN 1 ELSE 0 END) OVER (ORDER BY timestamp ASC) AS gid
    FROM Value1
),
Grouped AS (
    SELECT gid, MIN(id) AS id, MIN(value) AS value, MIN(timestamp) AS effective_from
    FROM Value2
    GROUP BY gid
),
t_1 AS (
    SELECT gid, id, value, effective_from,
        LEAD(effective_from, 1) OVER (ORDER BY gid) AS effective_to
    FROM (
        SELECT * FROM Grouped WHERE id IN (SELECT id FROM Grouped WHERE effective_from IS NOT NULL)
    ) inner_q
),
cte_final_v2 AS (
    SELECT gid, id, value, effective_from, effective_to FROM t_1 WHERE 1 = 1
)
SELECT * FROM cte_final_v2 ORDER BY gid;

不逐组跑一遍,你能看出哪里错了吗?这类 SQL 最危险的地方不是语法,而是三处藏起来的偏差:ORDER BY 丢了空值排序分支,SUM 后漏了加 1 导致 gid 从 0 起计,LEAD 漏了默认值。其中 LEAD 这处直接让末组兜底值变成 NULL:错一行,不报错,只能祈祷;另外两处遇到边界数据同样会爆。
不是模型不够准,是交付形态错:它一次吐出终态 SQL,错了只能重写提示词整段重生成,逻辑偏差自然撤不掉。
错的正是最后一行:

期望:9 | 1 | 2023-11-18 13:00:00 | 9999-12-31 00:00:00
实际:9 | 1 | 2023-11-18 13:00:00 | NULL

我们让AI做了最不该做的事
AI 擅长规划步骤,却不擅长保证最终 SQL 一定正确。

旧范式是“提示词→AI→不确定的终态 SQL”,黑盒交付,只能让它整段重猜。

新范式应该是“提示词→AI→规范步骤→编译器→确定性 SQL”,每一步可验证。

AI writes the logic. A compiler writes the SQL.

在SQLazy里,这件事只要5步
同样的有效期逻辑(就是上面那种取每组起止时刻的逻辑),在 SQLazy 里是 5 步,每一步都能点开看中间表。
image.png

c3d75dd8062886c93a52680b503132ff_q.jpg
5 步干了什么,一眼看完:排正时序,按 value 变化自动切段,每段取首条,顺手带出下一组开始,最后清掉辅助列。你完全不用知道 LAG 怎么写。
还记得前面那 3 个藏起来的偏差吗?在这里它们连藏的地方都没有。想验哪步就点开哪步,分段切得对不对,看一眼 gid 列就行。
5bb32952f4da12a4192143d14eafe7f0_q.jpg
错在第 2 步就只改第 2 步,不用推倒重来。你敢改,是因为每一步都看得见。
编译后 SQL 是编译器按固定规则翻译的,可追溯,可审计:

WITH Value AS (
    SELECT id, value, timestamp FROM events
),
Value2 AS (
    SELECT gid, id AS id, value AS value, timestamp AS effective_from
    FROM (
        SELECT id, value, timestamp,
            SUM(CASE WHEN value <> col__5 THEN 1 ELSE 0 END)
                OVER (ORDER BY CASE WHEN timestamp IS NULL THEN 1 ELSE 0 END, timestamp ASC) + 1 AS gid
        FROM (
            SELECT Value.*, LAG(value) OVER (ORDER BY CASE WHEN timestamp IS NULL THEN 1 ELSE 0 END, timestamp ASC) AS col__5
            FROM Value
        ) sub__6
    ) Value1
    GROUP BY gid
)
SELECT gid, id, value, effective_from,
    LEAD(effective_from, 1, TO_DATE('9999-12-31 00:00:00', 'YYYY-MM-DD HH24:MI:SS')) OVER (ORDER BY gid) AS effective_to
FROM Value2
ORDER BY gid;

这段 SQL 没有猜的成分,是编译器把 5 步固定翻译出来的,同一 workflow 永远同一结果,不会编造字段。
48cabe658055bfca186566be58137bb2_q.jpg
简单增删改查,直接让 AI 写就行,这种分段取首尾的逻辑再用 SQLazy。

把你最可疑的那段AI SQL贴进来
你上线过最可疑的 AI SQL 是哪段?是凭空编了个不存在的字段,还是分区键漏写了,抑或聚合口径悄悄偏了?

别再陷入“重写提示词→重跑→碰运气”的循环了。把那段最不放心的 AI SQL 贴进 Playground,照着上面的样子做一遍同样可验的流程,并晒出你的案例。

在线体验与本例运行:

image.png
AI plans, compiler guarantees - zero hallucinations.

相关文章
|
3月前
|
SQL 人工智能 JSON
智能问数(Text2SQL)工业级落地,纯 AI 黑盒方案都没戏
本文剖析Text2SQL领域“高准确率宣传”与“无公开DEMO”之间的矛盾,指出黑盒方案因AI幻觉、不可解释、不可审计,难担企业级信任;润乾NLQ采用白盒路线——以人类可读可确认的“规范文本”为中间层,AI仅作翻译,后续规则编译100%确定,真正实现稳定、可解释、可落地的智能问数。
|
10月前
|
SQL 自然语言处理 BI
另辟蹊径的 Text2SQL,不用大模型也能搞 chatBI
润乾报表NLQ组件摒弃大模型路线,采用规则词典与领域知识库,将自然语言精准转化为MQL查询语言,实现稳定、低成本、可维护的ChatBI。其核心在于结构化语义解析,避免“幻觉”,支持复杂多表关联与计算,适用于企业级BI场景,是可靠高效的自然语言查询解决方案。
|
3月前
|
SQL 人工智能 自然语言处理
准确率 100% 的智能问数(Text2SQL)实践,还要关心什么指标?
润乾NLQ创新采用“规范文本+规则编译”架构,将口语转为可验证的中间语言,再确定性生成SQL,实现规范文本→SQL环节100%准确率。规避大模型幻觉,支持多表JOIN、子查询、聚合等复杂场景,实施门槛低、结果稳定可控。(239字)
|
5月前
|
人工智能 JavaScript BI
用 AI 编程生成 ECharts 图表
报表内置图表有限,复杂图表(如K线图、地图等)需手写ECharts代码,学习成本高、调试耗时。本文以K线图为例,介绍“参数导出→AI生成→脚本回填”三步法:用Trae等AI工具根据报表导出的参数自动生成JS脚本,再替换嵌入报表模板,大幅提升开发效率。(239字)
|
10月前
|
SQL 自然语言处理 BI
万字长文解析 NLQ 破局 Text2SQL,兼得灵活复杂准确
润乾NLQ创新采用“规范文本”作中间层,兼顾问题灵活性与查询准确性。通过人类可读的规范文本确认意图,结合规则引擎生成精确SQL,并支持复杂查询,以低成本实现企业级Text2SQL的可靠落地,突破传统三难困境。
|
10月前
|
SQL XML 自然语言处理
Text2SQL 破局技术解析之一:规范文本与灵活性
润乾NLQ创新采用“规范文本”作为中间层,将自然语言转SQL分为三阶段:LLM生成可读的规范文本,用户确认意图后,通过规则引擎转为MQL再生成准确SQL。该方案兼顾灵活性、准确性与复杂查询支持,大幅降低企业实施成本,为人机协同的Text2SQL提供了可行的工程化路径。
|
8月前
|
XML 人工智能 自然语言处理
ChatBI 不止 Text2SQL,加上多维分析才算全链 AI+ 商业智能
润乾BI突破传统ChatBI局限,以规则引擎实现从“问数据”到“操作数据”的全链路自然语言分析。支持分组汇总、排名、环比、图表生成等复杂操作,指令规范、结果确定,杜绝AI幻觉。通过智能提示降低使用门槛,更可与LLM协同,将口语问题转化为精准分析步骤,让数据决策高效、可信、可控。
|
13天前
|
SQL 人工智能 自然语言处理
智能问数的不可能三角:灵活、准确、复杂
智能问数存在“不可能三角”:灵活性、准确性、复杂性三者不可兼得。润乾NLQ创新破局——用LLM专司口语转规范文本(保灵活),用户确认后交由规则引擎编译SQL(保准确),再通过MQL/DQL/SPL分层支撑复杂查询(保复杂)。三角非攻克,而是拆解与协同。
|
8月前
|
SQL 人工智能 自然语言处理
这款 Text2SQL 技术为什么能对噩梦般的 JOIN 免疫
润乾 NLQ 以“语义层+确定性编译”破解 Text2SQL 复杂 JOIN 难题。通过 DQL 实现外键属性化与按维对齐,将多表关联转化为可验证规则,摆脱 LLM 幻觉依赖,准确率高、成本低,适合企业复杂场景落地。
|
3天前
|
SQL 人工智能 编译器
LLM 规划,编译器生成:以工作流为契约的确定性 SQL 生成器
AI生成SQL虽可运行,但逻辑难审计、调试难、移植难。根源在于“规划+生成”耦合导致确定性缺失。SQLazy提出“规划与生成分离”架构:LLM仅输出可读可验的步骤式Workflow(DSL),确定性编译器将其精准转为原生SQL。支持单步调试、跨库编译、Git版本审计,专为复杂分析逻辑而生。