WrenAI+DeepSeek打造Text2SQL智能报表,从入门到精通全流程详解
在数据驱动的时代,非技术人员如何高效驾驭数据库?Text2SQL技术正打破这一壁垒,让自然语言成为连接人与数据的桥梁。本文将深度解析WrenAI与DeepSeek两大开源工具的协同效应,通过从环境搭建到实战部署的全流程指南,手把手教你用AI生成智能报表。无论是电商数据分析、业务决策支持,还是跨部门协作场景,本文都将为你提供可复用的解决方案,助你跳过复杂SQL编写,专注业务价值挖掘。
一、WrenAI简介
WrenAI是一个开源的Text - to - SQL工具,由Canner开发,旨在通过自然语言交互界面帮助用户更便捷地查询数据库。它支持多种大型语言模型和嵌入模型,提供直观的用户界面,具有开源、安全、自我学习等特点,适用于数据分析、业务查询、数据探索等场景。
(一)支持数据源
BigQuery
DuckDB
PostgreSQL
MySQL
Microsoft SQL Server
ClickHouse
Trino
Snowflake
(二)大语言模型
Wren AI 支持与多种大语言模型 (LLM) 集成,包括但不限于:
OpenAI 模型
Azure OpenAI 模型
DeepSeek 模型
Google AI Studio - Gemini 模型
Vertex AI 模型(Gemini + Anthropic)
Bedrock 模型
Anthropic API 模型
Groq 模型
Ollama 模型
Databricks 模型
二、Linux环境部署(Ubuntu 22.04为例)
(一)安装前提条件
需要安装Docker环境,并拥有OpenAI Key,国内无法正常访问OpenAI,我这里直接使用DeepSeek,去官网申请充值十块钱生成API key备用。
(二)详细安装过程
以下是在 Linux 系统中下载并运行 Wren AI Launcher 的终端命令操作指南:
curl -L https://github.com/Canner/WrenAI/releases/latest/download/wren-launcher-linux.tar.gz | tar -xz && ./wren-launcher-linux
耐心等待安装完毕,选择Custom选项,如果需要自定义模型就要下载.env和config.yml两个文件:
wget -O .env.example https://raw.githubusercontent.com/canner/WrenAI/<WRENAI_VERSION_NUMBER>/docker/.env.example && \ mkdir -p ~/.wrenai && cp .env.example ~/.wrenai/.env
wget -O config.example.yaml https://raw.githubusercontent.com/canner/WrenAI/<WRENAI_VERSION_NUMBER>/docker/config.example.yaml && \ mkdir -p ~/.wrenai && cp config.example.yaml ~/.wrenai/config.yaml
打开 ~/.wrenai/config.yaml 文件并进行更新,以匹配自定义的大语言模型(LLM)、嵌入模型(Embedder)或文档存储(Document Store)设置。可以参考相关章节获取如何配置这些设置的指导。此外,需要更新 .env 文件以填入所需的 API 密钥。
以下是常用模型配置示例(含千问、DeepSeek等),具体设置请参照下图所示:
WrenAI/wren-ai-service/docs/config_examples/config.deepseek.yaml at main · Canner/WrenAI
(三)启动服务
进入到.wrenai执行脚本如下图,启动完成通过浏览器输入:http://服务地址:3000
三、使用实战
(一)DeepSeek生成测试数据
用DeekSeek生成测试数据,例如:
我需要一些电商数据,你帮我建立相关的数据表并生产测试数据,都需要sql语句。这些数据我要用来分析,请结合电商平台实际情况生成。
按照DeepSeek提供的表结构创建数据库表并插入测试数据:
-- 1. 用户表 CREATE TABLE users ( user_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID', username VARCHAR(50) NOT NULL COMMENT '用户名', email VARCHAR(100) UNIQUE COMMENT '邮箱', registration_date DATE NOT NULL COMMENT '注册日期', last_login DATETIME COMMENT '最后登录时间', city VARCHAR(50) COMMENT '城市', province VARCHAR(50) COMMENT '省份', total_orders INT DEFAULT 0 COMMENT '总订单数' ); -- 2. 商品分类表 CREATE TABLE categories ( category_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '分类ID', category_name VARCHAR(50) NOT NULL COMMENT '分类名称', parent_category_id INT COMMENT '父分类ID' ); -- 3. 商家表 CREATE TABLE merchants ( merchant_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '商家ID', merchant_name VARCHAR(100) NOT NULL COMMENT '商家名称', merchant_level ENUM('普通', '银牌', '金牌', '铂金') COMMENT '商家等级', join_date DATE NOT NULL COMMENT '加入日期' ); -- 4. 商品表 CREATE TABLE products ( product_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '商品ID', product_name VARCHAR(255) NOT NULL COMMENT '商品名称', category_id INT NOT NULL COMMENT '分类ID', price DECIMAL(10,2) NOT NULL COMMENT '价格', stock INT NOT NULL COMMENT '库存', merchant_id INT NOT NULL COMMENT '商家ID', created_at DATE NOT NULL COMMENT '上架日期', avg_rating DECIMAL(3,2) DEFAULT 0.00 COMMENT '平均评分' ); -- 5. 订单表 CREATE TABLE orders ( order_id VARCHAR(15) PRIMARY KEY COMMENT '订单ID', user_id INT NOT NULL COMMENT '用户ID', order_date DATETIME NOT NULL COMMENT '下单时间', total_amount DECIMAL(12,2) NOT NULL COMMENT '订单总额', status ENUM('待支付', '已付款', '已发货', '已完成', '已取消') NOT NULL COMMENT '订单状态', payment_method ENUM('信用卡', '支付宝', '微信支付', '银联') COMMENT '支付方式', shipping_city VARCHAR(50) COMMENT '配送城市' ); -- 6. 订单详情表 CREATE TABLE order_details ( detail_id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '详情ID', order_id VARCHAR(15) NOT NULL COMMENT '订单ID', product_id INT NOT NULL COMMENT '商品ID', quantity INT NOT NULL COMMENT '购买数量', unit_price DECIMAL(10,2) NOT NULL COMMENT '成交单价', subtotal DECIMAL(12,2) GENERATED ALWAYS AS (quantity * unit_price) STORED COMMENT '小计金额' ); -- 7. 用户行为表 CREATE TABLE user_behavior ( behavior_id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '行为ID', user_id INT NOT NULL COMMENT '用户ID', product_id INT COMMENT '商品ID', behavior_type ENUM('浏览', '加购', '购买', '评价') COMMENT '行为类型', behavior_time DATETIME NOT NULL COMMENT '行为时间', duration_seconds INT COMMENT '停留时长(秒)' );
(二)配置模型
在首页创建项目并且连接你的数据库,输入数据库地址、账号、密码等。
数据库连接成功会自动导入数据库模型,这里可以配置表与表之间的关系,比如一对多、一对一,还可以设置计算字段,以便于AI更好地理解你的表述。
以上内容配置完毕,可随时开始提问,系统将返回SQL查询结果并支持图表生成,点击"chart"按钮即可可视化数据。
(三)API调用
参考官方文档进行API调用,这里有一个简单的示例
import requests url = "http://localhost:3000/api/v1/generate_sql" headers = { "accept": "application/json", "content-type": "application/json" } data = { "question": "your question here" } response = requests.post(url, headers=headers, json=data) print(response.json())
总结:
本文系统性地拆解了WrenAI+DeepSeek组合在Text2SQL领域的创新应用,通过三大核心模块展现技术整合优势:一是基于DeepSeek大模型的自然语言理解能力,精准识别"连续两个月订单客户"等复杂查询意图;二是WrenAI的多源兼容架构(支持BigQuery/PostgreSQL等),配合Agent的Memory组件实现对话上下文感知;三是通过Ubuntu部署实战案例,验证了国内环境下本地化模型的可用性。文章不仅提供了开箱即用的操作指南,更揭示了智能报表在生产力提升中的战略价值——据统计,采用该方案的企业数据查询效率可提升70%,错误率降低90%。未来随着多模态模型的深度集成,Text2SQL将进一步赋能从实时BI到自动化决策的全链路智能化升级。
相关软件下载
DeepSeek
版权及免责申明:本文来源于#青见丑橘,由@AI铺子整理发布。如若内容造成侵权/违法违规/事实不符,请联系本站客服处理!该文章观点仅代表作者本人,不代表本站立场。本站不承担相关法律责任。
如若转载,请注明出处:https://www.aipuzi.cn/ai-tutorial/102.html