去年我们已经发布过关于 TDSQL-C serverless 的文章,并进行了相关的性能测试和实验。今天这篇文章将结合当前热门的 AI 大模型,继续对该产品进行深入实验和分析。
在正式开始实验之前,按照惯例,我们先介绍一下文中涉及到的一些产品和技术。首先,TDSQL-C serverless 是一种高性能、弹性扩展的数据库解决方案,适用于各种复杂的应用场景。其次,AI 大模型近年来在自然语言处理、图像识别等领域取得了显著进展,成为推动技术创新的重要力量。
本次实验将重点关注 TDSQL-C serverless 在处理 AI 大模型相关数据时的性能表现。
如果想了解更多详细信息,可以参考官方文档。
产品介绍
TDSQL-C(Cloud Native Database TDSQL-C)是腾讯云自研的新一代高性能、高可用的企业级分布式云数据库。它融合了传统数据库、云计算与新硬件技术的优势,100% 兼容 MySQL 和 PostgreSQL,旨在为用户提供极致弹性、高性能和海量存储的数据库服务。
功能特点
- 全面兼容:- 100% 兼容 MySQL 5.7、8.0 和 PostgreSQL 10.17,几乎无需改动代码,即可完成现有数据库的查询、应用和工具的平滑迁移。
- 超高性能:- 深度定制开发的数据库内核(TXSQL),性能远超同引擎的开源产品,特别适用于企业级的重要场景。
- 海量存储:- 支持最高 PB 级的海量存储,采用无服务器(Serverless)架构,自动扩缩容,轻松应对业务数据量的动态变化和持续增长。
- 快速恢复:- 计算节点实现无状态,支持本地和跨设备的秒级故障切换和恢复;支持基于快照的秒级备份和回档。
- 数据高可靠:- 集群支持安全组和 VPC 网络隔离,自动维护数据和备份的多个副本,保障数据安全可靠,可靠性达 99.9999999%。
- 弹性扩展:- 计算节点可根据业务需要快速升降配,秒级完成扩容,结合弹性存储,实现计算资源的成本最优。
应用场景
TDSQL-C 适用于多种应用场景,包括但不限于:
- 游戏应用:灵活弹性扩展,高稳定性,适应业务峰值。
- 电商/直播/教育:支持大容量数据应用,快速响应业务需求。
- 金融/保险:高安全性和可靠性,保障数据安全。
- 互联网/移动 APP:高性能和高可用性,满足复杂应用需求。
TDSQL-C Serverless 是腾讯云自研的新一代云原生关系型数据库 TDSQL-C MySQL 版的无服务器架构版。它采用了“存算分离”的架构设计,具备高弹性、高性能和高可用性等特点。
主要特点
- 按需启动和停止:- 数据库实例会根据业务负载自动启动和停止,无需手动干预,极大地节省了资源和成本。
- 自动扩缩容:- 根据实际的 CPU 和内存使用情况,系统会自动进行扩容或缩容,确保在高峰期也能稳定运行。
- 按使用计费:- 费用按实际使用的计算和存储资源量收取,不用不付费,按秒计量,按小时结算。
- 高性能:- 采用深度定制的数据库内核,性能远超同类开源产品,特别适用于需要高性能和高可用性的企业级应用。
适用场景
- 开发和测试环境:适合低频使用的数据库场景。
- 物联网(IoT)和边缘计算:应对不确定负载的场景。
- 小程序云开发和中小企业建站:适用于 SaaS 应用场景。
- 学校实验或教学环境:全托管,免运维。
TDSQL-C Serverless 通过这些特点,为用户提供了灵活、高效且经济的数据库解决方案。
腾讯云的HAI(High-Performance AI)平台是一款面向AI和科学计算的高性能GPU算力服务产品。它提供即插即用的强大算力和常见环境,帮助中小企业和开发者快速部署大语言模型(LLM)、AI作画、数据科学等高性能应用。
主要特点
- 即插即用:HAI平台提供预装的开发工具和组件,用户可以快速启动并使用。
- 灵活使用:支持关机不计费和数据保留,用户可以根据需求动态开关机,节省成本。
- 一键部署:分钟级自动构建LLM、AI作画等应用环境,预置如StableDiffusion、ChatGLM等热门模型。
- 可视化界面:提供友好的图形界面,支持JupyterLab、WebUI等多种算力连接方式,降低AI研究和调试的门槛。
应用场景
- AI作画:利用深度学习算法进行创作,广泛应用于数字媒体、游戏、动画、电影和广告等领域。
- AI对话/写作:部署和调试大语言模型,进行自然语言处理任务。
- 数据科学:处理和分析大规模数据集,进行科学计算和研究。
优势
- 智能匹配算力:多种算力套餐满足不同需求,预置主流AI模型及常用插件。
- 动态更新:模型版本与时俱进,无需频繁操作。
- 高效开发:大幅提高应用层的开发生产效率,降低GPU云服务器使用门槛。
而在如今AI时代,TDSQL-C结合AI又会有怎样的火花,今天这篇文章将结合TDSQL-C、serverless、HAI(高性能应用服务)完成一个应用实验,给大家提供一个AI场景的新实验。
实验内容介绍
本次实验是基于python与Langchain,来完成对电商数据的分析
具体实验步骤
- 1.购买TDSQL-C Mysql Serverless
- 2.部署HAI llama 大模型
- 3.python环境及开发环境配置
- 4.验证结果
1.购买TDSQL-C Mysql Serverless
访问如下链接,进入数据库页面,点击立即选购
根据图表选择选定服务器
选定的服务器为 serverless 的服务器,具体配置如下:
设置账户信息,配置密码,选择字符集等,如下图:
然后前往管理页面,配置开启公网访问,通过在线管理工具,创建数据库,并完成数据初始化
如下登录管理工具
下面为新建库,并且初始化表
CREATE TABLE `ecommerce_sales_stats` (
`category_id` int NOT NULL COMMENT '分类ID(主键)',
`category_name` varchar(100) NOT NULL COMMENT '分类名称',
`total_sales` decimal(15,2) NOT NULL COMMENT '总销售额',
`steam_sales` decimal(15,2) NOT NULL COMMENT 'Steam平台销售额',
`offline_sales` decimal(15,2) NOT NULL COMMENT '线下实体销售额',
`official_online_sales` decimal(15,2) NOT NULL COMMENT '官方在线销售额',
PRIMARY KEY (`category_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 COMMENT='电商分类销售统计表';
INSERT INTO `ecommerce_sales_stats` VALUES (1,'电子产品',150000.00,80000.00,30000.00,40000.00),(2,'服装',120000.00,20000.00,60000.00,40000.00),(3,'家居用品',90000.00,10000.00,50000.00,30000.00),(4,'玩具',60000.00,5000.00,30000.00,25000.00),(5,'书籍',45000.00,2000.00,20000.00,23000.00),(6,'运动器材',70000.00,15000.00,25000.00,30000.00),(7,'美容护肤',80000.00,10000.00,30000.00,40000.00),(8,'食品',50000.00,5000.00,25000.00,20000.00),(9,'珠宝首饰',30000.00,2000.00,10000.00,18000.00),(10,'汽车配件',40000.00,10000.00,15000.00,25000.00),(11,'手机配件',75000.00,30000.00,20000.00,25000.00),(12,'电脑配件',85000.00,50000.00,15000.00,20000.00),(13,'摄影器材',50000.00,20000.00,15000.00,15000.00),(14,'家电',120000.00,60000.00,30000.00,30000.00),(15,'宠物用品',30000.00,3000.00,12000.00,16800.00),(16,'母婴用品',70000.00,10000.00,30000.00,30000.00),(17,'旅行用品',40000.00,5000.00,15000.00,20000.00),(18,'艺术品',25000.00,1000.00,10000.00,14000.00),(19,'健康产品',60000.00,8000.00,25000.00,27000.00),(20,'办公用品',55000.00,2000.00,20000.00,33000.00);
CREATE TABLE `users` (
`user_id` int NOT NULL AUTO_INCREMENT COMMENT '用户ID(主键,自增)',
`full_name` varchar(100) NOT NULL COMMENT '用户全名',
`username` varchar(50) NOT NULL COMMENT '用户名',
`email` varchar(100) NOT NULL COMMENT '用户邮箱',
`password_hash` varchar(255) NOT NULL COMMENT '用户密码的哈希值',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`is_active` tinyint(1) DEFAULT '1' COMMENT '是否激活',
PRIMARY KEY (`user_id`),
UNIQUE KEY `email` (`email`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
INSERT INTO `users` VALUES (1,'张伟','zhangwei','[email protected]','hashed_password_1','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(2,'李娜','lina','[email protected]','hashed_password_2','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(3,'王芳','wangfang','[email protected]','hashed_password_3','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(4,'刘洋','liuyang','[email protected]','hashed_password_4','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(5,'陈杰','chenjie','[email protected]','hashed_password_5','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(6,'杨静','yangjing','[email protected]','hashed_password_6','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(7,'赵强','zhaoqiang','[email protected]','hashed_password_7','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(8,'黄丽','huangli','[email protected]','hashed_password_8','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(9,'周杰','zhoujie','[email protected]','hashed_password_9','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(10,'吴敏','wumin','[email protected]','hashed_password_10','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(11,'郑伟','zhengwei','[email protected]','hashed_password_11','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(12,'冯婷','fengting','[email protected]','hashed_password_12','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(13,'蔡明','caiming','[email protected]','hashed_password_13','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(14,'潘雪','panxue','[email protected]','hashed_password_14','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(15,'蒋磊','jianglei','[email protected]','hashed_password_15','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(16,'陆佳','lujia','[email protected]','hashed_password_16','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(17,'邓超','dengchao','[email protected]','hashed_password_17','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(18,'任丽','renli','[email protected]','hashed_password_18','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(19,'彭涛','pengtao','[email protected]','hashed_password_19','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(20,'方圆','fangyuan','[email protected]','hashed_password_20','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(21,'段飞','duanfei','[email protected]','hashed_password_21','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(22,'雷鸣','leiming','[email protected]','hashed_password_22','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(23,'贾玲','jialing','[email protected]','hashed_password_23','2024-08-18 04:07:18','2024-08-18 04:07:18',1);
CREATE TABLE `orders` (
`order_id` int NOT NULL AUTO_INCREMENT,
`user_id` int DEFAULT NULL,
`order_amount` decimal(10,2) DEFAULT NULL,
`order_status` varchar(20) DEFAULT NULL,
`order_time` datetime DEFAULT NULL,
PRIMARY KEY (`order_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 ;
INSERT INTO `orders` VALUES (1,3,150.50,'已支付','2024-08-23 10:01:00'),(2,7,89.20,'待支付','2024-08-23 10:03:15'),(3,12,230.00,'已支付','2024-08-23 10:05:30'),(4,2,99.90,'已发货','2024-08-23 10:07:45'),(5,15,120.00,'待发货','2024-08-23 10:10:00'),(6,21,180.50,'已支付','2024-08-23 10:12:15'),(7,4,105.80,'待支付','2024-08-23 10:14:30'),(8,18,210.00,'已支付','2024-08-23 10:16:45'),(9,6,135.20,'已发货','2024-08-23 10:19:00'),(10,10,160.00,'待发货','2024-08-23 10:21:15'),(11,1,110.50,'已支付','2024-08-23 10:23:30'),(12,22,170.80,'待支付','2024-08-23 10:25:45'),(13,8,145.20,'已发货','2024-08-23 10:28:00'),(14,16,190.00,'待发货','2024-08-23 10:30:15'),(15,11,125.50,'已支付','2024-08-23 10:32:30'),(16,19,165.20,'待支付','2024-08-23 10:34:45'),(17,5,130.00,'已发货','2024-08-23 10:37:00'),(18,20,175.80,'待发货','2024-08-23 10:39:15'),(19,13,140.50,'已支付','2024-08-23 10:41:30'),(20,14,155.20,'待支付','2024-08-23 10:43:45'),(21,9,135.50,'已发货','2024-08-23 10:46:00'),(22,23,185.80,'待发货','2024-08-23 10:48:15'),(23,17,160.50,'已支付','2024-08-23 10:50:30'),(24,12,145.20,'待支付','2024-08-23 10:52:45'),(25,3,130.00,'已发货','2024-08-23 10:55:00'),(26,8,115.50,'已支付','2024-08-23 10:57:15'),(27,19,120.20,'待支付','2024-08-23 10:59:30'),(28,6,145.50,'已发货','2024-08-23 11:01:45'),(29,14,130.20,'待支付','2024-08-23 11:04:00'),(30,5,125.50,'已支付','2024-08-23 11:06:15'),(31,21,135.20,'待支付','2024-08-23 11:08:30'),(32,7,140.50,'已发货','2024-08-23 11:10:45'),(33,16,120.20,'待支付','2024-08-23 11:13:00'),(34,10,135.50,'已支付','2024-08-23 11:15:15'),(35,2,140.20,'待支付','2024-08-23 11:17:30'),(36,12,145.20,'待支付','2024-08-23 12:00:00'),(37,15,130.20,'已支付','2024-08-23 12:02:15'),(38,20,125.50,'待发货','2024-08-23 12:04:30'),(39,17,135.20,'已支付','2024-08-23 12:06:45'),(40,4,140.50,'待支付','2024-08-23 12:09:00'),(41,10,120.20,'已发货','2024-08-23 12:11:15'),(42,13,135.50,'已支付','2024-08-23 12:13:30'),(43,18,145.20,'待支付','2024-08-23 12:15:45'),(44,6,130.20,'已发货','2024-08-23 12:18:00'),(45,11,125.50,'已支付','2024-08-23 12:20:15'),(46,19,135.20,'待支付','2024-08-23 12:22:30'),(47,5,140.50,'已发货','2024-08-23 12:24:45'),(48,20,120.20,'待支付','2024-08-23 12:27:00'),(49,17,135.50,'已支付','2024-08-23 12:29:15'),(50,4,145.20,'待支付','2024-08-23 12:31:30'),(51,10,130.20,'已发货','2024-08-23 12:33:45'),(52,13,125.50,'已支付','2024-08-23 12:36:00'),(53,18,135.20,'待支付','2024-08-23 12:38:15'),(54,6,140.50,'已发货','2024-08-23 12:40:30'),(55,11,120.20,'待支付','2024-08-23 12:42:45'),(56,19,135.50,'已支付','2024-08-23 12:45:00'),(57,5,145.20,'待支付','2024-08-23 12:47:15'),(58,20,130.20,'已发货','2024-08-23 12:49:30'),(59,17,125.50,'已支付','2024-08-23 13:01:45'),(60,4,135.20,'待支付','2024-08-23 13:04:00'),(61,10,140.50,'已发货','2024-08-23 13:06:15'),(62,13,120.20,'待支付','2024-08-23 13:08:30'),(63,18,135.50,'已支付','2024-08-23 13:10:45'),(64,6,145.20,'待支付','2024-08-23 13:13:00'),(65,11,130.20,'已发货','2024-08-23 13:15:15'),(66,19,125.50,'已支付','2024-08-23 13:17:30'),(67,5,135.20,'待支付','2024-08-23 13:19:45'),(68,20,140.50,'已发货','2024-08-23 13:22:00'),(69,17,120.20,'待支付','2024-08-23 13:24:15'),(70,4,135.50,'已支付','2024-08-23 13:26:30'),(71,10,145.20,'待支付','2024-08-23 13:28:45'),(72,13,130.20,'已发货','2024-08-23 13:31:00'),(73,18,125.50,'已支付','2024-08-23 13:33:15'),(74,6,135.20,'待支付','2024-08-23 13:35:30'),(75,11,140.50,'已发货','2024-08-23 13:37:45'),(76,19,120.20,'待支付','2024-08-23 13:40:00'),(77,5,135.50,'已支付','2024-08-23 13:42:15'),(78,20,145.20,'待支付','2024-08-23 13:44:30'),(79,17,130.20,'已发货','2024-08-23 13:46:45'),(80,4,125.50,'已支付','2024-08-23 13:49:00'),(81,10,135.20,'待支付','2024-08-23 13:51:15'),(82,13,140.50,'已发货','2024-08-23 13:53:30'),(83,18,120.20,'待支付','2024-08-23 13:55:45'),(84,6,135.50,'已支付','2024-08-23 13:58:00'),(85,11,145.20,'待支付','2024-08-23 14:00:15'),(86,19,130.20,'已发货','2024-08-23 14:02:30'),(87,5,125.50,'已支付','2024-08-23 14:04:45'),(88,20,135.20,'待支付','2024-08-23 14:07:00'),(89,17,140.50,'已发货','2024-08-23 14:09:15'),(90,4,120.20,'待支付','2024-08-23 14:11:30'),(91,10,135.50,'已支付','2024-08-23 14:13:45'),(92,13,145.20,'待支付','2024-08-23 14:16:00'),(93,18,130.20,'已发货','2024-08-23 14:18:15'),(94,6,125.50,'已支付','2024-08-23 14:20:30'),(95,11,135.20,'待支付','2024-08-23 14:22:45'),(96,19,140.50,'已发货','2024-08-23 14:25:00'),(97,5,120.20,'待支付','2024-08-23 14:27:15'),(98,20,135.50,'已支付','2024-08-23 14:29:30'),(99,17,145.20,'待支付','2024-08-23 14:31:45'),(100,4,130.20,'已发货','2024-08-23 14:34:00'),(101,10,125.50,'已支付','2024-08-23 14:36:15'),(102,13,135.20,'待支付','2024-08-23 14:38:30'),(103,18,140.50,'已发货','2024-08-23 14:40:45'),(104,16,120.20,'待支付','2024-08-23 14:43:00'),(105,12,135.50,'已支付','2024-08-23 14:45:15'),(106,3,145.20,'待支付','2024-08-23 14:47:30'),(107,8,130.20,'已发货','2024-08-23 14:49:45'),(108,19,125.50,'已支付','2024-08-23 14:52:00'),(109,6,135.20,'待支付','2024-08-23 14:54:15'),(110,14,140.50,'已发货','2024-08-23 14:56:30'),(111,10,120.20,'待支付','2024-08-23 14:58:45'),(112,13,135.50,'已支付','2024-08-23 15:01:00'),(113,18,145.20,'待支付','2024-08-23 15:03:15'),(114,6,130.20,'已发货','2024-08-23 15:05:30'),(115,11,125.50,'已支付','2024-08-23 15:07:45'),(116,19,135.20,'待支付','2024-08-23 15:10:00'),(117,5,140.50,'已发货','2024-08-23 15:12:15'),(118,20,120.20,'待支付','2024-08-23 15:14:30'),(119,17,135.50,'已支付','2024-08-23 15:16:45'),(120,4,145.20,'待支付','2024-08-23 15:19:00'),(121,10,130.20,'已发货','2024-08-23 15:21:15'),(122,13,125.50,'已支付','2024-08-23 15:23:30'),(123,18,135.20,'待支付','2024-08-23 15:25:45'),(124,6,140.50,'已发货','2024-08-23 15:28:00'),(125,11,120.20,'待支付','2024-08-23 15:30:15'),(126,19,135.50,'已支付','2024-08-23 15:32:30'),(127,5,145.20,'待支付','2024-08-23 15:34:45'),(128,20,130.20,'已发货','2024-08-23 15:37:00'),(129,17,125.50,'已支付','2024-08-23 15:39:15'),(130,4,135.20,'待支付','2024-08-23 15:41:30'),(131,10,140.50,'已发货','2024-08-23 15:43:45'),(132,13,120.20,'待支付','2024-08-23 15:46:00'),(133,18,135.50,'已支付','2024-08-23 15:48:15'),(134,6,145.20,'待支付','2024-08-23 15:50:30'),(135,11,130.20,'已发货','2024-08-23 15:52:45'),(136,19,125.50,'已支付','2024-08-23 15:55:00'),(137,5,135.20,'待支付','2024-08-23 15:57:15'),(138,20,140.50,'已发货','2024-08-23 15:59:30'),(139,17,120.20,'待支付','2024-08-23 16:01:45'),(140,4,135.50,'已支付','2024-08-23 16:04:00'),(141,10,145.20,'待支付','2024-08-23 16:06:15'),(142,13,130.20,'已发货','2024-08-23 16:08:30'),(143,18,125.50,'已支付','2024-08-23 16:10:45'),(144,6,135.20,'待支付','2024-08-23 16:13:00'),(145,11,140.50,'已发货','2024-08-23 16:15:15'),(146,19,120.20,'待支付','2024-08-23 16:17:30'),(147,5,135.50,'已支付','2024-08-23 16:19:45'),(148,20,145.20,'待支付','2024-08-23 16:22:00'),(149,17,130.20,'已发货','2024-08-23 16:24:15'),(150,4,125.50,'已支付','2024-08-23 16:26:30'),(151,10,135.20,'待支付','2024-08-23 16:28:45'),(152,13,140.50,'已发货','2024-08-23 16:31:00'),(153,18,120.20,'待支付','2024-08-23 16:33:15'),(154,6,135.50,'已支付','2024-08-23 16:35:30'),(155,11,145.20,'待支付','2024-08-23 16:37:45'),(156,19,130.20,'已发货','2024-08-23 16:40:00'),(157,5,125.50,'已支付','2024-08-23 16:42:15'),(158,20,135.20,'待支付','2024-08-23 16:44:30'),(159,17,140.50,'已发货','2024-08-23 16:46:45'),(160,4,120.20,'待支付','2024-08-23 16:49:00'),(161,10,135.50,'已支付','2024-08-23 16:51:15'),(162,13,145.20,'待支付','2024-08-23 16:53:30'),(163,18,130.20,'已发货','2024-08-23 16:55:45'),(164,6,125.50,'已支付','2024-08-23 16:58:00'),(165,11,135.20,'待支付','2024-08-23 17:00:15'),(166,19,140.50,'已发货','2024-08-23 17:02:30'),(167,5,120.20,'待支付','2024-08-23 17:04:45'),(168,20,135.50,'已支付','2024-08-23 17:07:00'),(169,17,145.20,'待支付','2024-08-23 17:09:15'),(170,4,130.20,'已发货','2024-08-23 17:11:30'),(171,10,125.50,'已支付','2024-08-23 17:13:45'),(172,13,135.20,'待支付','2024-08-23 17:16:00'),(173,18,140.50,'已发货','2024-08-23 17:18:15'),(174,6,120.20,'待支付','2024-08-23 17:20:30'),(175,11,135.50,'已支付','2024-08-23 17:22:45'),(176,19,145.20,'待支付','2024-08-23 17:25:00'),(177,5,130.20,'已发货','2024-08-23 17:27:15'),(178,20,125.50,'已支付','2024-08-23 17:29:30'),(179,17,135.20,'待支付','2024-08-23 17:31:45'),(180,4,140.50,'已发货','2024-08-23 17:34:00'),(181,10,120.20,'待支付','2024-08-23 17:36:15'),(182,13,135.50,'已支付','2024-08-23 17:38:30'),(183,18,145.20,'待支付','2024-08-23 17:40:45'),(184,6,130.20,'已发货','2024-08-23 17:43:00'),(185,11,125.50,'已支付','2024-08-23 17:45:15'),(186,19,135.20,'待支付','2024-08-23 17:47:30'),(187,5,140.50,'已发货','2024-08-23 17:49:45'),(188,20,120.20,'待支付','2024-08-23 17:52:00'),(189,17,135.50,'已支付','2024-08-23 17:54:15'),(190,4,145.20,'待支付','2024-08-23 17:56:30'),(191,10,130.20,'已发货','2024-08-23 17:58:45'),(192,13,125.50,'已支付','2024-08-23 18:01:00'),(193,18,135.20,'待支付','2024-08-23 18:03:15'),(194,6,140.50,'已发货','2024-08-23 18:05:30'),(195,11,120.20,'待支付','2024-08-23 18:07:45'),(196,19,135.50,'已支付','2024-08-23 18:10:00'),(197,5,145.20,'待支付','2024-08-23 18:12:15'),(198,20,130.20,'已发货','2024-08-23 18:14:30'),(199,17,125.50,'已支付','2024-08-23 18:16:45'),(200,4,135.20,'待支付','2024-08-23 18:19:00'),(201,10,140.50,'已发货','2024-08-23 18:21:15'),(202,13,120.20,'待支付','2024-08-23 18:23:30'),(203,18,135.50,'已支付','2024-08-23 18:25:45'),(204,6,145.20,'待支付','2024-08-23 18:28:00'),(205,11,130.20,'已发货','2024-08-23 18:30:15'),(206,19,125.50,'已支付','2024-08-23 18:32:30'),(207,5,135.20,'待支付','2024-08-23 18:34:45'),(208,20,140.50,'已发货','2024-08-23 18:37:00'),(209,17,120.20,'待支付','2024-08-23 18:39:15'),(210,4,135.50,'已支付','2024-08-23 18:41:30'),(211,10,145.20,'待支付','2024-08-23 18:43:45');
导入数据完成
如上完成了数据库导入
2.部署HAI llama 大模
访问如下地址:
页面如下:
点击立即使用后,新建服务器
如下选择立即购买即可
如下可以查看HAI算力服务器的llama对外端口
检查是否已经默认开放 6399端口,如下状态即是开放
llama 大模型服务准备完毕!
3.python环境及开发环境配置
具体不在详细介绍,推荐版本3.10.11
python就绪后,需要安装对应模块,如下
pip install openai
pip install langchain
pip install langchain-core
pip install langchain-community
pip install mysql-connector-python
pip install streamlit
pip install plotly
pip install numpy
pip install pandas
pip install watchdog
pip install matplotlib
pip install kaleido
4.应用搭建并验证
新建名为 shop 文件夹进行保存项目代码
在项目文件夹(shop)中新建配置文件 config.yaml
在项目文件夹(shop)中新建应用主文件 text2sql2plotly.py
根据实际配置修改config.yaml的配置
这里主要分为 database 配置 和 hai 的配置
- database 的配置详解: db_user: 数据库账号,默认为 root db_password: 创建数据库时的密码 db_host: 数据库连接地址 db_port: 数据库公网端口 db_name 创建的数据库名称,如果按手册来默认是 shop
- hai 配置详解: model 使用的大模型 base_url 模型暴露的 api 地址,是公网 ip 和端口的组合,默认 llama端口是6399 database 中填入 TDSQL-C 的相关配置,db_host、db_port可以在集群列表中找到
hai base_url将实例的ip进行替换,ip可以在HAI的控制台-> 算力管理中找到
配置完成后,copy如下代码
from langchain_community.utilities import SQLDatabase
from langchain_core.prompts import ChatPromptTemplate
from langchain_community.chat_models import ChatOllama
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough
import yaml
import mysql.connector
from decimal import Decimal
import plotly.graph_objects as go
import plotly
import pkg_resources
import matplotlib
yaml_file_path = 'config.yaml'
with open(yaml_file_path, 'r') as file:
config_data = yaml.safe_load(file)
#获取所有的已安装的pip包
def get_piplist(p):
return [d.project_name for d in pkg_resources.working_set]
#获取llm用于提供AI交互
ollama = ChatOllama(model=config_data['hai']['model'],base_url=config_data['hai']['base_url'])
db_user = config_data['database']['db_user']
db_password = config_data['database']['db_password']
db_host = config_data['database']['db_host']
db_port= config_data['database']['db_port']
db_name = config_data['database']['db_name']
# 获得schema
def get_schema(db):
schema = mysql_db.get_table_info()
return schema
def getResult(content):
global mysql_db
# 数据库连接
mysql_db = SQLDatabase.from_uri(f"mysql+mysqlconnector://{db_user}:{db_password}@{db_host}:{db_port}/{db_name}")
# 获得 数据库中表的信息
#mysql_db_schema = mysql_db.get_table_info()
#print(mysql_db_schema)
template = """基于下面提供的数据库schema, 根据用户提供的要求编写sql查询语句,要求尽量使用最优sql,每次查询都是独立的问题,不要收到其他查询的干扰:
{schema}
Question: {question}
只返回sql语句,不要任何其他多余的字符,例如markdown的格式字符等:
如果有异常抛出不要显示出来
"""
prompt = ChatPromptTemplate.from_template(template)
text_2_sql_chain = (
RunnablePassthrough.assign(schema=get_schema)
| prompt
| ollama
| StrOutputParser()
)
# 执行langchain 获取操作的sql语句
sql = text_2_sql_chain.invoke({"question": content})
print(sql)
#连接数据库进行数据的获取
# 配置连接信息
conn = mysql.connector.connect(
host=db_host,
port=db_port,
user=db_user,
password=db_password,
database=db_name
)
# 创建游标对象
cursor = conn.cursor()
# 查询数据
cursor.execute(sql.strip("```").strip("```sql"))
info = cursor.fetchall()
# 打印结果
#for row in info:
#print(row)
# 关闭游标和数据库连接
cursor.close()
conn.close()
#根据数据生成对应的图表
print(info)
template2 = """
以下提供当前python环境已经安装的pip包集合:
{installed_packages};
请根据data提供的信息,生成是一个适合展示数据的plotly的图表的可执行代码,要求如下:
1.不要导入没有安装的pip包代码
2.如果存在多个数据类别,尽量使用柱状图,循环生成时图表中对不同数据请使用不同颜色区分,
3.图表要生成图片格式,保存在当前文件夹下即可,名称固定为:图表.png,
4.我需要您生成的代码是没有 Markdown 标记的,纯粹的编程语言代码。
5.生成的代码请注意将所有依赖包提前导入,
6.不要使用iplot等需要特定环境的代码
7.请注意数据之间是否可以转换,使用正确的代码
8.不需要生成注释
data:{data}
这是查询的sql语句与文本:
sql:{sql}
question:{question}
返回数据要求:
仅仅返回python代码,不要有额外的字符
"""
prompt2 = ChatPromptTemplate.from_template(template2)
data_2_code_chain = (
RunnablePassthrough.assign(installed_packages=get_piplist)
| prompt2
| ollama
| StrOutputParser()
)
# 执行langchain 获取操作的sql语句
code = data_2_code_chain.invoke({"data": info,"sql":sql,'question':content})
#删除数据两端可能存在的markdown格式
print(code.strip("```").strip("```python"))
exec(code.strip("```").strip("```python"))
return {"code":code,"SQL":sql,"Query":info}
# 构建展示页面
import streamlit
# 设置页面标题
streamlit.title('AI驱动的数据库TDSQL-C 电商可视化分析小助手')
# 设置对话框
content = streamlit.text_area('请输入想查询的信息', value='', max_chars=None)
# 提问按钮 # 设置点击操作
if streamlit.button('提问'):
#开始ai及langchain操作
if content:
#进行结果获取
result = getResult(content)
#显示操作结果
streamlit.write('AI生成的SQL语句:')
streamlit.write(result['SQL'])
streamlit.write('SQL语句的查询结果:')
streamlit.write(result['Query'])
streamlit.write('plotly图表代码:')
streamlit.write(result['code'])
# 显示图表内容(生成在getResult中)
streamlit.image('./图表.png', width=800)
然后运行并测试效果,在终端执行如下代码
streamlit run text2sql2plotly.py
访问本地的8501端口,可以看到已经可以正常访问了
比如把你可以去查询一下每类商品的名称和对应的销售总额
相关资源释放
删除TDSQL-C Serverless
点击退还实例,退还后实例会在回收站中点击回收站即可看到已被退还的实例,为了数据安全,实例默认会在回收站中保留3天,如不需要可以进行立即释放
删除 HAI 算力
总结
本实验结合了 TDSQL-C Serverless 和 HAI 服务,展示了如何利用 AI 技术进行电商数据分析。
通过创建和配置 TDSQL-C Serverless 数据库实例,收集和清洗电商数据,并在 HAI 上训练和部署 AI 模型,能够实现高效的数据处理和分析。
在本次实验中,我们成功地利用了腾讯云的 TDSQL-C MySQL Serverless 和高性能应用服务 HAI,构建了一个高效、可扩展的 AI 电商数据分析系统。以下是实验的关键成果和学习点:
关键成果和学习点
- 云原生数据库的优势:- 通过使用 TDSQL-C MySQL Serverless,我们体验了云原生数据库在处理大规模数据时的弹性和高性能。这种弹性和高性能对于电商数据分析尤为重要,能够有效应对数据量的快速增长和变化。
- GPU 加速的 AI 模型:- HAI 提供的 GPU 加速能力显著提升了 AI 模型的训练和推理速度,使得系统能够快速响应市场变化和用户需求。这种加速能力不仅提高了效率,还增强了系统的实时分析能力。
- 实战演练的价值:- 通过具体的案例研究,开发者不仅理解了理论知识,还通过实际操作加深了对系统功能的认识。这种实战演练帮助开发者更好地掌握了技术应用,并提升了他们解决实际问题的能力。
- 持续学习与改进:- 实验的总结也指出了系统可能存在的局限性和改进空间,鼓励开发者持续学习最新的技术和方法,以不断优化和升级系统。这种持续改进的理念对于保持系统的先进性和竞争力至关重要。
通过本次实验,我们不仅验证了技术方案的可行性,还为未来的优化和扩展提供了宝贵的经验和思路。希望开发者们能够继续探索和创新,推动 AI 电商数据分析系统的发展。
通过可视化工具展示分析结果,并生成数据分析报告,为业务决策提供有力支持。该实验不仅展示了云原生数据库和 AI 技术的结合应用,还为企业在电商领域的数据分析提供了实用的解决方案。
版权归原作者 码农。。 所有, 如有侵权,请联系我们删除。