前言
大家好啊,我是雪荷,继七月重构完厚米匹配系统(我终于有我的开源项目了!!!-CSDN博客)后,我又重构并升级了灵犀BI(智能BI)项目,这也是我的另一个开源项目,希望各位能够给我一些支持,多给我的项目(GitHub - dnwwdwd/Lingxi-BI: 灵犀BI-专业的智能生成商业报表的项目)点点 star🌟。
项目介绍
灵犀 BI (bi.hejiajun.icu)是一个基于 Ant Design Pro + Spring Boot + RabbitMQ 的在线数据分析和图表显示网站,用户只需上传原始数据集和输入分析目标即可调用 AI 生成与数据集相关的可视化图表。同时还支持用户创建和加入队伍,允许用户将已生成图表纳入队伍中,支持修改和重新生成队伍内其他图表。
项目效果图
项目网址和源码
项目架构图
MQ 架构图
功能亮点
- MQ 消费者扩展至两个:分别是智谱 AI 与 ChatGPT-4o-mini,提供接口并发能力还加强了图表生成的准确性
- 支持创建队伍和加入队伍:用户可以将已生成的图表纳入队伍中进行团队协作
- 图表实时显示:引入 SSE 技术,当图表生成完毕会通过 SSE 流讲数据推送至前端,并完成实时渲染。(我的图表页面和队伍图表页面都支持)
- 后台管理:新增用户管理、图表管理和队伍管理页面。当图表生成错误时,管理员可以查看图表生成状态,既可以在线修改 Echarts 代码,也能重新生成图表,但走的时管理员专属队列,不会扣除用户积分。
- 限制用户同时生成的数量,保证系统可用性。
- 优化 AI prompt:规范 AI 输出格式,提升 AI 生成代码的合法性和正确性。
你能学到什么东西?
- Ant Design Pro 企业级中后台框架的学习和使用,对 React 和 Ant Design 组件库有进一步的了解和使用
- AI prompt 编写和优化:为了规范 AI 的回复和输入格式,需要不断优化和完善 AI prompt
- RabbitMQ 死信队列、直达交换机和消息路由转发等知识:该项目为了解决 AI 生成满的问题利用 RabbitMQ 进行图表生成后的异步化,同时防止部分消息无法被消费者消息还搭载了死信队列保证图表生成的可用性。
- 线程池的基本使用:在优化 AI 生成图表的过程中引入了线程池,通过线程池管理线程以生成图表
- 分布式限流器的使用:为了保证系统资源不被滥用,引入 Redisson 实现限流器,防止系统过载
- Guava Retry 库的使用:有时候保存数据库会发生错误,引入了 Guava Retry 实现重试机制保证数据顺利入库
- Mozilla 库的使用:在 Java 代码执行和预测 JS 代码的合法性,确保 AI 生成图表代码的准确性
- Echarts 库和 bytemd 组件的基本使用:利用 Echarts 库来展示可视化图表,还自定义 bytemd 组件来实现 AI 生成的代码的在线浏览和编辑
- SSE 流的使用:由于 AI 生成的图表是异步的,特地引入 SSE 流来实现图表的实施更新,保证数据能够及时显示
项目地址
如果觉得项目还不错的话,可以给我项目(github.com/dnwwdwd/Lin…)点 star 🌟 哈,真是非常感谢了,如果有 bug 的话,欢迎各位指出。也欢迎各位有想法的开发者与我一个优化和改进哈。