Releases
v0.0.3
Compare
Sorry, something went wrong.
No results found
新增
多数据源 :数据源成为一等实体,可按项目绑定,一个项目里可同时接多个库。
MySQL 方言 :sqlglot 是方言权威,只保留三处经真库实测的例外——时间截断会丢日期类型、生成的 SQL 里不能出现 %(驱动会当参数占位符)、DECIMAL 除法会截断占比精度。五种时间粒度与同比自连接、占比窗口在真 MySQL 上与 PostgreSQL 逐行比对一致。pymysql 已随镜像分发。
上传表格 :Excel 落库成数据源,走与数据库表相同的建模与问数链路;支持一次导入多张工作表、追加或替换、删除。
流式问数 :POST /v1/analytics/query:stream 按阶段推送事件;「理解问题」完成时带上模型认出的语义成员。
结果解读 :结果返回之后异步生成一段话,只允许引用结果里字面出现过的数字,禁止自行计算合计、占比或同环比。默认关闭,开启后不推迟结果返回。
助手级问数配置 :单次请求可覆盖返回行数、默认时间窗、多轮改写、自洽次数、模型与温度;留空即跟随部署默认,因此不改变既有部署的行为。
默认时间窗 :问题没写时间范围时按配置补最近 N 天。问题里明确说了的时间一个字不动;补上的窗在回答上可见,并可一键改回不限时间。
文本 S2SQL 续跑 :下钻与重跑在文本 S2SQL 上做确定性编辑(换过滤值、增减分组维度、换指标、换时间窗),保住原查询的时间粒度与期间比形状;形状不支持时明确拒绝,不静默降级。
问数反馈 :把「用户说了、系统没接住」的说法收进一个收件箱,含拒答、澄清、模型自己猜的、取值不认识、点赞、点踩六类;按说法聚合、可分页、可标记已处理,并能一键补进业务词典。点踩必须选原因。
发布管理 :线上版本可切换到任意一个已发布版本,发布历史按序号展示。
可观测性 :每个查询阶段带真实耗时;诊断可见每次模型与向量调用的用途、尝试次数、耗时与 prompt 规模。
变更
作用域选择改为「生成后确定性反推」 。此前先按局部证据选定作用域再让模型作答,选错时模型被锁在错误范围里只能硬凑,六道治理关全部放行——用户拿到的是一个看起来正常的错误数字。现在最终 LLM 看到候选作用域成员的并集并写出业务名 S2SQL,编译器逐个真实作用域尝试确定性翻译,恰好一个成功即绑定,零个说明跨了事实根,多个按粒度收敛取最粗。模型提议、编译器裁定:校验比选择容易 。
澄清退成兜底 :业务对象卡整体删除,只保留同名语义元素与跨事实根的指标短语两类。
多轮改写默认开启 ,并加两道确定性门:原话已经点名指标就不改写;改写后多出原话没有的分组维度就作废回退。改写只能补口径,不能替用户加问题。
最终 LLM 的指标/维度目录 从逐条字典改为带表头的竖线表。实测 prompt 均值 6161→4744 字符,端到端 14.8s→11.7s。
模型调用按用途封顶超时 ;超时不在传输层重试同一个 prompt,换一种生成是解析器重试链的事。重试时把上一次的校验拒绝原因(错误码、原话、被拒 SQL)作为事实告诉模型,不替它改写。
修复
模型表达不了某个条件时会自己发明「永不成立」的过滤条件顶掉它,执行成功 0 行,界面显示「查询成功,但没有返回数据」——用户读到的是一句关于自己业务的假话。现在任一 WHERE/HAVING 经常量折叠归约为 FALSE 即拒绝。
0 行且过滤值不在该维度已发布取值里时,指名道姓说出来;编辑相似度 ≥0.6 才给近似建议(卡布奇洛→卡布奇诺 给建议,摩卡、深圳 不猜)。措辞是「不在已发布取值里」而不是「不存在」。
「每组取前 N」整类问题答不出来。
一个词恰好是某维度的取值时,不再当成用户要的过滤条件。
带 GROUP BY 的语句判为聚合查询,聚合只写在 ORDER BY 里的写法不再被判成明细查询而拒绝。
期间比:治理聚合显式写出来与裸指标引用同义;同一指标既裸写在投影又出现在比率里时,按治理聚合补齐。
时间维不参与同名歧义结算——它进查询是因为「按月」「同比」必须落在时间轴上,与某个名词怎么读无关。此前会陷入选一次弹一次的无限澄清。
查询自己写的 LIMIT 到顶不再被误报成「超出上限」。
派生时间列与期间比列没有别名时按业务名命名,不再出现内部列名。
从已发布版本派生草稿时丢掉语义上下文的评审记录。
数据源不能是服务自己的 catalog 库(否则内部表会被当业务表建模);裸 postgresql:// 统一钉到 psycopg 3。
You can’t perform that action at this time.