本案例由开发者:banjin提供
一、概述
1. 案例介绍
华为开发者空间 ,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云开发环境、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者 从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。
面对海量用户并发开发、测试对资源弹性与隔离性的高标准要求,华为开发者空间 - 云开发环境(虚拟机) 深度融合了弹性云主机的高性能计算与容器技术的敏捷弹性,通过构建集高效计算、安全隔离、敏捷部署于一体的云原生基础设施,不仅保障了云开发环境的稳定可靠,更实现了资源的秒级伸缩与高效利用,为加速应用创新提供了坚实底座。
Vanna是一个基于Python的开源框架,专注于构建、训练和部署面向SQL数据库的智能问答代理。其核心价值在于使用户能够通过自然语言直接与数据库进行交互,无需手动编写复杂的SQL查询语句。
本方案依托华为开发者空间提供的云开发平台,结合MaaS(模型即服务)与Vanna开源框架,在HCE 2.0环境中实现了Vanna的本地化部署,构建了一套支持自然语言与数据库交互的Text-to-SQL对话系统。
2. 适用对象
- 企业
- 个人开发者
- 高校学生
3. 案例时间
本案例总时长预计60分钟。
4. 案例流程
说明:
- 登录华为开发者空间 ,VS Code安装Huawei Developer Space插件,远程连接操作云开发环境;
- 远程创建、开机、连接云开发环境(虚拟机),并创建8084端口转发;
- 云开发环境(虚拟机)安装git,从GitCode平台拉取Vanna工程代码;
- 领取百万token代金券福利,开通商用模型服务,获取模型API 地址、API Key等参数;
- 安装部署MySQL数据库,创建school数据库,创建数据表,插入测试数据;
- 修改配置、启动、运行、测试Vanna AI工程。
5. 资源总览
本案例预计花费0元。
| 资源名称 | 规格 | 单价(元) | 时长(分钟) |
|---|---|---|---|
| 华为开发者空间 - 云开发环境 | 鲲鹏通用计算增强型 kc1 | 2vCPUs | 4G | HCE | 免费 | 60 |
二、基础环境与资源准备
1. 领取百万免费token福利
参考案例《Versatile Agent中自定义接入大模型配置华为云Maas指导》 中的“一、 领取”章节内容,领取华为开发者空间百万token代金券福利 ,购买ModelArts Studio DeepSeek-V3 轻量体验包 (¥3.50)。开通商用模型服务,最后获取API地址、API Key的参数值。
2. VS Code远程连接云开发环境(虚机)
华为开发者空间 - 云开发环境为开发者提供专属云端开发主机,集成主流IDE工具,支持多端访问和API/SDK调用,打造开箱即用的开发环境。
参考案例《华为开发者空间-云开发环境(虚拟机)IDE插件远程连接操作指导》 中的“二、云开发环境IDE插件远程连接操作指导”,完成“1. 创建” ~ “3. 连接”章节步骤。
完成连接之后的状态:
参考“4. 端口转发”前两步创建8084端口转发:
3. 安装git
在VS Code命令行输入如下指令,安装git
sudo yum install git
4. 配置Python开发环境
4.1 配置Python虚拟环境
云开发环境虚拟机已为开发者预置了python 3.9.9环境,输入以下指令验证环境:
python --version
设置pip源:
pip config set global.index-url https://repo.huaweicloud.com/repository/pypi/simple/
pip config list
配置python虚拟环境:
python -m venv myenv
source myenv/bin/activate
4.2 安装Python插件
在VS Code远程连接窗口中,点插件市场,搜索python,然后选中插件,点Install in SSH…。
4.3 配置解释器
在VS Code搜索框输入> Python:Select Interpreter,回车,然后选择“4.1 配置Python虚拟环境”中创建的myenv。
5. 安装MySQL
- 在
/home/developer/workspace目录下,通过如下命令下载mysql80-community-release-el8-9.noarch.rpm。
wget https://dev.mysql.com/get/mysql80-community-release-el8-9.noarch.rpm
- 安装MySQL
sudo yum -y install mysql80-community-release-el8-9.noarch.rpm
sudo yum -y install mysql-community-server
- 启动MySQL重置密码
启动MySQL:
sudo systemctl start mysqld
获取初始密码:
sudo grep 'temporary password' /var/log/mysqld.log
使用上一步中获取到的初始密码登录MySQL,登录成功后设置新密码:
mysql -uroot -p
alter user 'root'@'localhost' identified by 'your password';
三、Vanna部署
1. 创建数据库
1.1 创建数据库school
在数据库登录状态下,执行以下命令创建school数据库,并切换到该数据库:
CREATE DATABASE school DEFAULT CHARACTER SET = 'utf8mb4';
SHOW DATABASES;
USE school;
1.2 创建students表,并插入数据
CREATE TABLE students (
student_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '学生ID',
name VARCHAR(50) NOT NULL COMMENT '学生姓名',
age INT COMMENT '年龄',
major VARCHAR(100) COMMENT '专业',
email VARCHAR(100) UNIQUE COMMENT '电子邮件'
);
INSERT INTO students (name, age, major, email) VALUES
('张三', 20, '计算机科学', 'zhangsan@example.com'),
('李四', 21, '电子工程', 'lisi@example.com'),
('王五', 19, '数学', 'wangwu@example.com'),
('赵六', 22, '物理', 'zhaoliu@example.com'),
('钱七', 20, '化学', 'qianqi@example.com'),
('孙八', 21, '生物', 'sunba@example.com'),
('周九', 19, '历史', 'zhoujiu@example.com'),
('吴十', 22, '哲学', 'wushi@example.com'),
('郑十一', 20, '艺术', 'zhengshiyi@example.com'),
('王十二', 21, '音乐', 'wangshier@example.com'),
('陈十三', 19, '体育', 'chenshisan@example.com'),
('冯十四', 22, '英语', 'fengshisi@example.com'),
('董十五', 20, '法语', 'dongshiwu@example.com'),
('萧十六', 21, '德语', 'xiaoshiliu@example.com'),
('曹十七', 19, '日语', 'caoshiqi@example.com'),
('许十八', 22, '韩语', 'xushiba@example.com'),
('蒋十九', 20, '西班牙语', 'jiangshijiu@example.com'),
('沈二十', 21, '意大利语', 'shenshier@example.com'),
('韩二十一', 19, '心理学', 'hanershiyi@example.com'),
('杨二十二', 22, '社会学', 'yangershi@example.com');
验证查询students表:
SELECT * FROM students;
1.3 创建courses表,并插入数据
CREATE TABLE courses (
course_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '课程ID',
course_name VARCHAR(100) NOT NULL COMMENT '课程名称',
credits INT COMMENT '学分',
teacher_id INT COMMENT '教师ID'
);
INSERT INTO courses (course_name, credits, teacher_id) VALUES
('数据结构', 4, 1),
('微积分', 3, 2),
('编程基础', 3, 3),
('物理实验', 2, 4),
('化学原理', 3, 5),
('生物技术', 4, 6),
('历史概论', 2, 7),
('哲学思考', 3, 8);
验证查询courses表:
SELECT * FROM courses;
1.4 创建courses表,并插入数据
CREATE TABLE enrollments (
enrollment_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '选课记录ID',
student_id INT NOT NULL COMMENT '学生ID',
course_id INT NOT NULL COMMENT '课程ID',
grade FLOAT COMMENT '成绩'
);
INSERT INTO enrollments (student_id, course_id, grade) VALUES
(1, 1, 85.5),
(2, 2, 90.0),
(3, 3, 78.5),
(4, 4, 82.0),
(5, 5, 88.5),
(6, 6, 75.0),
(7, 7, 80.5),
(8, 8, 87.0),
(9, 1, 81.0),
(10, 2, 85.5),
(11, 3, 79.0),
(12, 4, 83.0),
(13, 5, 86.5),
(14, 6, 77.0),
(15, 7, 82.5),
(16, 8, 88.0),
(17, 1, 84.0),
(18, 2, 87.5),
(19, 3, 80.0),
(20, 4, 85.0),
(21, 5, 83.5),
(22, 6, 78.0),
(23, 7, 81.5),
(24, 8, 86.0),
(25, 1, 82.0),
(26, 2, 84.5),
(27, 3, 79.5),
(28, 4, 83.0),
(29, 5, 86.5),
(30, 6, 77.5);
验证表格创建成功:
SELECT * FROM enrollments;
使用exit;命令,退出MySQL。
2. 安装Vanna
2.1 查看官方文档
登录官网文档:https://vanna.ai/docs/,通过官方文档选配安装方式。
登录官网文档,选择Vector Databases > Quickstart With Your Own Data,进入快速开始选配页面。
- 大模型LLM:
OpenAI
- 数据训练:ChromaDB开源向量数据库
- 被检索的数据库类型:MySQL
由此我们获取到Vanna安装、创建、调用、训练等样例代码。下一步我们将先开始安装Vanna。
2.2 安装Vanna
安装Vanna需要依赖OpenAI,输入如下指令对其进行安装:
pip3 install openai
安装Vanna:
pip3 install 'vanna[chromadb,openai,mysql]'
安装依赖包cryptography:
pip3 install cryptography
3. 部署Vanna工程
3.1 获取项目源码
通过如下命令获取Vanna工程源码:
git clone https://gitcode.com/sinat_41661654/VannaAI_Mysql.git
3.2 Vanna工程功能介绍
- Vanna初始化
导入必要的包文件,完成MyVanna初始化,在初始化过程中,完成OpenAI的参数设置。
注:将“二、基础环境与资源准备”的“领取百万免费token福利”章节中获取到的API Key、API地址分别替换代码中的api_key、base_url参数。(API地址注意删除其尾缀/chat/completions)
- 设置连接MySQL参数
注:实际操作中注意替换在“二、基础环境与资源准备”的“5. 安装MySQL”中所设置的数据库参数。
- 训练模型
- 启动Vanna
4. 运行/测试Vanna
在VS Code右上角点运行按钮,输出如下日志信息,程序启动成功。
浏览器访问地址:http://localhost:8084,然后对Vanna提问:“每门课程的最高分是多少?”。
Vanna.AI先将自然语言进行了分析,答复可被执行的SQL语句。执行SQL,然后将查询到的数据表格化显示。
生成图表,并且转化成自然语言进行答复。最后询问:“结果是否正确?”,我们可以通过按钮Yes, train as Question-SQL pair或者NO回答Vanna.AI。
至此基于华为开发者空间开发平台 - 云开发环境,使用Vanna结合MaaS实现Text-to-SQL自然语言与数据库对话案例结束。
6万+

被折叠的 条评论
为什么被折叠?



