Git Product home page Git Product logo

bi-project-core's Introduction

基于Openai的智能BI平台

作者:JL

利用大语言模型分析图表数据并自动生成图表分析结论及图表数据可视化图。快速高效处理复杂的数据分析过程。

项目介绍

主要框架及技术使用

  • Spring Boot 2.7.2
  • Spring MVC
  • MyBatis + MyBatis Plus 数据访问
  • Openai API
  • Spring Scheduler 定时任务
  • Guava 重试机制
  • RabbitMQ 消息队列持久化任务
  • Redission 的 RateLimiter 限流及图表查询缓存
  • WebSocket 任务消息实时发送
  • Ant design pro(React)
  • Echarts 图表展示
  • MySQL 数据库

基本功能

  • 用户可输入分析目标、图表类型、图表名称后上传文件进行分析,支持仅上传文件
  • 分析模式支持两种模型(同步和异步分析)提高用户体验
  • 我的图表支持用户查看图表原始数据
  • 支持根据图表名称、图表类型、图表分析目标查看和检索图表
  • 支持用户对失败的图表进行手动重试
  • 支持图表管理页面手动刷新,保证获取到图表的最新状态
  • 加入积分系统,每次调用分析消耗积分,可通过签到获取积分
  • 任务执行成功或失败,弹出实时消息通知

核心流程

同步 异步

项目细节

  • 精心设计大语言模型 Prompt 提高 AI 生成的准确性并提升冗余度
  • 为节约计算成本,使用 Easy Excel 解析用户上传的 XLSX 表格数据文件并压缩为 CSV,同时实测提高了 20% 的单次输入数据量
  • 为防止某用户恶意占用系统资源,基于 Redisson 的 RateLimiter 买现分布式限流,控制单用户访问的频率
  • 由于 AI 分析时间较长,基于自定义IO密集型线程池+任务队列实现了 AIGC 的并发执行和异步化,提高用户体验
  • 由于本地任务队列重启丢失数据,使用 RabbitMQ (分布式消息队列)来接受并持久化任务消息,通过 Direct 交换机转发给解耦的 Al 生成模块消费并处理任务,提高了系统的可靠性
  • 使用死信队列处理异步分析异常情况,同时将图表状态设为失败
  • 若任务未提交到队列中(或队列满时),通过定时任务将失败状态图表放入队列中
  • 给任务的执行增加 guava Retrying 重试机制,保证同步分析系统可靠性和稳定性。
  • 任务成功或失败通过Websocket实时反馈给用户,并更新图表页面,同时可对失败任务手动重试
  • 每个用户注册可获得10个积分,每次进行分析需消耗一个积分,可通过每日签到增加积分数
  • 使用 Redission 进行用户静态的图表数据缓存,用于提高加载速度

项目界面

输入图片说明 输入图片说明 输入图片说明

bi-project-core's People

Contributors

luojlong avatar liyupi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.