一、WrenAI简介

WrenAI是一个开源的Text - to - SQL工具,由Canner开发,旨在通过自然语言交互界面帮助用户更便捷地查询数据库。它支持多种大型语言模型和嵌入模型,提供直观的用户界面,具有开源、安全、自我学习等特点,适用于数据分析、业务查询、数据探索等场景。

Canner/WrenAI: ⚡️Wren AI is your GenBI Agent, that you can query any database with natural language → get accurate SQL(Text-to-SQL), charts(Text-to-Charts) & AI-generated insights in seconds.

(一)支持数据源

  • 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选项,如果需要自定义模型就要下载.envconfig.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调用,这里有一个简单的示例

👋 Welcome

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())
 

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