
本地部署WrenAI一条命令连上数据库让自然语言问数真正跑起来【免费下载链接】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周五下午老板在群里问一句这个月各渠道营收多少你手里还压着两张没跑完的报表。WrenAI 想解决的问题就是这一刻它是一个开源的语义 SQL 层把你对表结构的理解写成一份叫 MDL 的上下文之后无论是你手敲的 SQL还是 AI agent 生成的 SQL都先经过这层语义校验再落到数据库执行支持 PostgreSQL、Snowflake、DuckDB 等 20 多种数据源。跟着下面的步骤一个 Python 包就能装完不碰 Docker十五分钟内你会用一句自然语言拿到第一份真实查询结果。一分钟认识它不是聊天机器人是一层语义翻译官WrenAI 的核心不在聊而在翻译得对。你的问题进来它先检索相关的表和列这一步可选装了 memory 扩展之后会记住你确认过的问法再对照 MDL 里写好的模型、字段和表间关系把自然语言落成一版 SQL这版 SQL 不直接发给数据库而是先编译到target/mdl.json语义清单上做方言转换和校验最后翻译成目标库的原生 SQL 执行返回行级结果。整个过程输入是一个问题中间是检索上下文 → 语义规划 → 方言执行三步输出是可验证的数字。它适合两类人需要把取数 SQL 交给 AI agent 生成的团队和想要一份可审查、可版本管理的语义层来管住 BI 口径的人。最小可运行路径四步跑通第一条查询前置条件只有一个Python 3.11 以上装 DuckDB 的数据文件即可开跑DuckDB 连接器已包含在基础包里。第一步安装并确认版本pip install wrenai # 核心包自带 DuckDB 连接器 wren version # 应打印 wrenai x.y.z说明 CLI 可用装完会得到一个wren命令行入口后面所有操作都靠它。第二步造一个本地数据库当演示数据# make_demo.py生成 shop.duckdb两张表几行数据 import duckdb con duckdb.connect(shop.duckdb) con.execute(CREATE TABLE customers(id INTEGER, name VARCHAR)) con.execute(INSERT INTO customers VALUES (1,Alice),(2,Bob),(3,Carol)) con.execute(CREATE TABLE orders(id INTEGER, customer_id INTEGER, amount DOUBLE, status VARCHAR)) con.execute(INSERT INTO orders VALUES (101,1,250.0,paid),(102,1,80.0,paid),(103,2,190.0,refunded)) con.close()执行后同目录下多了一个shop.duckdb文件这就是本节的生产库。第三步建连接配置并初始化项目wren profile add demo-shop --interactive # 交互式表单选择 duckdb 数据源 wren context init # 生成 wren_project.yml 与 models/ 目录 wren context set-profile demo-shop # 把项目绑定到刚才的连接第一条命令在~/.wren/profiles.yml里存了一份连接信息关键是url要填包含.duckdb文件的目录如/path/to/demo不是文件本身format填duckdb。第四步声明两张表的关系编译查询# models/orders/metadata.ymlorders 模型声明字段 # models/customers/metadata.ymlcustomers 模型 # relationships.ymlorders.customer_id customers.id wren context build # 把 YAML 编译成 target/mdl.json wren --sql SELECT status, COUNT(*) FROM orders GROUP BY status成功长这样终端里按table格式打印出paid 2 / refunded 1。查到了部署就算跑通。场景一按状态汇总营收一行 SQL 出结果老板要各状态的订单数和金额。不需要自然语言入口直接写wren --sql SELECT status, COUNT(*) AS cnt, SUM(amount) AS total FROM orders GROUP BY status ORDER BY total DESC注意 SQL 里写的是模型名orders不是物理表名——引擎会把它翻译成数据库里的真实位置。返回的每行数字就是可以直接贴进周报的口径。场景二SQL 不准时先让它把翻译过程展示给你怀疑口径错了别急着改表结构先跑一次wren dry-plan它会只翻译、不执行把 MDL SQL 到物理 SQL 的映射打印出来wren dry-plan --sql SELECT name, SUM(amount) FROM orders JOIN customers ON orders.customer_id customers.id GROUP BY name输出的原生 SQL 里能看到 JOIN 路径和方言细节。翻译结果不对问题几乎一定出在relationships.yml的关联条件上——这是排查 SQL 错误的第一落点。场景三给高频口径固化成一个 cube以后不写 GROUP BY按月看营收这种问题你每周都会回答一次。在cubes/revenue/metadata.yml里声明 measures如amount的 SUM和 time-dimensionorder_date:month再编译一次之后查询变成结构化参数wren cube list # 确认 cube 已注册 wren cube query --cube revenue --measures total --time-dimension order_date:month引擎替你生成DATE_TRUNC和GROUP BY跑的是和wren --sql完全相同的执行路径。口径写一次全团队复用这就是语义层相对每次现写 SQL的差别。场景四把 demo 换成你自己的 PostgreSQL前面用 DuckDB 只是为了零依赖。接真实数仓只需换数据源pip install wrenai[postgres] # 按你的数据源加对应连接器 # wren profile add prod-pg --interactive # 选择 postgres填 host / port / database / user / password wren context set-profile prod-pg # 项目改绑新连接 wren --sql SELECT COUNT(*) FROM orders同样的模型声明、同样的查询语法数据源从本地文件换成线上库一行命令的事。踩坑经验这几个地方最容易卡住表找不到九成是 DuckDB 配置填错了profile 的url是目录文件会以文件名去掉扩展名挂成 catalog。现象是查main.customers报不存在解法是把url改成目录路径模型里table_reference.schema写main、catalog写shop。改完 YAML 查询没变化是因为 CLI 读的是上次编译出的target/mdl.json。任何模型、关系改动之后补一句wren context build再查别怀疑自己没改对。wren_project.yml里的catalog、schema和模型里的table_reference长得一样含义完全不同前者是 Wren 内部命名空间保持默认即可后者才是数据库里的真实位置。混着填编译能过、查询必炸。macOS 上第一次跑 memory 相关命令卡几十秒是系统安全扫描在扫嵌入模型库一次性行为不用中断。装的时候用wrenai[memory-onnx]代替wrenai[memory]体积更小向量结果一致。调优建议如果 agent 生成的 SQL 经常挑错表、挑错列把检索量调一调——wren memory fetch支持--top-k控制召回的表和列数量同时在knowledge/rules/下写清营收 orders.amount这类业务定义比反复改 prompt 管用得多。什么时候用它什么时候绕开它多张表、表间要 JOIN、口径必须全公司一致、还要把 SQL 生成交给 AI agent 执行——这是 WrenAI 的主场语义层和治理校验会一直替你兜底。反过来数据就躺在一张 CSV 或单张小表里、只是想临时看两眼直接用 DuckDB 或 pandas 更快为它写 MDL 属于高射炮打蚊子。它开源版本身也不带 Web 报表界面交付形态是 CLI、SDK 和可部署的浏览器端应用介意的话先了解清楚再上手。完整 CLI 参考和连接字段说明见仓库内的 docs/ 与 core/wren/docs/。把shop.duckdb换成你自己的库先问它一个你昨天刚手工写过的问题。【免费下载链接】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),仅供参考