Vanna适配鲲鹏开源验证任务心得
首先参考任务计划书:https://bbs.huaweicloud.com/blogs/440080 ,主要目的是将Vanna项目适配华为鲲鹏处理器、OpenEuler操作系统和GaussDB数据库,确保项目能够在这些平台上高效运行。也即验证Vanna能否在Kunpeng(鲲鹏)处理器、OpenEuler操作系统上运行以及能否链接GaussDB数据库。
1 开发过程
1.1 准备工作
Vanna作为一个工具类开源项目,使用的方法是分为两步:训练和提问。训练需要选择一个LLM、vectorDB和数据库。使用的LLM和VectorDB的服务都是Vanna.ai提供的在线服务,所以第一步申请账号。打开vanna工具的官网:https://vanna.ai/ ,点击“免费开始”完成账号注册,定义自己的rag模型名称获取API-key。
接着,在华为云平台上创建GuassDB(for Mysql)数据库。在云数据库RDS-管理控制台https://console.huaweicloud.com/rds/?agencyId=d97617ffc1c848cd97ae2e9e9d4f1c4a®ion=cn-north-4&locale=zh-cn#/rds/management/list 上购买数据库实例,创建成功后点击实例名称进入详情页面后点击数据库管理创建数据库。
1.2 构建Vanna对象
完成数Vanna.ai和数据库的准备后,就可以构建vanna对象。参照Vanna.ai官网的操作文档MySQL - Vanna.AI Documentation(https://vanna.ai/docs/mysql-openai-vanna-vannadb/) ,分别选择LLM:OpenAI via Vanna.AI(Recommended)、Vanna Hosted Vector DB(Recommended)、MySQL后在Setup下面会生成响应代码。使用pip安装对应的vanna库,如:pip install ‘vanna[mysql]’后使用Setup下面的代码,将API-key和RAG Models键入替换后运行即可创建Vanna对象。
接着和数据库进行链接:vn.connect_to_mysql(host='my-host', dbname='my-db', user='my-user', password='my-password', port=3306).
再使用pymysql对数据库增添训练数据:
create_table_sql = """
CREATE TABLE IF NOT EXISTS vuser (
`id` INT PRIMARY KEY COMMENT '用户ID',
username VARCHAR(50) COMMENT '用户名',
email VARCHAR(100) COMMENT '电子邮件',
age INT COMMENT '年龄',
gender VARCHAR(10) COMMENT '性别(男/女)',
city VARCHAR(50) COMMENT '城市'
) COMMENT='用户信息表' CHARACTER SET=utf8 COLLATE=utf8_unicode_ci;
"""
insert_data_sql = """
INSERT INTO vuser (`id`, username, email, age, gender, city) VALUES
(1, '张三', 'zhangsan@example.com', 30, '男', '北京'),
(2, '李四', 'lisi@example.com', 25, '女', '上海'),
(3, '王五', 'wangwu@example.com', 40, '男', '广州'),
(4, '赵六', 'zhaoliu@example.com', 35, '女', '深圳'),
(5, '小明', 'xiaoming@example.com', 28, '男', '成都'),
(6, '小红', 'xiaohong@example.com', 45, '女', '重庆'),
(7, '小华', 'xiaohua@example.com', 32, '男', '天津'),
(8, '小丽', 'xiaoli@example.com', 27, '女', '南京'),
(9, '小李', 'xiaoli2@example.com', 38, '男', '武汉'),
(10, '小美', 'xiaomei@example.com', 33, '女', '西安');
"""
1.3 训练
使用SQL DDL语句进行训练,同一张表在不改变数据的情况下只需训练一次。
vn.train(ddl="""
CREATE TABLE IF NOT EXISTS vuser (
id INT PRIMARY KEY COMMENT '用户ID',
username VARCHAR(50) COMMENT '用户名',
email VARCHAR(100) COMMENT '电子邮件',
age INT COMMENT '年龄',
gender VARCHAR(10) COMMENT '性别(男/女)',
city VARCHAR(50) COMMENT '城市'
) COMMENT='用户信息表' CHARACTER SET=utf8 COLLATE=utf8_unicode_ci;
""")
训练完成后会生成一个id。
1.4 提问
训练完成后就可以进行提问与数据库进行对话了,调用vn.ask(question=...)写入相应问题即可进行对话。
如vn.ask("年龄在30岁以上的用户有哪些?")即可开启对话。
2 验收材料
2.1 交付清单件
- DEMO仓库地址: https://gitcode.com/sunpeng024/vanna/tree/main?init=initRepo
- 博客的地址: https://bbs.huaweicloud.com/blogs/440103
- 开源软件fork地址:不涉及
- 开源软件修改记录(可以有多个修改记录):不涉及
- 推送上游社区PR(包括代码、文档、可以有多个):不涉及
验收细则 |
评分说明 |
是否为验收必选项 |
结果(通过/不通过) |
功能开发:完成与华为三大根技术生态(鲲鹏云、昇腾云、鸿蒙)适配的功能开发 |
基于昇腾和Euler系统完成验证。 |
是 |
|
代码质量:适配华为三大根技术生态的代码质量经过工具检测达标 |
推送给开源社区的代码符合开源社区关于代码风格、功能、自动化测试等要求。 |
否 |
|
提供相关文档,比如部署文档、使用文档、配置文档等 |
根据社区要求,完善相关的开发指南和部署指导 |
否 |
|
合入到开源项目主仓:代码推送上游社区 |
代码合并到当前主干分支。 |
否 |
|
Deomo设计&开发:完成功能演示Demo的开发 |
提供DEMO仓库地址。 |
是 |
|
Demo部署&验证:完成功能演示DEMO基于华为云鲲鹏环境的部署和功能验证 |
提供DEMO部署验证结果的关键截图进行举证。提供DEMO运行环境和资源的截图举证。 |
是 |
|
发布博客:发布博客介绍适配心得。 |
提供博客的地址。 |
是 |
|
制作单机版无高危开源镜像。 |
上架云商店。 |
否 |
|
单机版镜像上架时支持模板部署。 |
|
否 |
|
制作集群版无高危开源镜像 |
上架云商店。 |
否 |
|
集群版镜像上架时支持模板部署 |
|
否 |
|
3 资源清单
3.1 ECS
产品名称 |
CPU架构 |
实例类型 |
公共镜像 |
镜像版本 |
备注 |
弹性云服务器 |
鲲鹏计算Kunpeng-920 |
鲲鹏通用计算增强型kc1 |
Huawei Cloud EulerOS |
Huawei Cloud EulerOS 2.0 Arm 64bit sdi5 for ECS BareMetal With Uniagent(150GiB) |
推荐 |
3.2 GaussDB(for MySQL)
产品名称 |
产品版本 |
数据库引擎版本 |
数据同步方式 |
实例类型 |
实例读写状态 |
云数据库Mysql |
标准版 |
GaussDB(for MySQL 8.0.28 |
半同步 |
高可用 |
读写 |
4 验证截图
4.1 链接数据库
4.2 Cpu训练
生成id表明训练成功
4.3 Cpu 推理
询问结果
- 点赞
- 收藏
- 关注作者
评论(0)