Vanna适配鲲鹏开源验证任务心得

举报
sunp 发表于 2024/11/21 16:47:23 2024/11/21
【摘要】        首先参考任务计划书:https://bbs.huaweicloud.com/blogs/440080 ,主要目的是将Vanna项目适配华为鲲鹏处理器、OpenEuler操作系统和GaussDB数据库,确保项目能够在这些平台上高效运行。也即验证Vanna能否在Kunpeng(鲲鹏)处理器、OpenEuler操作系统上运行以及能否链接GaussDB数据库。1       开发过程1...

       首先参考任务计划书:https://bbs.huaweicloud.com/blogs/440080 ,主要目的是将Vanna项目适配华为鲲鹏处理器、OpenEuler操作系统和GaussDB数据库,确保项目能够在这些平台上高效运行。也即验证Vanna能否在Kunpeng(鲲鹏)处理器、OpenEuler操作系统上运行以及能否链接GaussDB数据库。

1       开发过程

1.1       准备工作

Vanna作为一个工具类开源项目,使用的方法是分为两步:训练和提问。训练需要选择一个LLMvectorDB和数据库。使用的LLMVectorDB的服务都是Vanna.ai提供的在线服务,所以第一步申请账号。打开vanna工具的官网:https://vanna.ai/ ,点击“免费开始”完成账号注册,定义自己的rag模型名称获取API-key图片3.png


接着,在华为云平台上创建GuassDBfor Mysql)数据库。在云数据库RDS-管理控制台https://console.huaweicloud.com/rds/?agencyId=d97617ffc1c848cd97ae2e9e9d4f1c4a&region=cn-north-4&locale=zh-cn#/rds/management/list 上购买数据库实例,创建成功后点击实例名称进入详情页面后点击数据库管理创建数据库。

1.2       构建Vanna对象

完成数Vanna.ai和数据库的准备后,就可以构建vanna对象。参照Vanna.ai官网的操作文档MySQL - Vanna.AI Documentationhttps://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-keyRAG Models键入替换后运行即可创建Vanna对象。


图片4.png


接着和数据库进行链接: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       交付清单件

验收细则

评分说明

是否为验收必选项

结果(通过/不通过)

功能开发:完成与华为三大根技术生态(鲲鹏云、昇腾云、鸿蒙)适配的功能开发

基于昇腾和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       链接数据库


图片5.png


4.2       Cpu训练


图片6.png


生成id表明训练成功

4.3       Cpu 推理

询问结果


图片7.png


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。