当前位置: 首页 > news >正文

AI智能测评应用平台项目分享

    大家好,我是程序媛雪儿,今天咱们聊个我新学的项目,AI智能评测应用平台系统。

    咱们先了解一下这个系统是干嘛的。

一、业务分析

      大致业务流程是应用制作者在创建应用页面填写应用信息,依次添加题目和评分规则生成测评应用,系统管理员可以在应用管理页面审核应用,通过审核的应用会显示在主页,其他用户可以检索应用,并在线答题,查看自己的答题结果,分享应用等(每个用户都可以答题人,也可以发布自己的测评)

     我认为这个项目有以下几个业务逻辑是可以考虑复用的

1、审核功能。一般类似知乎、csdn、b站这类用户可以上传自己作品的平台,大多有审核功能,大体上都是用户发表后,有审核员审核,通过后才会给客户推送,就可以复用这块功能,根据具体的业务稍作修改

2、分享功能。为了推广方便,一般项目都是有分享给他人的功能的,点击分享后,手机微信扫二维码,分享给其他人生成小卡片,其他项目也可能用得到

3、AI生成题目,AI生成测评结果。如果我们做的不是测评系统,也是可以用这块的,因为AI生成题目和测评结果,本质是设计prompt提示词,让AI能稳定的生成我们想要的Json串,我觉得这个能力可以给很多项目赋予AI的能力,使得结果更丰富,功能更丰富。

二、技术分析

后端

1、使用策略模式实现测评模块,策略模式一般使用在有多个算法,不同情况下使用各自对应的算法这种情况下。我们的系统是会根据用户选择应用类型是打分、测评以及评分结果是手动还是AI评分来选择对应的测评算法,因此选用策略模式

2、AI模块调用选用的是智谱AI,调用他人的接口,可以先写demo测试,然后根据我们的业务需求封装请求,简化请求(详情看笔记封装AI模块),实现模块解耦,也更方便我们调用接口

3、编写prompt,确保每次输出的json稳定

4、AI流式调用少不了响应式编程,Rxjava+sse可以实现AI生成一道题目,前端就展示一道题目的功能

5、缓存击穿问题的优化和实现。我们的项目可以访问题目生成接口,每次都会调用AI大模型,但是调用大模型是要token计费的,如果攻击者短时间内一直调用AI生成题目接口,很可能造成计费,甚至被大模型方认为我们的系统是攻击者,直接禁号了,可以使用caffeine+redis分布式锁解决这个问题。

6、某个表因为用户激增导致上百万的数据,调用缓慢,可以采用分库分表的方式解决,这个项目具体是使用的sharding-JDBC实现的。

7、系统幂等性设计方案,利用数据库索引唯一特性,使用乐观锁,分布式锁等等

8、线程是很宝贵的系统资源,如果想实现vip生成题目很快,普通用户限速生成题目这类功能,可以使用线程池隔离技术,让vip用户能使用所有进程,普通用户只能使用某几个进程

9、对用户行为进行统计分析,比如哪些App答题量最多,可以在首页优先显示(这块已实现)根据用户答的测评(MBTI性格测试)推送用户可能喜欢的文章等等(这块没实现)

前端

1、echarts+vue-echarts实现统计图表

2、pina状态管理

3、arco design组件库

4、qrcode二维码生成

5、使用umijs的openapi自动生成请求代码

三、页面展示

其他页面可查看笔记:

http://www.snowyee.cn/%E5%AE%9E%E6%88%98%E9%A1%B9%E7%9B%AE/AI%E7%AD%94%E9%A2%98%E5%BA%94%E7%94%A8%E5%B9%B3%E5%8F%B0%E7%AC%94%E8%AE%B0.html#%E9%A1%B5%E9%9D%A2%E6%95%88%E6%9E%9C

四、仓库地址

前端地址:https://gitee.com/gu-feiyin/aidada-frontend

后端地址:https://gitee.com/gu-feiyin/yudada-backend

mbti测试小程序地址:https://gitee.com/gu-feiyin/mbti-test-mini

项目完整版笔记:

http://www.snowyee.cn/%E5%AE%9E%E6%88%98%E9%A1%B9%E7%9B%AE/AI%E7%AD%94%E9%A2%98%E5%BA%94%E7%94%A8%E5%B9%B3%E5%8F%B0%E7%AC%94%E8%AE%B0.html

项目体验地址:我就不公开了哈,因为大模型token要计费,个人项目有点烧不起,还望谅解

随便聊聊:

     其实我觉得,弄清楚业务逻辑和实现方法后写代码是最简单的事情了,花不了多少时间。但是搞清楚业务逻辑,自己能举出多种解决方案,并且能根据仅有的资源选出最优解解决问题还是比较难的,所以,宝子们,学项目,写项目,多问问为什么,为什么库表的字段是这样设计?有没有更好的办法?这几种方案各自的优缺点是什么?适合什么样的场景?如果是我做,我打算用什么样的方法?原因是什么?等等,知其然,知其所以然,我们才能做的更好,走得更长远,加油~

    对了,声明一下项目的原创是程序员鱼皮,还是蛮多原创项目的,如果感兴趣想进他的星球看他自己录得视频和笔记可以加雪雪我,我拉你进他的星球,我反你30元,其他看源代码就能会的宝宝也可以拉我的代码看我的笔记,你们视情况而定~

       欢迎大家关注我的微信公众号,程序媛雪儿,雪儿会在上面发布编程的知识碎片,也有雪儿博客地址,上面有详细系统的笔记,雪儿是全栈,但是公众号目前主要还是发后端的技术,以后可能也会涉及到一些前端的知识,我们下期见,拜拜~

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数值分析——埃尔米特(Hermit)插值
  • Apple在Swift中引入同态加密
  • Stable Diffusion 官方模型V1.5版本下载
  • LLM - 理解 主流大模型 LLM 使用 Decoder Only 架构 (8点)
  • 回顾前面刷过的算法(4)
  • HanLP和Jieba区别
  • 单元测试JUnit
  • eslint配置忽略目录和文件
  • 国内开源软件镜像站点参考
  • 【STL】String的底层构造
  • Executable Code Actions Elicit Better LLM Agents
  • 国球荣耀背后的笑与泪——陈梦夺冠现象有感
  • 银河麒麟V10 审计工具 auditd 内存泄漏问题
  • Stable Diffusion绘画 | 图生图-基础使用介绍—提示词反推
  • 监控员工电脑的软件有哪些?四款监控员工电脑的软件分享!
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 【Amaple教程】5. 插件
  • jQuery(一)
  • leetcode388. Longest Absolute File Path
  • node和express搭建代理服务器(源码)
  • Redis的resp协议
  • Yii源码解读-服务定位器(Service Locator)
  • 从零开始的无人驾驶 1
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 利用DataURL技术在网页上显示图片
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 批量截取pdf文件
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • -- 数据结构 顺序表 --Java
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • hi-nginx-1.3.4编译安装
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​比特币大跌的 2 个原因
  • ​人工智能书单(数学基础篇)
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (152)时序收敛--->(02)时序收敛二
  • (2)nginx 安装、启停
  • (2)STL算法之元素计数
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (Git) gitignore基础使用
  • (八)c52学习之旅-中断实验
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (一)Java算法:二分查找
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .net 程序发生了一个不可捕获的异常
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型