【AI驱动TDSQL-C Serverless 数据库技术实战营】体验教程傻瓜版

程序儒 2024-10-01 17:31:07 阅读 68

注意:本教程需要实验者至少有一定的开发基础,熟悉python语言(能安装切换python版本环境,解决pip下载问题,推荐3.10.11版本),使用过云产品的更好(没有也没有关系,本教程会一步一步带你操作)

目录

一、背景介绍二、实验概述三、目标展示四、操作步骤4.1 操作流程图4.2 环境搭建4.2.1 购买 TDSQL-C Mysql Serverless 实例4.2.2 部署HAI高算力服务器4.2.3 本地python环境搭建

4.3 Python应用构建4.3.1 搭建项目框架4.3.2 TDSQL-C 数据库&HAI云算力配置4.3.3 应用开发4.3.4 运行程序并测试效果

4.4 效果展示

五、清理资源5.1 删除TDSQL-C Serverless5.2 删除 HAI 算力5.3 最终消费

六、完结撒花🎉

一、背景介绍

随着人工智能技术的不断发展,其在电子商务领域的应用显著提升了业务处理效率,并为商家提供了包括个性化推荐、用户行为分析、库存优化以及市场趋势预测等在内的多项重要功能。鉴于此,开发一个既高效又稳定的AI数据分析平台对于电商企业来说至关重要。

本指南的目标是指导开发者如何结合腾讯云提供的高性能计算服务<code>HAI(High-Performance Application Service for AI and Scientific Computing)与TDSQL-C MySQL Serverless版数据库来搭建这样的系统。HAI作为一个专为AI和科学计算设计的服务,它能够提供强大的GPU算力支持,使得即便是复杂的深度学习模型也能轻松部署并运行,尤其适合执行自然语言理解和图像生成这类高级任务。而TDSQL-C MySQL Serverless则是一款完全兼容MySQL协议的云端数据库解决方案,以其卓越的弹性和性能表现,在处理大规模数据存储及检索时表现出色,非常适合应用于电子商务场景中。

接下来的内容将通过 Python语言及Langchain框架,带领读者一步步完成从环境准备到最终系统的构建与上线整个流程。

二、实验概述

本次实践案例将围绕利用TDSQL-C MySQL Serverless快速构建AI驱动的电商数据分析平台展开,具体步骤包括但不限于:

架构设计 - 明确系统整体结构。数据库配置 - 设置 TDSQL-C MySQL Serverless 实例模型部署 - 在 HAI 平台上部署 LLM(Large Language Model)环境搭建 - 准备必要的软件工具和库文件系统开发 - 开发并集成AI数据分析功能

三、目标展示

数据内容查询分析

在这里插入图片描述

图表展示:

在这里插入图片描述

四、操作步骤

4.1 操作流程图

在这里插入图片描述

4.2 环境搭建

4.2.1 购买 TDSQL-C Mysql Serverless 实例

