【腾讯云】AI驱动TDSQL-C Serveress 数据库技术实战营-如何是从0到1体验电商可视化分析小助手得统计功能,一句话就能输出目标统计图

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

在这里插入图片描述

目录

  • 背景
  • 效果图
  • 流程图
  • 创建数据库
    • 基本信息
    • 数据库配置
    • 设置密码
    • 控制台
    • 开启公网访问
    • 登录管理工具
    • 新建数据库
    • 新建表
    • 表和数据SQL
  • 部署算力服务器
    • 基本信息
    • 选择应用
    • 应用详情
    • 查看HAI
  • 本地python环境搭建
    • 下载地址
    • 安装依赖
  • 构建应用
    • 搭建项目框架
    • 配置文件代码
    • 详细说明
    • 应用开发代码
    • 运行和效果
  • 踩坑经验
    • 未找到模块
    • 未找到表
  • 输出效果

背景

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

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','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');

在这里插入图片描述

部署算力服务器

访问腾讯云 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命令逐个安装

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

如果上面安装速度比较慢,那么可以考虑使用国内镜像。
这里要特别注意,是小写 -i,不能是大写。

国内比较速度相对比较快的PyPI源库
1、清华大学:https://pypi.tuna.tsinghua.edu.cn/simple(推荐)
2、阿里云:http://mirrors.aliyun.com/pypi/simple
3、豆瓣:http://pypi.douban.com/simple===例子===
pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple

下面是博主使用清华大学的镜像

pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install langchain -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install langchain-core -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install langchain-community -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install mysql-connector-python  -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install streamlit  -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install plotly -i https://pypi.tuna.tsinghua.edu.cn/simple(用清华镜像可以,并且注意是小写i,不是大写I)
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install watchdog -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install kaleido -i https://pypi.tuna.tsinghua.edu.cn/simple

构建应用

搭建项目框架

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

配置文件代码

database: db_user: rootdb_password: tencent_TDSQLdb_host: sh-cynosdbmysql-grp-9d8prc9o.sql.tencentcdb.comdb_port: 21919db_name: shophai:model: llama3.1:8bbase_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

应用开发代码

复制下面代码,可以不用进行任何代码的改动,直接运行就可以使用。

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 matplotlibyaml_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

在这里插入图片描述
页面效果图
在这里插入图片描述
在这里插入图片描述

踩坑经验

完成所有依赖安装后,运行发现出现下面报错,这个时候就需要安装下下面

未找到模块

pip install setuptools

在这里插入图片描述
在这里插入图片描述

未找到表

这里出现未找到表,其实是大模型幻觉问题,多运行几次就好
在这里插入图片描述

输出效果

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

  • 测试效果
    在这里插入图片描述
    在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win服务器的架设、windows server 2012 R2 系统的下载与安装使用

文章目录 windows server 2012 R2 系统的下载与安装使用1 windows server 2012 的下载2 打开 VMware 虚拟机软件(1)新建虚拟机(2)设置虚拟机(3)打开虚拟机 windows server 2012(4)进…

如何在谷歌浏览器中开启安全浏览

在数字化时代,网络安全变得愈发重要。作为全球最受欢迎的网络浏览器之一,谷歌浏览器提供了多种功能来保护用户的在线安全。本文将详细介绍如何在谷歌浏览器中开启安全浏览,并额外提供一些有用的页面滚动设置、地址栏快捷搜索和跟踪防护的相关…

djiango DRF的使用

djiango DRF的使用 一 、初始 DRF序列化环境安装环境配置数据模型定义定义DRF序列化模型对象 二 、DRF请求和响应请求对象(Request objects)响应对象(Response objects)状态码(Status codes)包装&#xff0…

计算机网络-HTTP协议

HTTP HTTP是一种不保存状态,即无状态的协议。HTTP协议自身不对请求和响应之间的通信进行保存。为了保存状态因此后面也有一些技术产生比如Cookies技术。 HTTP是通过URI定位网上的资源,理论上将URI可以访问互联网上的任意资源。 如果不是访问特定的资源…

CTFHub 命令注入-综合练习(学习记录)

综合过滤练习 命令分隔符的绕过姿势 ; %0a %0d & 那我们使用%0a试试,发现ls命令被成功执行 /?ip127.0.0.1%0als 发现一个名为flag_is_here的文件夹和index.php的文件,那么我们还是使用cd命令进入到文件夹下 http://challenge-438c1c1fb670566b.sa…

【AI知识】逻辑回归介绍+ 做二分类任务的实例(代码可视化)

1. 分类的基本概念 在机器学习的有监督学习中,分类一种常见任务,它的目标是将输入数据分类到预定的类别中。具体来说: 分类任务的常见应用: 垃圾邮件分类:判断一封电子邮件是否是垃圾邮件 。 医学诊断:…

为SSH2协议服务器的用户设置密钥

目录 私钥的创建1. 在服务器上直接生成2. 如果需要配置免密登录3. 查看生成的密钥 导出私钥至SSH用户获取sudo权限 新的一台服务器类型是SSH2:这表示服务器支持SSH(Secure Shell)协议的第二个版本。SSH是一个网络协议,用于加密方式…

