【腾讯云】AI驱动TDSQL-C Serveress 数据库技术实战营-怎样是从0到1体验电 ...

宝塔山  金牌会员 | 2024-9-12 07:20:24 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 508|帖子 508|积分 1524

欢迎来到《小5讲堂》
这是《腾讯云》系列文章,每篇文章将以博主明白的角度展开讲解。
温馨提示:博主本领有限,明白水平有限,若有不对之处望指正!
  


  
背景

AI 技术的应用极大地提拔了运营效率,并为电商行业带来了个性化推荐、用户举动分析、库存管理和市场趋势预测等关键领域的数据分析本领,在这种背景下,构建一个高效、可靠的AI电商数据分析系统显得尤为关键。
基于这个背景下,怎样利用腾讯云的高性能应用服务 HAITDSQL-C MySQL Serverless 版构建 AI电商数据分析系统。HAI作为一个面向AI和科学计算的GPU应用服务产物,提供了强大的计算本领,使得复杂AI模型如LLM的快速部署和运行成为大概,进而支持天然语言处理和图像天生等高级使命。与此同时,TDSQL-C MySQL版作为一款云原生关系型数据库,其100%的MySQL兼容性,以及极致的弹性、高性能和高可用性,使其成为电商业务中处理海量数据存储和查询的理想选择。
让我们一起探索下,TDSQL数据库是怎样与HAI结合通过一句话就能输出统计目标图?
下面将通过 Python 编程语言和基于 Langchain 的框架,逐步完成系统的构建和部署。
效果图

下面展示的就是本次完成部署后网页端输出的统计数据效果图。

流程图


创建数据库

基本信息

云原生数据库 TDSQL-C(Cloud Native Database TDSQL-C)简称 TDSQL-C。
TDSQL-C 是腾讯云自研的新一代高性能高可用的企业级分布式云数据库。
融合了传统数据库、云计算与新硬件技术的优势,100%兼容 MySQL 和 PostgreSQL,实现超百万级 QPS 的高吞吐,海量分布式智能存储,保障数据安全可靠。
数据库配置

访问腾讯云官网申请 TDSQL-C Mysql 服务器
地址:https://cloud.tencent.com/product/tdsqlc

实例形态选择Serverless,数据库引擎选择MySql。
其他按默认,也可以根据自己情况选择,私有网络第一次使用可以留空,创建完成后会自动天生。

数据库版本博主这里选择MySQL8.0,其他都是默认选项。

设置暗码

管理员账号名默认就是root,暗码这个需要自己设置和记住,后续就是要使用。

高级配置这里的表名大小写选择不敏感,其他都是默认选择。

控制台

完成上面操作后,可以在数据库控制台查看相关信息。
控制台地址:https://console.cloud.tencent.com/cynosdb/mysql/ap-shanghai/cluster/cynosdbmysql-58ufm8lc/detail

开启公网访问

鼠标移动到红色框地域就会有一个开启的按钮,点击就会天生主机和端口信息。

登录管理工具

点击右上角的登录

账号就是前面默认的root,暗码就是刚刚自己设置的值。

新建数据库

这里博主命名新建的数据库名称为shop,当然自己现实业务举行命名。
熟悉mysql的朋友,估计看到这些操作都很熟悉了。


新建表

选择刚刚创建好的shop数据库,然后点击SQL窗口,在窗口输入执行的SQL,最后点击【执行】按钮。

表和数据SQL