点击连接:( https://cloud.tencent.com/product/tdsqlc )访问腾讯云,选购<code>TDSQL-C Mysql 服务器(放心,不需要花多少钱)

在这里插入图片描述

根据下图内容选定服务器,注意选择<code>serverless 的服务器

注意:有些人有私有网络,则不需要这一步

请选择网络那里会一直加载中,则需要自己手动创建私有网络,点击下图中的新建私有网络,不要点箭头指向的新建子网

在这里插入图片描述

新建私有网络

在这里插入图片描述

跟进下图随便创建自己的网络信息即可,我是随便创建的,没有规律,可用区选择自己所在的城市就行

在这里插入图片描述

根据下图内容选择对应选项,地域随便写,最好填写自己所在地,然后点击下一步

在这里插入图片描述

设置数据库密码和配置信息,点击立即购买

在这里插入图片描述

创建成功,前往管理页面

在这里插入图片描述

管理页面中选择指定区域的 <code>TDSQL-C Mysql 服务器,这里区域后面的数字表示的是此区域已经购买的服务器数量

在这里插入图片描述

选择后点击开启实例公网访问

在这里插入图片描述

授权并创建

在这里插入图片描述

留意一下主机名称和端口信息,后面会用到,点击登录,进入数据库在线管理工具

在这里插入图片描述

输入上面的账号名和密码进入数据库

在这里插入图片描述

这里就和我们在本地操作数据库是一样的,新建数据库<code>shop

在这里插入图片描述

在这里插入图片描述

切换到新建数据库

在这里插入图片描述

新建SQL查询窗口

在这里插入图片描述

将下面实验数据粘贴进新建的查询窗口中

<code>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='电商分类销售统计表';code>

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='用户表';code>

INSERT INTO `users` VALUES (1,'张伟','zhangwei','zhangwei@example.com','hashed_password_1','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(2,'李娜','lina','lina@example.com','hashed_password_2','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(3,'王芳','wangfang','wangfang@example.com','hashed_password_3','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(4,'刘洋','liuyang','liuyang@example.com','hashed_password_4','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(5,'陈杰','chenjie','chenjie@example.com','hashed_password_5','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(6,'杨静','yangjing','yangjing@example.com','hashed_password_6','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(7,'赵强','zhaoqiang','zhaoqiang@example.com','hashed_password_7','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(8,'黄丽','huangli','huangli@example.com','hashed_password_8','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(9,'周杰','zhoujie','zhoujie@example.com','hashed_password_9','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(10,'吴敏','wumin','wumin@example.com','hashed_password_10','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(11,'郑伟','zhengwei','zhengwei@example.com','hashed_password_11','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(12,'冯婷','fengting','fengting@example.com','hashed_password_12','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(13,'蔡明','caiming','caiming@example.com','hashed_password_13','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(14,'潘雪','panxue','panxue@example.com','hashed_password_14','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(15,'蒋磊','jianglei','jianglei@example.com','hashed_password_15','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(16,'陆佳','lujia','lujia@example.com','hashed_password_16','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(17,'邓超','dengchao','dengchao@example.com','hashed_password_17','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(18,'任丽','renli','renli@example.com','hashed_password_18','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(19,'彭涛','pengtao','pengtao@example.com','hashed_password_19','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(20,'方圆','fangyuan','fangyuan@example.com','hashed_password_20','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(21,'段飞','duanfei','duanfei@example.com','hashed_password_21','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(22,'雷鸣','leiming','leiming@example.com','hashed_password_22','2024-08-18 04:07:18','2024-08-18 04:07:18',1),(23,'贾玲','jialing','jialing@example.com','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');

确认好数据库,点击执行

在这里插入图片描述

出现下面的内容就是成功了

在这里插入图片描述

可以查看一下表中的数据

在这里插入图片描述

恭喜🎉 <code>TDSQL-C Mysql Serverless 数据库服务器准备完毕!

4.2.2 部署HAI高算力服务器

点击链接(https://cloud.tencent.com/product/hai)进入腾讯云 HAI 官网,点击立即使用

在这里插入图片描述

有可能会出现需要服务授权窗口,点击同意授权

在这里插入图片描述

点击新建按钮,新建服务器(费用会在新建服务器并使用后才开始计费),放心!也没有多少钱

在这里插入图片描述

根据配置需求选择算力服务器,这里我们就选择下图中的内容就好,点击立即购买

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

等待创建,需要两三分钟吧

在这里插入图片描述

创建成功后查看服务器详情

在这里插入图片描述

查看<code>HAI算力服务器的llama对外端口

在这里插入图片描述

检查是否已经默认开放 6399端口,如下状态即是开放(开放的直接跳到第七步就行了)

在这里插入图片描述

如未开放点击新建配置进行协议配置

在这里插入图片描述

入站规则来源选择 <code>all,协议输入 tcp:6399

在这里插入图片描述

这里的公网IP记录一下,后面会用到

在这里插入图片描述

打开浏览器访问公网IP:6399,当看到 如下内容时,表示<code>llama大模型部署成功,可以进行下一步了

在这里插入图片描述

4.2.3 本地python环境搭建

这里我使用的是 pyCharm 工具,其他IDE工具也是一样的,首先创建一个项目,可以直接使用pyCharm的虚拟环境下载python 3.10.11,不使用或者下载不成功也没有影响,如果自己本地安装的就是该版本,那么直接选用就好了。

在这里插入图片描述

如果下载失败,可以使用Anaconda创建一个新的python环境也可以:

使用Anaconda创建一个新的Python环境非常简单,可以通过Anaconda Navigator图形界面工具或者通过Anaconda Prompt(或命令行)来完成。这里我将介绍如何通过命令行的方式来创建一个新的环境,这种方式更加灵活且适合自动化操作。

步骤 1: 打开Anaconda Prompt

在Windows上,你可以通过开始菜单找到“Anaconda Prompt”并打开。

在macOS或Linux上,打开终端(Terminal)。

步骤 2: 创建新环境

指定环境名称和Python版本 你可以使用以下命令来创建一个名为myenv的新环境,并指定Python版本为3.10.11:

<code>conda create -n ai-test python=3.10.11

步骤 3: 激活新环境

在创建完环境后,你需要激活这个环境才能开始使用它:

conda activate ai-test

步骤 4: 验证环境

激活环境后,你可以通过运行python命令来检查是否正确进入到了新的环境中,并查看Python版本是否符合预期

python --version

在项目新建包管理文件requirements.txt, 将下列内容复制进去,执行 pip install -r requirements.txt命令,安装环境所需要的包,如果有些包下载失败,则手动换源安装即可

openai

langchain

langchain-core

langchain-community

mysql-connector-python

streamlit

plotly

numpy

pandas

watchdog

matplotlib

kaleido

在这里插入图片描述

OK,目前为止,我们的开发环境准备完毕!

4.3 Python应用构建

4.3.1 搭建项目框架

新建配置文件 config.yaml,新建应用主文件 text2sql2plotly.py

在这里插入图片描述

4.3.2 TDSQL-C 数据库&HAI云算力配置

打开 config.yaml 文件,复制以下内容到配置文件中:

<code>database:

db_user: root

db_password:

db_host:

db_port:

db_name: shop

hai:

model: llama3.1:8b

base_url: http://:6399

这里主要分为 database 配置 和 hai 的配置,可以去页面里查看,就是我上面说要记住的两个地方

在这里插入图片描述

database(数据库)的配置详解:

db_user: 数据库账号,默认为 rootdb_password: 创建数据库时的密码db_host: 数据库连接地址(我这里就是bj-cynosdbmysql-grp-metdj6xi.sal.tencentcdb.com)db_port: 数据库公网端口(我这里就是20500)db_name 创建的数据库名称,如果按手册来默认是 <code>shop

hai 配置详解:

model 使用的大模型base_url 模型暴露的 api 地址,是公网 ip 和端口的组合,默认 llama端口是6399

database 中填入 TDSQL-C 的相关配置,db_hostdb_port可以在集群列表中找到

在这里插入图片描述

4.3.3 应用开发

将以下程序代码复制并保存到 <code>text2sql2plotly.py 文件中

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)code>

# 提问按钮 # 设置点击操作

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)

4.3.4 运行程序并测试效果

打开终端执行以下命令

streamlit run text2sql2plotly.py

第一次运行可能需要输入邮箱,是否需要streamlit给你发送相关邮件,直接回车忽略即可

在这里插入图片描述

运行成功!

在这里插入图片描述

在浏览器中打开UI界面,可以看见查询小助手

在这里插入图片描述

4.4 效果展示

输入:<code>查询用户信息 测试效果

在这里插入图片描述

输入:<code>查询一下每类商品的名称和对应的销售总额 测试效果

在这里插入图片描述

推荐的几个查询操作:

友情提示:目前不可能做到每次查询都完全没问题,这个取决于多方面的因素:

例如:大语言模型(llm)的模型大小、查询描述的准确性(歧义等沟通问题)等

查询每个用户账号的名称和长度查询一下每类商品的名称和对应的销售总额查询出用户赵强的已支付订单的总额和未支付订单的总额数据

可能会出现下面的内容进行报错,重新提问就好了,多试几次,有些同学的电脑绘图步骤会很慢,多等一会儿就好了

在这里插入图片描述

五、清理资源

5.1 删除TDSQL-C Serverless

点击退还实例,退还后实例会在回收站中

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

点击回收站即可看到已被退还的实例,为了数据安全,实例默认会在回收站中保留3天,如不需要可以进行立即释放

在这里插入图片描述

5.2 删除 HAI 算力

在这里插入图片描述

5.3 最终消费

大家可以看到,我用的时间比较长,一共消费2.22元,还是很便宜的

在这里插入图片描述

六、完结撒花🎉

本指南只是简单的介绍了腾讯云的TDSQL-C MySQL Serverless和高性能应用服务HAI,构建了一个高效且可扩展的AI电商数据分析系统。仅仅只是菜鸟级入门的教程,大佬们有不对的地方还请多多指教。

通过实验使用TDSQL-C MySQL Serverless,我能体验到云原生数据库在处理大规模数据时所展现出的灵活性与卓越性能。这种能力对于电商行业的数据分析尤为重要,因为它能够根据实际需求动态调整资源,从而确保系统的成本效益和高效率。

借助HAI提供的GPU加速功能,显著提升了AI模型的训练速度和推理效率。这对于需要迅速响应市场变化和用户需求的电商系统来说至关重要,因为它允许我们在更短的时间内完成复杂的计算任务,提供实时的数据分析结果。

随着技术的不断发展,我们期待在未来的研究中探索更多创新的可能性。同时,我们也欢迎更多的同行加入进来,共同发掘TDSQL-C Serverless与AI技术结合的新应用场景,为各行各业带来更大的价值。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。