Vanna适配鲲鹏开源验证任务心得
首先参考任务计划书:https://bbs.huaweicloud.cn/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.cn/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 链接数据库
2.2 Cpu训练
生成id表明训练成功
2.3 Cpu 推理
询问结果
- 点赞
- 收藏
- 关注作者
评论(0)