这里提供一份示例SQL表和数据。
下面语句会执行创建三张表,ecommerce_sales_stats、users、orders
  1. CREATE TABLE `ecommerce_sales_stats` (
  2.   `category_id` int NOT NULL COMMENT '分类ID(主键)',
  3.   `category_name` varchar(100) NOT NULL COMMENT '分类名称',
  4.   `total_sales` decimal(15,2) NOT NULL COMMENT '总销售额',
  5.   `steam_sales` decimal(15,2) NOT NULL COMMENT 'Steam平台销售额',
  6.   `offline_sales` decimal(15,2) NOT NULL COMMENT '线下实体销售额',
  7.   `official_online_sales` decimal(15,2) NOT NULL COMMENT '官方在线销售额',
  8.   PRIMARY KEY (`category_id`)
  9. ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 COMMENT='电商分类销售统计表';
  10. 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);
  11. CREATE TABLE `users` (
  12.   `user_id` int NOT NULL AUTO_INCREMENT COMMENT '用户ID(主键,自增)',
  13.   `full_name` varchar(100) NOT NULL COMMENT '用户全名',
  14.   `username` varchar(50) NOT NULL COMMENT '用户名',
  15.   `email` varchar(100) NOT NULL COMMENT '用户邮箱',
  16.   `password_hash` varchar(255) NOT NULL COMMENT '用户密码的哈希值',
  17.   `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  18.   `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  19.   `is_active` tinyint(1) DEFAULT '1' COMMENT '是否激活',
  20.   PRIMARY KEY (`user_id`),
  21.   UNIQUE KEY `email` (`email`)
  22. ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4  COMMENT='用户表';
  23. 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);
  24. CREATE TABLE `orders` (
  25.   `order_id` int NOT NULL AUTO_INCREMENT,
  26.   `user_id` int DEFAULT NULL,
  27.   `order_amount` decimal(10,2) DEFAULT NULL,
  28.   `order_status` varchar(20) DEFAULT NULL,
  29.   `order_time` datetime DEFAULT NULL,
  30.   PRIMARY KEY (`order_id`)
  31. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 ;
  32. 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');
复制代码

部署算力服务器

访问腾讯云 HAI 官网:https://cloud.tencent.com/product/hai
控制台:https://console.cloud.tencent.com/hai/instance?rid=8
基本信息

高性能应用服务(Hyper Application Inventor,HAI)是一款面向AI、科学计算的GPU算力服务产物,提供即插即用的汹涌算力与常见环境。
助力中小企业及开发者快速部署LLM、AI作画、数据科学等高性能应用,原生集成配套的开发工具与组件,大幅提高应用层的开发生产效率。

选择应用

点击界面的新建。
选择社区应用,以及选择Llama3.1 8B大模型,其他都是默认选择就行。


应用详情

感兴趣的小同伴可以点击查看此应用的详细信息。
地址:https://cloud.tencent.com/developer/article/2439066

查看HAI

完成上面步骤后,可以在算力管理查看,再点击服务器名称进入详情界面。

确保6399端口是开放

如果未配置,则可以新建一个。

本地python环境搭建

下载地址

访问python官网:https://www.python.org/downloads/release/python-31011/
下载符合自己服务器的python版本(推荐3.10.11)

双击安装包安装python,window版本需要勾选add python to PATH

安装依靠

运行pip下令安装依靠包,请分别运行以下pip下令逐个安装
  1. pip install openai
  2. pip install langchain
  3. pip install langchain-core
  4. pip install langchain-community
  5. pip install mysql-connector-python
  6. pip install streamlit
  7. pip install plotly
  8. pip install numpy
  9. pip install pandas
  10. pip install watchdog
  11. pip install matplotlib
  12. pip install kaleido
复制代码
如果上面安装速度比较慢,那么可以考虑使用国内镜像。
这里要特别注意,是小写 -i,不能是大写。
  1. 国内比较速度相对比较快的PyPI源库
  2. 1、清华大学:https://pypi.tuna.tsinghua.edu.cn/simple(推荐)
  3. 2、阿里云:http://mirrors.aliyun.com/pypi/simple
  4. 3、豆瓣:http://pypi.douban.com/simple
  5. ===例子===
  6. pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple
复制代码
下面是博主使用清华大学的镜像
  1. pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple
  2. pip install langchain -i https://pypi.tuna.tsinghua.edu.cn/simple
  3. pip install langchain-core -i https://pypi.tuna.tsinghua.edu.cn/simple
  4. pip install langchain-community -i https://pypi.tuna.tsinghua.edu.cn/simple
  5. pip install mysql-connector-python  -i https://pypi.tuna.tsinghua.edu.cn/simple
  6. pip install streamlit  -i https://pypi.tuna.tsinghua.edu.cn/simple
  7. pip install plotly -i https://pypi.tuna.tsinghua.edu.cn/simple(用清华镜像可以,并且注意是小写i,不是大写I)
  8. pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
  9. pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
  10. pip install watchdog -i https://pypi.tuna.tsinghua.edu.cn/simple
  11. pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
  12. pip install kaleido -i https://pypi.tuna.tsinghua.edu.cn/simple
复制代码
构建应用

搭建项目框架

1.新建名为 workspace 文件夹举行生存项目代码
2.在项目文件夹(workspace)中新建配置文件 config.yaml
3.在项目文件夹(workspace)中新建应用主文件 text2sql2plotly.py
配置文件代码

  1. database:
  2.   db_user: root
  3.   db_password: tencent_TDSQL
  4.   db_host: sh-cynosdbmysql-grp-9d8prc9o.sql.tencentcdb.com
  5.   db_port: 21919
  6.   db_name: shop
  7. hai:
  8.   model: llama3.1:8b
  9.   base_url: http://82.156.229.112:6399
复制代码


  • database配置说明
数据库读写示例:https://console.cloud.tencent.com/cynosdb/mysql/ap-shanghai/cluster/cynosdbmysql-58ufm8lc/detail



  • hai配置说明

详细说明

这里主要分为 database 配置 和 hai 的配置


  • database 的配置详解:
  • db_user: 数据库账号,默以为 root
  • db_password: 创建数据库时的暗码
  • db_host: 数据库毗连地址
  • db_port: 数据库公网端口
  • db_name 创建的数据库名称,如果按手册来默认是 shop
  • hai 配置详解:
  • model 使用的大模型
  • base_url 模型袒露的 api 地址,是公网 ip 和端口的组合,默认 llama端口是6399
应用开发代码

复制下面代码,可以不消举行任何代码的改动,直接运行就可以使用。
  1. from langchain_community.utilities import SQLDatabase
  2. from langchain_core.prompts import ChatPromptTemplate
  3. from langchain_community.chat_models import ChatOllama
  4. from langchain_core.output_parsers import StrOutputParser
  5. from langchain_core.runnables import RunnablePassthrough
  6. import yaml
  7. import mysql.connector
  8. from decimal import Decimal
  9. import plotly.graph_objects as go
  10. import plotly
  11. import pkg_resources
  12. import matplotlib
  13. yaml_file_path = 'config.yaml'
  14. with open(yaml_file_path, 'r') as file:
  15.     config_data = yaml.safe_load(file)
  16. #获取所有的已安装的pip包
  17. def get_piplist(p):
  18.     return [d.project_name for d in pkg_resources.working_set]
  19. #获取llm用于提供AI交互
  20. ollama = ChatOllama(model=config_data['hai']['model'],base_url=config_data['hai']['base_url'])
  21. db_user = config_data['database']['db_user']
  22. db_password = config_data['database']['db_password']
  23. db_host = config_data['database']['db_host']
  24. db_port= config_data['database']['db_port']
  25. db_name = config_data['database']['db_name']
  26. # 获得schema
  27. def get_schema(db):
  28.    
  29.     schema = mysql_db.get_table_info()
  30.     return schema
  31. def getResult(content):
  32.     global mysql_db
  33.     # 数据库连接
  34.     mysql_db = SQLDatabase.from_uri(f"mysql+mysqlconnector://{db_user}:{db_password}@{db_host}:{db_port}/{db_name}")
  35.     # 获得 数据库中表的信息
  36.     #mysql_db_schema = mysql_db.get_table_info()
  37.     #print(mysql_db_schema)
  38.     template = """基于下面提供的数据库schema, 根据用户提供的要求编写sql查询语句,要求尽量使用最优sql,每次查询都是独立的问题,不要收到其他查询的干扰:
  39.     {schema}
  40.     Question: {question}
  41.     只返回sql语句,不要任何其他多余的字符,例如markdown的格式字符等:
  42.     如果有异常抛出不要显示出来
  43.     """
  44.     prompt = ChatPromptTemplate.from_template(template)
  45.     text_2_sql_chain = (
  46.                 RunnablePassthrough.assign(schema=get_schema)
  47.                 | prompt
  48.                 | ollama
  49.                 | StrOutputParser()
  50.         )
  51.    
  52.     # 执行langchain 获取操作的sql语句
  53.     sql = text_2_sql_chain.invoke({"question": content})
  54.     print(sql)
  55.     #连接数据库进行数据的获取
  56.     # 配置连接信息
  57.     conn = mysql.connector.connect(
  58.    
  59.         host=db_host,
  60.         port=db_port,
  61.         user=db_user,
  62.         password=db_password,
  63.         database=db_name
  64.     )
  65.     # 创建游标对象
  66.     cursor = conn.cursor()
  67.     # 查询数据
  68.     cursor.execute(sql.strip("```").strip("```sql"))
  69.     info = cursor.fetchall()
  70.     # 打印结果
  71.     #for row in info:
  72.         #print(row)
  73.     # 关闭游标和数据库连接
  74.     cursor.close()
  75.     conn.close()
  76.     #根据数据生成对应的图表
  77.     print(info)
  78.     template2 = """
  79.     以下提供当前python环境已经安装的pip包集合:
  80.     {installed_packages};
  81.     请根据data提供的信息,生成是一个适合展示数据的plotly的图表的可执行代码,要求如下:
  82.         1.不要导入没有安装的pip包代码
  83.         2.如果存在多个数据类别,尽量使用柱状图,循环生成时图表中对不同数据请使用不同颜色区分,
  84.         3.图表要生成图片格式,保存在当前文件夹下即可,名称固定为:图表.png,
  85.         4.我需要您生成的代码是没有 Markdown 标记的,纯粹的编程语言代码。
  86.         5.生成的代码请注意将所有依赖包提前导入,
  87.         6.不要使用iplot等需要特定环境的代码
  88.         7.请注意数据之间是否可以转换,使用正确的代码
  89.         8.不需要生成注释
  90.     data:{data}
  91.     这是查询的sql语句与文本:
  92.     sql:{sql}
  93.     question:{question}
  94.     返回数据要求:
  95.     仅仅返回python代码,不要有额外的字符
  96.     """
  97.     prompt2 = ChatPromptTemplate.from_template(template2)
  98.     data_2_code_chain = (
  99.                 RunnablePassthrough.assign(installed_packages=get_piplist)
  100.                 | prompt2
  101.                 | ollama
  102.                 | StrOutputParser()
  103.         )
  104.    
  105.     # 执行langchain 获取操作的sql语句
  106.     code = data_2_code_chain.invoke({"data": info,"sql":sql,'question':content})
  107.    
  108.     #删除数据两端可能存在的markdown格式
  109.     print(code.strip("```").strip("```python"))
  110.     exec(code.strip("```").strip("```python"))
  111.     return {"code":code,"SQL":sql,"Query":info}
  112. # 构建展示页面
  113. import streamlit
  114. # 设置页面标题
  115. streamlit.title('AI驱动的数据库TDSQL-C 电商可视化分析小助手')
  116. # 设置对话框
  117. content = streamlit.text_area('请输入想查询的信息', value='', max_chars=None)
  118. # 提问按钮 # 设置点击操作
  119. if streamlit.button('提问'):
  120.     #开始ai及langchain操作
  121.     if content:
  122.         #进行结果获取
  123.         result = getResult(content)
  124.         #显示操作结果
  125.         streamlit.write('AI生成的SQL语句:')
  126.         streamlit.write(result['SQL'])
  127.         streamlit.write('SQL语句的查询结果:')
  128.         streamlit.write(result['Query'])
  129.         streamlit.write('plotly图表代码:')
  130.         streamlit.write(result['code'])
  131.         # 显示图表内容(生成在getResult中)
  132.     streamlit.image('./图表.png', width=800)
复制代码
运行和效果

打开终端执行以下下令
   streamlit run text2sql2plotly.py
  

页面效果图


踩坑履历

完成所有依靠安装后,运行发现出现下面报错,这个时间就需要安装下下面
未找到模块

   pip install setuptools
  


未找到表

这里出现未找到表,实在是大模型幻觉问题,多运行几次就好

输出效果

输入:查询一下每类商品的名称和对应的贩卖总额


  • 测试效果


   团体体验下来,照旧非常不错的。可以看到腾讯云TDSQL在线创建非常方便快捷,完全不消再像当年一样,要在服务器创建数据库。
同时部署HAI算力服务器也非常简单,完成应用运行后,直接就是一句话就能帮我们统计需要的图表数据,真正开始智能化方向发展。
AI驱动的数据库TDSQL-C 电商可视化分析小助手,值得拥有,感兴趣的小同伴,快来体验吧!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宝塔山

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表