gpt-vis-api

gpt-vis-apiは、視覚化データを生成するためのJavaScriptライブラリです。ユーザーが簡単にデータを視覚化できるように設計されており、APIを介して他のアプリケーションと連携することが可能です。これにより、データ分析や報告書作成が効率化されます。

GitHubスター

20

ユーザー評価

未評価

お気に入り

0

閲覧数

23

フォーク

2

イシュー

0

README
GPT-VIS-API

基于 Node.js 和 Express 构建的图表生成服务,支持将生成的图表上传至 MinIO 并返回预签名 URL。

📌 项目概述

GPT-VIS API 是一个轻量级图表生成服务,旨在解决 antv/mcp-server-chart
在私有化部署方面的局限性。该服务接收数据请求,生成图表图像,上传到 MinIO 对象存储,并返回带有效期的预签名访问链接。

主要功能包括:

  • 接收 JSON 格式的数据请求
  • 使用 AntV/G 生成图表(如折线图、柱状图等)
  • 将图表图片上传至 MinIO 存储
  • 返回图片的预签名 URL 供前端访问

🎬 运行效果

https://github.com/user-attachments/assets/b2f440ba-6cc9-43bf-8af9-7e30d4a20702

QA交流群
  • 大模型应用交流群欢迎大家, 欢迎加进群讨论分享经验
  • 关注下面的公众号点击·微信群菜单添加微信拉你入群
微信群
image
🔧 环境准备
1. 安装依赖

确保已安装以下工具:

  • Docker
  • Docker Compose

🚀 快速启动
第一步 克隆仓库
git clone git@github.com:apconw/gpt-vis-api.git

# 启动服务
docker-compose up -d
第二步 minio配置
  • 登录minio控制台http://localhost:19201 admin/12345678
  • 1.手动创建minio 名字为chart-images的bucket 要求public类型的bucket
  • 2.创建accessKey和secretKey 修改docker-compose.yml中minio的配置重启即可
  • 3.执行docker-compose down 停止服务
  • 4.执行docker-compose up -d 重启服务
  • 5.docker-compose.yml中minio的配置可以根据实际情况配置对应服务器ip:
    MINIO_PUBLIC_DOMAIN: "http://localhost:19000"

image
image

⚠️ 注意:请先根据实际环境修改 docker-compose.yml 中的 MinIO 配置(如 accessKey、secretKey),然后重启服务。

🐳 构建镜像
make build
🧪 接口测试
测试接口

访问地址:http://localhost:3100/generate

图表类型定义
图表类型 说明
area 区域
bar 柱状
boxplot 箱线
column 直方
dual-axes 双轴
fishbone-diagram 鱼骨图
flow-diagram 流程
funnel 漏斗
histogram 直方
line 折线
liquid 水波
mind-map 思维导
network-graph 网络图
organization-chart 组织结构
pie
radar 雷达
sankey 桑基
scatter 散点
treemap
venn 维恩图
violin 小提琴图
word-cloud 词云
curl -X POST http://localhost:3100/generate \
  -H "Content-Type: application/json" \
  -d '{
    "type": "line",
    "data": [
      {"time": "2025-05", "value": 512},
      {"time": "2025-06", "value": 1024}
    ]
  }'

响应示例:
{
  "url": "https://minio.example.com/gpt-vis/chart-123.png?Expires=XYZ"
}

curl -X POST http://localhost:3100/generate \
  -H "Content-Type: application/json" \
  -d '{
    "type": "sankey",
    "data": [
        {
            "source": "访问网站",
            "target": "浏览商品",
            "value": 1500
        },
        {
            "source": "浏览商品",
            "target": "加入购物车",
            "value": 900
        },
        {
            "source": "加入购物车",
            "target": "进入结算",
            "value": 600
        },
        {
            "source": "进入结算",
            "target": "完成支付",
            "value": 400
        },
        {
            "source": "进入结算",
            "target": "放弃结算",
            "value": 200
        },
        {
            "source": "加入购物车",
            "target": "离开网站",
            "value": 300
        },
        {
            "source": "浏览商品",
            "target": "离开网站",
            "value": 600
        },
        {
            "source": "访问网站",
            "target": "立即离开",
            "value": 500
        }
    ],
    "nodeAlign": "center",
    "style": {
        "backgroundColor": "#f8f9fa",
        "palette": [
            "#4e79a7",
            "#f28e2b",
            "#e15759",
            "#76b7b2",
            "#59a14f",
            "#edc948",
            "#b07aa1",
            "#9c755f"
        ],
        "texture": "default"
    },
    "theme": {
        "fontFamily": "WenQuanYi Zen Hei"
    },
    "width": 800,
    "height": 500,
    "title": "用户购买旅程桑基图",
    "source": "mcp-server-chart"
}'

curl -X POST http://localhost:3100/generate \
  -H "Content-Type: application/json" \
  -d '{
    "data": [
        {
            "category": "浏览网站",
            "value": 50000
        },
        {
            "category": "放入购物车",
            "value": 35000
        },
        {
            "category": "生成订单",
            "value": 25000
        },
        {
            "category": "支付订单",
            "value": 15000
        },
        {
            "category": "完成交易",
            "value": 8000
        }
    ],
    "style": {
        "backgroundColor": "#ffffff",
        "palette": [
            "#FF6B6B",
            "#4ECDC4",
            "#45B7D1",
            "#96CEB4",
            "#FFEAA7"
        ],
        "texture": "default"
    },
    "theme": "default",
    "width": 600,
    "height": 400,
    "title": "用户转化漏斗图",
    "type": "funnel"
}'


# 组织架构图
curl -X POST http://localhost:3100/generate \
  -H "Content-Type: application/json" \
  -d '{
  "data": {
    "name": "CEO",
    "description": "首席执行官",
    "children": [
      {
        "name": "CTO",
        "description": "首席技术官",
        "children": [
          {
            "name": "研发经理",
            "description": "负责研发团队管理",
            "children": [
              {
                "name": "高级工程师 张伟",
                "description": "5年经验"
              },
              {
                "name": "工程师 李娜",
                "description": "2年经验"
              }
            ]
          },
          {
            "name": "架构师 王强",
            "description": "系统架构设计"
          }
        ]
      },
      {
        "name": "CFO",
        "description": "首席财务官",
        "children": [
          {
            "name": "财务经理",
            "description": "负责财务团队管理"
          }
        ]
      },
      {
        "name": "COO",
        "description": "首席运营官",
        "children": [
          {
            "name": "市场总监",
            "description": "负责市场战略"
          },
          {
            "name": "运营经理",
            "description": "负责日常运营"
          }
        ]
      }
    ]
  },
  "orient": "vertical",
  "style": {
    "backgroundColor": "#f8f9fa",
    "texture": "default"
  },
  "theme": "default",
  "width": 800,
  "height": 600,
  "type":"organization-chart"
}'