智能BI项目-初学AI分析(三)
往期开发(已经完成)
- 智能 BI 项目-介绍(一)
- 智能 BI 项目-初始化(二)
- 智能 BI 项目-初学 AI 分析(三)
- 智能 BI 项目-AI 接口调用(四)
- 智能 BI 项目-接口优化(五)
- 智能 BI 项目-接口的异步化(六)
- 智能 BI 项目-引入 RabbitMQ(七)
今日后端开发流程
AI 数据接口的设计
接口参数的设计
1
2public BaseResponse<string> genChartByAI( MultipartFile multipartFile,
GenChartByAiRequest genChartByAiRequest, HttpServletRequest request){}接口的实现过程
参数的获取和校验
1
2
3
4
5
6
7
8// 参数获取
String goal = genChartByAiRequest.getGoal();
String name = genChartByAiRequest.getName();
String chartType = genChartByAiRequest.getChartType();
// 参数校验 throwUtils 异常工具类
ThrowUtils.throwIf(StringUtils.isEmpty(goal), ErrorCode.PARAMS_ERROR, "目标不能为空");
ThrowUtils.throwIf(StringUtils.isEmpty(chartType), ErrorCode.PARAMS_ERROR, "类型不能为空");
ThrowUtils.throwIf(StringUtils.isEmpty(name), ErrorCode.PARAMS_ERROR, "图表名称不能为空");用户的鉴权
1
2
3// 判断是否登录
User loginUser = userService.getLoginUser(request);
ThrowUtils.throwIf(Objects.isNull(loginUser), ErrorCode.NOT_LOGIN_ERROR);用户的 AI 消息拼接
1
2
3
4
5
6
7
8
9// 用户消息拼接
StringBuilder userMessageBuilder = new StringBuilder();
userMessageBuilder.append("分析需求:").append("\n");
String newGoal = goal + ",请使用" + chartType;
userMessageBuilder.append(newGoal).append("\n");
userMessageBuilder.append("原始数据:").append("\n");
String dataStr = ExcelUtils.excelToCsv(multipartFile);
userMessageBuilder.append(dataStr);
return ResultUtils.success(userMessageBuilder.toString());
最终具体的代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/**
* AI对话分析
*
* @param multipartFile
* @param genChartByAiRequest
* @param request
* @return
*/
public BaseResponse<string> genChartByAI( MultipartFile multipartFile,
GenChartByAiRequest genChartByAiRequest, HttpServletRequest request) {
// 第二天内容
// 参数获取
String goal = genChartByAiRequest.getGoal();
String name = genChartByAiRequest.getName();
String chartType = genChartByAiRequest.getChartType();
// 参数校验
ThrowUtils.throwIf(StringUtils.isEmpty(goal), ErrorCode.PARAMS_ERROR, "目标不能为空");
ThrowUtils.throwIf(StringUtils.isEmpty(chartType), ErrorCode.PARAMS_ERROR, "类型不能为空");
ThrowUtils.throwIf(StringUtils.isEmpty(name), ErrorCode.PARAMS_ERROR, "图表名称不能为空");
// 判断是否登录
User loginUser = userService.getLoginUser(request);
ThrowUtils.throwIf(Objects.isNull(loginUser), ErrorCode.NOT_LOGIN_ERROR);
// 用户消息拼接
StringBuilder userMessageBuilder = new StringBuilder();
userMessageBuilder.append("分析需求:").append("\n");
String newGoal = goal + ",请使用" + chartType;
userMessageBuilder.append(newGoal).append("\n");
userMessageBuilder.append("原始数据:").append("\n");
String dataStr = ExcelUtils.excelToCsv(multipartFile);
userMessageBuilder.append(dataStr);
return ResultUtils.success(userMessageBuilder.toString());
}
今天后端收获
主要是学习了 AI 如何进行训练,AI 对话的系统预设,AI 的关键字提取,指定 AI 的输入和输出,并要求按照具体的格式进行回答。构建 AI 消息,压缩用户上传的文件信息。
今日前端开发流程
1.用户填写分析目标,制定此次分析的名称,以及生成图表的类型。
2.上传用户的原始数据
3.提交给后端接口
4.使用 ant design 提供的组件库 进行前端页面的构建
构件图如下:

5.今天前端收获
如何使用 ant design 的组件库,搭建前端的表单信息。初次使用 react 进行构建,通过官方文档来进行一些组件的使用和定制。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 keep初心!

