{"id":28639481,"url":"https://github.com/taosdata/tdgpt-demo","last_synced_at":"2025-06-12T19:40:37.043Z","repository":{"id":284477620,"uuid":"954389529","full_name":"taosdata/TDgpt-demo","owner":"taosdata","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-17T10:47:38.000Z","size":2379,"stargazers_count":4,"open_issues_count":2,"forks_count":1,"subscribers_count":19,"default_branch":"main","last_synced_at":"2025-04-18T00:15:09.954Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/taosdata.png","metadata":{"files":{"readme":"README-CN.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-25T02:25:53.000Z","updated_at":"2025-04-17T02:43:50.000Z","dependencies_parsed_at":"2025-03-26T05:33:52.075Z","dependency_job_id":null,"html_url":"https://github.com/taosdata/TDgpt-demo","commit_stats":null,"previous_names":["taosdata/tdgpt-demo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/taosdata/TDgpt-demo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taosdata%2FTDgpt-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taosdata%2FTDgpt-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taosdata%2FTDgpt-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taosdata%2FTDgpt-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/taosdata","download_url":"https://codeload.github.com/taosdata/TDgpt-demo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taosdata%2FTDgpt-demo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259520285,"owners_count":22870415,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-12T19:40:28.283Z","updated_at":"2025-06-12T19:40:37.012Z","avatar_url":"https://github.com/taosdata.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"简体中文 | [English](README.md)\n\n# TDgpt体验测试环境使用指南\n\n## 1. TDgpt是什么\n\nTDgpt是TDengine内置的时序数据分析智能体，它基于TDengine的时序数据查询功能，通过SQL提供运行时可动态扩展和切换的时序数据高级分析能力，包括：\n- 时序数据预测\n- 时序数据异常检测\n\n## 2. 已支持模型\n| 功能维度       | 算法/模型                                    | 版本支持     |\n|----------------|------------------------------------------|-------------|\n| **预测模型**   | Arima、HoltWinters、LSTM、MLP、TDtsfm_1（自研）  | ≥3.3.6.0    |\n| **异常检测**   | k-Sigma、IQR、Grubbs、SHESD、LOF、Autoencoder | ≥3.3.6.0    |\n\n\n---\n\n## 3. 环境准备\n### 3.1 基础环境要求\n1. Git\n2. Docker Engine (v20.10+)\n3. Docker Compose (v2.20+)\n\n### 3.2 组件要求\n| 组件名称                  | 版本要求     | 功能描述           |\n|------------------------|--------------|----------------|\n| analyse.sh          | 1.0.0.0      | 生成预测/异常检测结果并存储 |\n| TDengine Community Edition| ≥3.3.6.0     | TDengine时序数据库  |\n| TDgpt Community Edition| ≥3.3.6.0     | 集成多种时序分析算法     |\n| Grafana            | ≥11.0.11     | 数据可视化展示        |\n\n---\n\n## 4. 环境初始化\n### 4.1 克隆仓库\n```bash\ngit clone https://github.com/taosdata/TDgpt-demo\ncd TDgpt-demo\nchmod 775 analyse.sh\n```\n### 4.2 数据简介\nTDgpt-demo/demo_data下包含三个csv文件（electricity_demand.csv、wind_power.csv、ec2_failure.csv），以及三个同前缀sql脚本，分别对应电力需求预测、风力发电预测和运维监控异常检测场景。\n\nTDgpt-demo/demo_dashboard下包含了三个json文件（electricity_demand_forecast.json , wind_power_forecast.json , and ec2_failure_anomaly.json），分别对应三个场景的看板。\n\ndocker-compose.yml中已经定义了TDengine容器的持久化卷：tdengine-data，待容器启动后，使用docker cp命令将demo_data拷贝至容器内使用。\n\n## 5. 运行demo\n**注意：在运行demo前，请根据您宿主机的架构（CPU类型），编辑docker-compose.yml文件，为TDengine指定对应的platform参数：linux/amd64（Intel/AMD CPU）或linux/arm64（ARM CPU）。TDgpt必须统一使用linux/amd64参数。**\n### 5.1 服务启停\n在TDgpt-demo目录下执行如下命令：\n```bash\n# 启动服务\ndocker-compose up -d\n```\n首次运行时，等待10s后请执行如下命令将TDgpt的Anode节点注册到TDengine：\n```bash\n# 注册Anode\ndocker exec -it tdengine taos -s \"create anode 'tdgpt:6090'\"\n```\n\n运行完demo后，使用下面的命令停止所有容器\n```bash\n# 停止服务\ndocker-compose down\n```\n\n### 5.2 数据初始化\n\n```bash\n# 拷贝数据和脚本到容器\ndocker cp analyse.sh tdengine:/var/lib/taos\ndocker cp demo_data tdengine:/var/lib/taos\n# 初始化数据\ndocker exec -it tdengine taos -s \"source /var/lib/taos/demo_data/init_electricity_demand.sql\"\ndocker exec -it tdengine taos -s \"source /var/lib/taos/demo_data/init_wind_power.sql\"\ndocker exec -it tdengine taos -s \"source /var/lib/taos/demo_data/init_ec2_failure.sql\"\n```\n### 5.3 配置Grafana看板\n\n1. 打开浏览器，输入http://localhost:3000，并用默认的用户名口令 admin/admin 登录Grafana。\n2. 登录成功后，进入路径\"Home → Dashboards\"页面，并且依次导入electricity_demand_forecast.json、wind_power_forecast.json、ec2_failure_anomaly.json文件。 \n4. 选择看板并查看结果。 初始看板上只显示electricity_demand、wind_power、ec2_failure数据的真实值。\n5. 按照下列步骤，执行shell脚本命令，将基于原始的数据，生成动态的预测结果，并呈现在看板上。看板配置为5s刷新，在执行过程中可查看动态预测曲线。\n\n### 5.4 复现预测过程\n\n#### 5.4.1 电力需求预测\n我们以电力需求预测场景为例analyze.sh脚本，来实现预测结果。首先完成TDtsfm_1算法的演示，在宿主机上执行如下命令：\n```bash\ndocker exec -it tdengine /var/lib/taos/analyse.sh --type forecast --db tdgpt_demo \\\n--table electricity_demand --stable single_val --algorithm tdtsfm_1 \\\n--params \"rows=48,wncheck=0\" --start \"2024-01-01\" --window 30d --step 1d\n```\n上述shell脚本，将从指定的起始时间开始（2024-01-01）以前一个月的数据为输入，使用TDtsfm_1算法预测当前下一天的每30mins的电力需求（共计48个数据点），直到达到electricity_demand 表中最后一天的记录，并将结果写入electricity_demand_tdtsfm_1_result 表中。执行新的预测前，脚本会新建/清空对应的结果表。执行过程中将持续在控制台上，按照天为单位推进输出如下的执行结果：\n\n```bash\nProcessing window: 2024-01-12 00:00:00 → 2024-02-11 00:00:00\nWelcome to the TDengine Command Line Interface, Client Version:3.3.6.0\nCopyright (c) 2023 by TDengine, all rights reserved.\n\ntaos\u003e INSERT INTO tdgpt_demo.electricity_demand_tdtsfm_1_result SELECT _frowts, forecast(val, 'algorithm=tdtsfm_1,fc_rows=48,wncheck=0') \n               FROM tdgpt_demo.electricity_demand\n               WHERE ts \u003e= '2024-01-12 00:00:00' AND ts \u003c '2024-02-11 00:00:00'\nInsert OK, 48 row(s) affected (0.238208s)\n```\n我们再完成HotWinters算法的演示，在宿主机上执行如下命令：\n```bash\ndocker exec -it tdengine /var/lib/taos/analyse.sh --type forecast --db tdgpt_demo \\\n--table electricity_demand --stable single_val --algorithm holtwinters \\\n--params \"rows=48,period=48,wncheck=0,trend=add,seasonal=add\" --start \"2024-01-01\" --window 30d --step 1d\n```\n\n#### 5.4.2 风力发电量预测\n```bash\ndocker exec -it tdengine /var/lib/taos/analyse.sh --type forecast --db tdgpt_demo \\\n--table wind_power --stable single_val --algorithm tdtsfm_1 \\\n--params \"rows=96,wncheck=0\" --start \"2024-07-12\" --window 30d --step 1d \n```\n```bash\ndocker exec -it tdengine /var/lib/taos/analyse.sh --type forecast --db tdgpt_demo \\\n--table wind_power --stable single_val --algorithm holtwinters \\\n--params \"rows=96,period=96,wncheck=0,trend=add,seasonal=add\" --start \"2024-07-12\" --window 30d --step 1d \n```\n\n#### 5.4.3 运维监控异常检测\n\n```bash\ndocker exec -it tdengine /var/lib/taos/analyse.sh --type anomaly --db tdgpt_demo \\\n--table ec2_failure --stable single_val --algorithm ksigma \\\n--params \"k=3\" --start \"2014-03-07\" --window 7d --step 1h\n```\n```bash\ndocker exec -it tdengine /var/lib/taos/analyse.sh --type anomaly --db tdgpt_demo \\\n--table ec2_failure --stable single_val --algorithm grubbs \\\n--start \"2014-03-07\" --window 7d --step 1h\n```\n\n---\n\n## 6. TDengine 时序分析脚本使用说明\n\n### 6.1 脚本概述\n本脚本用于在TDengine时序数据库上执行预测(forecast)和异常检测(anomaly)分析，支持滑动窗口机制处理时序数据。脚本通过参数化配置实现灵活的时间窗口管理和多种算法调用。\n\n### 6.2 参数说明\n\n#### 6.2.1 必选参数\n| 参数名       | 描述                 | 示例值            |\n|--------------|----------------------|-------------------|\n| `--db`       | 目标数据库名称       | `tdgpt_demo`      |\n| `--table`    | 源数据表名           | `electricity_demand` |\n| `--stable`   | 超级表名称           | `single_val`      |\n| `--type`     | 分析类型(`forecast/anomaly`)| `forecast`       |\n| `--algorithm`| 算法名称             | `holtwinters`     |\n| `--params`   | 算法参数键值对       | `\"period=48,trend=add\"` |\n| `--start`    | 分析起始时间         | `\"2024-08-01\"`    |\n\n#### 6.2.2 可选参数\n| 参数名      | 默认值 | 描述                  | 示例值       |\n|-------------|--------|-----------------------|--------------|\n| `--ts_col`  | `ts`   | 时间戳列名            | `timestamp`  |\n| `--val_col` | `val`  | 数值列名              | `voltage`    |\n| `--step`    | `1d`   | 窗口滑动步长          | `15m`        |\n| `--window`  | `30d`  | 分析窗口大小          | `24h`        |\n\n---\n\n### 6.3 时间格式规范\n| 单位字符 | 时间单位 | 有效值范围     | 示例换算      |\n|----------|----------|----------------|---------------|\n| `d`      | 天数     | ≥1             | `30d=2592000秒` |\n| `h`      | 小时数   | ≥1             | `24h=86400秒`   |\n| `m`      | 分钟数   | ≥1             | `15m=900秒`     |\n\n---\n\n### 6.4 使用示例\n\n#### 6.4.1 电力需求预测\n```bash\n./analyse.sh \\\n  --db tdgpt_demo \\\n  --table electricity_demand \\\n  --stable single_val \\\n  --type forecast \\\n  --algorithm holtwinters \\\n  --params \"period=48,trend=add\" \\\n  --start \"2024-08-01\" \\\n  --window 30d \\\n  --step 1d\n```\n\n## 7. 使用更多的数据\n参考“5.2 数据初始化”和“5.4 复现预测”章节内容，执行对应的sql，并确保按照规定格式将数据准备为csv格式（逗号分隔，值需要用英文双引号括起来），即可将数据导入TDengine。然后，请使用章节5中的方法来生成预测结果，并调整Grafana中的看板以实现和实际数据的对比。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaosdata%2Ftdgpt-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaosdata%2Ftdgpt-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaosdata%2Ftdgpt-demo/lists"}