Logicform 简介

Logicform 是 Data Agent 的语义查询中间层,用于把自然语言请求转译成统一的 JSON 结构,再由执行引擎映射为 SQL、API请求等底层查询。你可以把它理解为“可读的 SQL AST”,所有问答、看板和 API 请求都会先生成 Logicform,再依赖语义层和数据库连接执行。

Logicform 如何工作

  1. 语义解析:业务建模阶段定义的指标、维度、同义词和权限信息会指导大模型在理解自然语言时生成正确的 schemapredsgroupby 等字段。
  2. Logicform 生成:Alisa 或 API 根据上下文输出一个 Logicform JSON,描述筛选条件、聚合方式以及排序规则。
  3. 执行与回写:执行引擎读取 Logicform,将其映射为对应数据源的 SQL/DSL,拉取结果并在必要时写回缓存或指标仓库。

一个最小示例

{
  "schema": "orders",
  "query": {
    "地区": "华东"
  }
}

对应的 SQL 为:

SELECT * FROM orders WHERE 地区 = '华东';

更复杂的示例

{
  "schema": "sales",
  "query": {
    "日期": {
      "year": 2023,
      "month": 10
    },
    "渠道": {
      "$in": ["自营", "天猫"]
    }
  },
  "groupby": [
    { "_id": "地区" },
    { "_id": "产品_品类" }
  ],
  "preds": [
    { "name": "销售额", "operator": "$sum", "pred": "amount" },
    { "name": "订单数", "operator": "$count" }
  ],
  "sort": { "销售额": -1 },
  "limit": 10
}

翻译成 SQL 如下:

SELECT
  地区,
  产品_品类,
  SUM(amount) AS 销售额,
  COUNT(0) AS 订单数
FROM sales
WHERE
  日期 BETWEEN '2023-10-01 00:00:00' AND '2023-10-31 23:59:59'
  AND 渠道 IN ('自营','天猫')
GROUP BY 地区, 产品_品类
ORDER BY 销售额 DESC
LIMIT 10;

更多字段和语法请继续阅读本节的其他文档:基础结构 会介绍完整的字段列表,而 指标 / 筛选 / 分组 / 排序 文档会对常见场景提供具体示例。