level2逐笔委托查询接口

沪深逐笔委托队列查询 前置步骤 分配数据库服务器 查询模板 以下是沪深委托队列查询的请求模板&#xff1a; http://<数据库服务器>/sql?modeorder_book&code<股票代码>&offset<offset>&token<token>查询参数说明 参数名类型说明mo…

文献研读|基于像素语义层面图像重建的AI生成图像检测

前言&#xff1a;本篇文章主要对基于重建的AI生成图像检测的四篇相关工作进行介绍&#xff0c;分别为基于像素层面重建的检测方法 DIRE 和 Aeroblade&#xff0c;以及基于语义层面重建的检测方法 SimGIR 和 Zerofake&#xff1b;并对相应方法进行比较。 相关文章&#xff1a;论…

VScode MAC按任意键关闭终端 想要访问桌面文件

说明 最近配置MAC上CPP的运行环境&#xff0c;在安装必要的CPP插件后&#xff0c;配置launch和task等json文件后&#xff0c;点击运行三角形&#xff0c;每次都会跳出main想要访问桌面上的文件。并且输出也是在调试控制台&#xff0c;非常逆天。 尝试 尝试1:尽管我尝试将ta…

Linux Shell 脚本编程基础知识篇

ℹ️大家好&#xff0c;我是练小杰&#xff0c;从本文是Linux shell脚本编程的基础知识内容&#xff0c;后续我会不断补充~~ 更多Linux 相关内容请点击&#x1f449;“Linux专栏”~ 假面驾驭&#xff0c;时王&#xff0c;假面骑士时王~~ 文章目录 什么是 Linux Shell主要功能…

QT绘制同心扇形

void ChartForm::paintEvent(QPaintEvent *) {QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);// 设置抗锯齿painter.save();// 设置无边框&#xff08;不需要设置QPen&#xff0c;因为默认是不绘制边框的&#xff09;QPen pen(Qt::NoPen);// QPen pen…

TL3568/TL3562更改主机名,在Kernel用menuconfig失效

前言 最近在玩RK3562开发板&#xff0c;想改串口调试时看到的主机名&#xff0c;开发板的主机名默认是RK3562-Tronlong&#xff0c;如图&#xff1a; 按照之前玩T113开发版&#xff0c;在Kernel通过make menuconfig&#xff0c;可以改。但是在这个RK3562&#xff0c;改了后&…

【PLL】ISSCC 2024 Tutorial: Calibration Techniques in PLLs

1. 数字辅助模拟电路 为什么要辅助&#xff0c;或替换模拟电路&#xff1f; 利用CMOS管子尺寸缩小&#xff0c;降低功耗 和 减小面积校正模拟电路的 非线性行为 和 失配 数字辅助的好处&#xff1a; 简化模拟电路设计提高能源效率&#xff0c;提高准确度 2. 锁相环基础 2.1 概…

STM32-笔记5-按键点灯(中断方法)

1、复制03-流水灯项目&#xff0c;重命名06-按键点灯&#xff08;中断法&#xff09; 在\Drivers\BSP目录下创建一个文件夹exti&#xff0c;在该文件夹下&#xff0c;创建两个文件exti.c和exti.h文件&#xff0c;并且把这两个文件加载到项目中&#xff0c;打开项目工程文件 加载…

Mvc、Springmvc框架

一.Mvc&#xff1a; 1.概念&#xff1a; MVC它是一种设计理念。把程序按照指定的结构来划分: Model模型 、View视图 、Controller控制层&#xff1b; 结构图&#xff1a; 二.Springmvc: 1.概念&#xff1a; springmvc框架它是spring框架的一个分支。它是按照mvc架构思想设计…

spring使用rabbitmq当rabbitmq集群节点挂掉 spring rabbitmq怎么保证高可用,rabbitmq网络怎么重新连接

##spring rabbitmq代码示例 Controller代码 import com.alibaba.fastjson.JSONObject; import com.newland.mi.config.RabbitDMMQConfig; import org.springframework.amqp.core.Message; import org.springframework.amqp.core.MessageProperties; import org.springframewo…

前端面试问题集合

0 HTML5相关 websocket WebSocket 使用ws或wss协议&#xff0c;Websocket是一个持久化的协议&#xff0c;相对于HTTP这种非持久的协议来说。WebSocket API最伟大之处在于服务器和客户端可以在给定的时间范围内的任意时刻&#xff0c;相互推送信息。WebSocket并不限于以Ajax(或X…

RabbitMQ如何构建集群?

大家好&#xff0c;我是锋哥。今天分享关于【RabbitMQ如何构建集群&#xff1f;】面试题。希望对大家有帮助&#xff1b; RabbitMQ如何构建集群&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在RabbitMQ中&#xff0c;集群&#xff08;Cluster&#x…

3大Excel免费功能

推荐几个免费excel图表绘制工具 Power Map Power Map是Excel的内置功能 Power Map可在Windows用户的Excel 2013或者Excel 2016或者Office 365中使用,如下图, 看案例 动态地图1 动态地图2