ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

WrenAI 开源 GenBI 引擎实战:MDL 语义层 + AI 上下文层,让 AI Agent 完成治理化 Text-to-SQL 到仪表盘部署

WrenAI 开源 GenBI 引擎实战:MDL 语义层 + AI 上下文层,让 AI Agent 完成治理化 Text-to-SQL 到仪表盘部署 WrenAI 开源 GenBI 引擎实战MDL 语义层 AI 上下文层让 AI Agent 完成治理化 Text-to-SQL 到仪表盘部署【免费下载链接】WrenAIGenBI (Generative BI) for AI agents, an open-source, governed text-to-SQL through an open context layer that turns natural-language questions into trusted dashboards, charts, and SQL across 20 data sources, such as BigQuery, Snowflake, PostgreSQL, ClickHouse, Amazon Redshift, Databricks and more.项目地址: https://gitcode.com/GitHub_Trending/wr/WrenAIWrenAI 是一个开源的生成式 BIGenBI引擎它以 MDLModeling Definition Language语义层和一套可版本化的 AI 上下文层为底座让 AI Agent 完成从自然语言问题到治理化 SQL、再到可部署浏览器端仪表盘的完整链路覆盖 22 数据源。读完本文你将掌握 WrenAI 的三层核心概念语义层、上下文层、受治理执行、完整的 Quickstart 操作流程、日常 CLI 命令用法以及各能力在仓库源码中的落点。1. WrenAI 是什么GenBI、Text-to-SQL 与语义层的统一WrenAI 定位为开源生成式 BI 引擎它不仅做治理化的 text-to-SQL把自然语言问题变成受语义层规划的 SQL还继续向前——由 Agent 直接构建、部署并分享仪表盘跨 BigQuery、Snowflake、PostgreSQL、ClickHouse、Amazon Redshift、Databricks 等 22 数据源。让产出可信的关键在于底层两件事开放的 AI 上下文层业务语义、已批准的口径定义、历史示例、记忆与公司非结构化知识文档、Wiki、聊天记录全部以可评审、可版本化的文件形式存在受治理的语义层MDL用 MDL JSON Schema 定义的数据模型描述数据意味着什么而不仅仅是存放在哪里。官方 FAQ 对几个高频问题的回答值得直接引用什么是生成式 BIGenBI由 AI Agent 生产的 BI不是手工搭图而是 Agent 生成受治理的 SQL、部署仪表盘、分享链接——并且因为有 AI 上下文层兜底输出是可信的而不是看似合理的。WrenAI 做 text-to-SQL 吗做而且是治理化的Agent 的自然语言问题转成的 SQL 会先针对 MDL 语义层做规划planning并经过 dry-plan 校验然后才执行。WrenAI 是语义层吗是。Wren 本身就是一个以 MDL 表达的受治理语义层模型、指标、关系并与 AI 上下文层记忆、示例、非结构化知识配套让 Agent 直接继承你的业务定义。什么是 AI 上下文层Agent 需要、但 schema 提供不了的那部分可评审、可版本化的知识业务语义、已批准定义、示例、记忆与治理规则。这是生成式 BI 可信的前提。2. 三个节拍Generate · Deploy · KnowREADME 将 GenBI 工作流归纳为三个节拍也是理解整个项目的最简框架Generate生成Agent 把业务问题变成受治理的 text-to-SQL 与图表。Schema 感知检索、MDL 规划、dry-plan 校验、带提示的结构化错误共同保证正确而不是自信地错。Deploy部署把任意答案变成一个可分享的、浏览器端运行的仪表盘由wren-core-wasmWebAssembly 构建驱动一条命令部署到你自己的 Vercel 或 Cloudflare Pages 账号。Know沉淀知识让一切正确运行起来的知识都存放在可版本化、带证据链的文件里——语义模型MDL、公司口径instructions.md、哪些查询验证过可用的记忆。可评审、Git 友好、不锁在任何厂商 UI 里。选型对比上官方给出的差异矩阵是裸 LLM Agent传统 BI 工具纯语义层WrenAI替你写 SQL✅经常错❌❌✅ 受治理懂你的业务定义❌部分锁在工具内✅仅 schema✅ schema 外知识生成并部署仪表盘❌✅手动、工具内❌✅ Agent 驱动通过你自己的 Agent 工作Claude Code、Cursor、MCP…✅❌❌✅开放、可评审、Git 友好的上下文❌❌部分✅跨 22 源的受治理执行❌按连接器✅仅定义✅一句话定位想让 AI Agent 产出可信的 BI答案 仪表盘而不只是貌似合理的 SQL、且业务口径大量存在于数据库之外时WrenAI 是对口方案如果只是给单个 CSV 出一次性的图或不在意 SQL 治理则不必引入它。3. QuickstartAgent 驱动的四步上手WrenAI 是agent-driven by design安装 CLI → 给 AI 客户端装一个单文件 discovery stub → 其余交给 Agent 驱动。工作流指南内置在 CLI 里、按需取用因此内容永远与已安装版本一致。3.1 安装 CLIpip install wrenai # 核心包含 DuckDB pip install wrenai[postgres,memory] # 按需追加数据源与 memory 扩展中国大陆用户如pip install缓慢或失败可使用清华镜像pip install wrenai -i https://pypi.tuna.tsinghua.edu.cn/simple若 HuggingFace 模型下载超时运行 CLI 前先export HF_ENDPOINThttps://hf-mirror.com。从 pyproject.toml 可确认包的基本信息与全部 extras包名wrenai当前版本 0.13.4要求 Python ≥ 3.11Apache-2.0 许可CLI 入口为wren wren.cli:app。数据源扩展按连接器拆分Extra依赖对应连接器postgrespsycopg[binary]3PostgreSQLmysqlmysqlclient2.2MySQLbigquerygoogle-cloud-bigquery、google-authBigQuerysnowflakesnowflake-connector-python[pandas]Snowflakeclickhouseclickhouse-connectClickHousetrinotrinoTrinomssqlpyodbcSQL Serverdatabricksdatabricks-sql-connector、databricks-sdkDatabricksredshiftredshift_connectorAmazon Redshiftsparkpyspark3.5Apache Sparkathenapyathena[pandas]Athenaoracleoracledb2Oraclememorylancedb0.6、sentence-transformers3.0.0本地混合检索记忆memory-onnxlancedb、onnxruntime、tokenizers、huggingface-hub无 torch 的替代 embedding 后端mcpmcp[cli]1.19MCP 服务器all以上全部一次性装齐核心依赖还包括wren-core-pyRust 语义引擎的 Python 绑定、sqlglot29、duckdb、pyarrow、typer、pydantic——这与 架构文档 中关键依赖一一对应。3.2 安装 discovery stubnpx skills add Canner/WrenAI # 自动识别 Claude Code、Cursor、Cline、Codex 等客户端这个 stub 只有约 50 行对应仓库 skills/wren/SKILL.md它教 Agent 两件事用wren skills get name按需取工作流指南用wren ask question --guided|--direct取整形后的提示词其余一切都在 CLI 里。从源码看技能内容以 wheel 内打包数据分发skills_delivery.py 从wren/skills_content/name/读取SKILL.md--full会把references/*.md一并拼接输出--script可取出捆绑脚本skills_cli.py 的get子命令负责路由与错误提示。当前内置技能包括onboarding、generate-mdl、enrich-context、genbi、usage、dlt-connector见 skills_content 目录。3.3 让 Agent 完成初始化Onboarding在项目目录打开 Agent说一句类似Use Wren to set up my Postgres database.Agent 会执行wren skills get onboarding按指南逐步检查环境、创建连接 profile、搭项目脚手架并跑通第一个查询。onboarding 指南SKILL.md还支持无数据库体验内置jaffle_shop示例数据集约 30 秒即可端到端跑通——Try the bundledjaffle_shopdemo first (~30s, no DB needed), or connect your own database?3.4 第三步可选Know —— 丰富业务上下文Onboarding 完成后继续说Enrich my Wren project with the business context inraw/.Agent 执行wren skills get enrich-context以grill 模式一次一个问题或auto-pilot 模式Agent 读project/raw/并主动提案工作。两种模式都写入 MDL、instructions、queries 与 memory——全部可评审、Git 友好。3.5 提问Generate与部署仪表盘Deploy提问Who are our top 10 customers by sales this quarter?——Agent 获取 MDL 上下文、召回相似历史查询、写受治理 SQL最后经wren query执行。部署Turn that into an interactive dashboard I can filter and share, and deploy it to Vercel.——Agent 执行wren skills get genbi基于项目上下文构建浏览器端 GenBI 应用、本地预览后部署到你自己的 Vercel / Cloudflare Pages返回可分享的线上 URL。完整指南见 Build deploy a GenBI app。3.6 日常命令速查# Day 1agent 驱动 wren skills get onboarding # 工作流指南建项目 首个查询Generate wren skills get enrich-context # 工作流指南补充业务上下文Know wren skills get genbi # 工作流指南构建并部署仪表盘Deploy # 日常 wren query --sql ... # 走 MDL 语义层执行查询 wren ask question --guided # 为较弱的 Agent 包装强流程提示词 wren ask question --direct # 为较强的 Agent 包装极简提示词这些命令在 cli.py 中有明确实现queryL428-L446构建引擎后调用engine.query(sql, limit...)dry-planL449-L533只做规划并打印展开后的 SQL无需连接数据库可自动回退到项目固定或 active profile 的方言dry-runL536-L550则对真实数据源做解析与校验但不返回行。而wren ask在 ask_cli.py 中强制二选一--guided面向弱模型、严格流程的引导式提示词与--direct面向强模型、最小化提示词没有默认值——源码注释解释了原因两种模式对 prompt 的包装方式差异很大静默的默认值变更会随升级悄悄改变 Agent 行为。两种模板分别存放在 guided.md.tmpl 与 direct.md.tmpl。4. 语义层 MDL数据意味着什么的 Git 友好定义Wren本身就是一个受治理的语义层以 MDL 表达。每一次 text-to-SQL 回答和每一个仪表盘都是针对它规划的所以 Agent 继承的是你的业务事实而不是猜测。MDL 覆盖三类内容模型、列、关系与视图——数据的形状与任何单一数仓解耦Cubes 与指标——已批准的、可复用的定义保证营收到处是同一个意思schema 之外的业务上下文——枚举值、单位、已批准的连接方式以及版本化的instructions.md与queries.yml。与只存定义的裸语义层不同Wren 把语义层与AI 上下文层记忆、示例、非结构化公司知识和受治理执行引擎配对——同一份定义既描述数据也保证它跨 22 数据源被正确执行。项目里可对照的真实样例是 examples/v5-jafflewren_project.yml为项目入口models/customers、ordersorders 带ref_sql.sql计算模型、views/customer_orders、cubes/order_metrics各以metadata.yml声明relationships.yml描述模型间关系knowledge/存放业务规则与已确认的 NL→SQL 对如 knowledge/sql/total-revenue.mdapps/sales-report/则是基于该项目生成的仪表盘示例。MDL 的完整 JSON 契约见 mdl.schema.json更完整的字段说明见 MDL 参考。5. AI 上下文层知识、记忆与项目布局Wren 项目是一个业务数据层的可移植上下文包从 架构文档 与v5-jaffle示例可归纳出标准布局MDL 源文件——模型、关系、视图、cubes、项目元数据knowledge/——业务规则rules/与已确认的 NL→SQL 对sql/是记忆的唯一事实来源target/mdl.json——编译后供引擎使用的 MDL 清单.wren/memory/——从knowledge/派生、可重建的 LanceDB 索引用于语义检索连接 profile 单独存放在~/.wren/profiles.yml让凭据保持环境相关不进项目库。记忆系统是基于 LanceDB 的检索层有两个核心集合集合内容用途schema_items模型、列、关系、视图、cubes 与 instructions为每个问题取到对的上下文query_history已确认的 NL→SQL 对召回曾经有效的示例对应实现分布在 memory 模块store.py、embeddings.py、index_backend.py、schema_indexer.py、seed_queries.py等。每一次被确认的查询都可以成为未来的示例——这就是 README 所说的让使用本身变成行为上下文。6. 受治理执行从建模 SQL 到可执行 SQLREADME 强调Correctness as primitives富 schema 检索、dry-plan 校验、带提示的结构化错误、值画像value profiling、eval runner。这些不是隐藏特性而是 Agent 可编排的原语。从源码看一次wren query的完整链路与架构文档的Query execution数据流一致wren query --sql SELECT customer_id, SUM(total) FROM orders GROUP BY 1 | |-- 1. 发现项目: wren_project.yml - target/mdl.json |-- 2. 解析 profile: ~/.wren/profiles.yml |-- 3. 规划: sqlglot 解析 - 提取相关 MDL - CTE 展开 - 方言转译 |-- 4. 执行: 连接器 - 数据库 - PyArrow 表 |-- 5. 输出: table / CSV / JSON / SDK 返回值SQL 规划器由三部分协作sqlglot负责解析、限定表列引用、方言转译CTE rewritercte_rewriter.py识别查询引用的 MDL 对象并把模型 SQL 展开为 CTE 注入wren-coreRust 语义引擎经 PyO3 绑定暴露给 Python见 wren-core 与 wren-core-py负责展开模型、关系感知表达式与计算字段。dry-plan走同一条规划管线但不连库这正是生成轨迹generation trace可观测性的来源模型、连接、CTE 与展开后 SQL 全部可见。执行层由 connector 目录 中的各实现承担源码可见 postgres、mysql、bigquery、snowflake、clickhouse、trino、mssql、databricks、redshift、oracle、athena、spark、duckdb、datafusion 等统一经 factory.py 分发每个连接器实现统一的查询执行、dry-run 校验、类型处理与连接生命周期接口。结果统一以 PyArrow 表返回wren query再按--output渲染为 table/CSV/JSON。7. 开箱能力清单与 Agent SDKREADME 的 Whats Included 清单可整理为MDL 语义层模型、列、关系、视图、cubes、指标引擎基于 Apache DataFusion 的 Rust 语义引擎22 数据源BigQuery、Snowflake、PostgreSQL、ClickHouse、Amazon Redshift、Databricks、DuckDB 等GenBI 仪表盘Agent 构建、浏览器端运行由wren-core-wasm驱动可部署到 Vercel / Cloudflare Pages知识与记忆AI 上下文层版本化的instructions.md与queries.yml加本地 LanceDB 混合检索索引Agent SDKwren-langchainLangChain / LangGraph 工具集与 wren-pydanticPydantic AI Toolset以及面向其他技术栈的参考 Python 集成SDK 总览受治理执行原语函数、dry-plan、行限制row limits、结构化错误MCP 服务器mcp_server.py 让 MCP 客户端直接消费 Wren 能力。Roadmap方面官方列出的下一步是端到端正确性原语值画像、富检索、结构化错误、golden eval runner与 Agent 原生分发主流 Agent 框架的一等 SDK。8. Open CoreOSS 与商业版的边界WrenAI 是open core模式边界是公开的OSS本仓库Apache-2.0永久免费可自托管It runs without usMDL 语义层治理化 text-to-SQLMCP 服务器、CLI22 连接器。商业Wren AI Cloud 或自托管 Enterprise Plus行级/列级安全RLS / CLS与用户/组访问控制GenBI UI、仪表盘、嵌入式与 API场景化 AI 编排——GenBI Apps、Agentic Mode、AI 辅助上下文准备高级安全与审计、支持与 SLA、云 / VPC / 隔离网部署。两边跑的是同一套引擎且无论哪种交付方式你的 MDL 都留在你自己的 git 里。这条边界也与 README 在Governed execution一节中的提示一致dry-plan 校验、行限制、结构化错误属于 OSS 的护栏行/列级安全与访问控制属于商业版。9. 关于 GenBI 命名的说明一个容易混淆的点GenBI 现在指本仓库中这个开源的生成式 BI 能力——在 Wren 上下文层之上生成受治理答案、部署仪表盘的 Agent 工作流。早期那个基于 Docker 的聊天优先 BI 产品旧 Wren AI GenBI 应用现称Wren GenBI Classic保留在legacy/v1分支tagv1-final不再接受新特性与安全修复。2026-05-07 起原独立的 Wren Engine 仓库已并入本仓库的core/目录。10. 仓库结构与延伸阅读仓库顶层结构继承自 README并已核对实际目录core/ wren-core/ Rust 语义引擎Apache DataFusion wren-core-base/ 共享 manifest 类型 MDL builder wren-core-py/ Python 绑定PyPI: wren-core wren-core-wasm/ WebAssembly 构建npm: wren-core-wasm wren/ Python SDK 与 CLIPyPI: wrenai wren-mdl/ MDL JSON schema sdk/ wren-langchain/ 参考 Agent SDK 集成LangChain / LangGraph wren-pydantic/ Pydantic AI 集成 skills/ 面向 Agent 的技能含单文件 discovery stub docs/ 文档 examples/ 示例项目v5-jaffle延伸阅读入口均为仓库内文档快速开始从安装技能到第一个答案连接数据库Postgres、BigQuery、Snowflake、DuckDB 等核心概念什么是上下文、什么是 MDL、记忆如何工作构建并部署 GenBI 应用生成仪表盘并上线CLI 参考 与 MDL 参考架构总览四层结构Agent 工作流 → 项目上下文 → 规划引擎 → 执行层与六根正确性支柱schema linking、value profiling、歧义检测、生成轨迹、重试修复、eval贡献指南。小结WrenAI 把生成式 BI拆解为可独立使用的原语——wren skills get按需取工作流、wren query/dry-plan/dry-run提供受治理的执行与校验、MDL 文件与knowledge/目录承载全部业务真相、LanceDB 记忆让确认过的查询成为下一次生成的先例。整套能力以 Apache-2.0 开放Agent 是主操作者人通过 Git 做评审——这正是它与传统 BI 工具和裸 LLM Agent 的本质区别。【免费下载链接】WrenAIGenBI (Generative BI) for AI agents, an open-source, governed text-to-SQL through an open context layer that turns natural-language questions into trusted dashboards, charts, and SQL across 20 data sources, such as BigQuery, Snowflake, PostgreSQL, ClickHouse, Amazon Redshift, Databricks and more.项目地址: https://gitcode.com/GitHub_Trending/wr/WrenAI创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表