超全指南!Text2SQL问答生成报表,WrenAI+DeepSeek完整实战手册(附操作截图)
WrenAI是一个开源的Text - to - SQL工具,由Canner开发,旨在通过自然语言交互界面帮助用户更便捷地查询数据库。它支持多种大型语言模型和嵌入模型,提供直观的用户界面,具有开源、安全、自我学习等特点,适用于数据分析、业务查询、数据探索等场景。
一、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())
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐

所有评论(0)