处理评语智育

develop
PL 2 months ago
parent b68b576b8c
commit 8c2a543bbb

@ -12,10 +12,10 @@ import java.util.List;
public class ChatModelDto {
public String type;
public String name;
public String role;
public String chat;
public ArrayList<String> role;
public ArrayList<String> chat;
public ArrayList<String> cycleChats;
public String end;
public ArrayList<String> end;
}

@ -32,6 +32,12 @@ public class ChatCommentsDto {
*
*/
private int repeat;
/*
*
*/
private int phase;
/**
*
*/

@ -76,6 +76,7 @@ public class ChatMessageServiceImpl implements ChatMessageService {
try {
// 目前仅使用讯飞星火大模型
String appId = chatCommentsDto.getAppId();
// 获取模板文本
String text = commentsTemplate(chatCommentsDto);
if (!StringUtils.isEmpty(text)) {
chatCommentsDto.setText(text);
@ -300,29 +301,15 @@ public class ChatMessageServiceImpl implements ChatMessageService {
* @return
*/
private String commentsTemplate(ChatCommentsDto chatCommentsDto) {
try {
StringBuilder builder = new StringBuilder();
String strData = JSON.toJSONString(chatCommentsDto.getData());
//检查是否角色
int phase = Math.max(chatCommentsDto.getPhase(), 0);
List<ChatModelDto> chatModels = new ArrayList<>();
ChatModelDto chatModel = null;
// 获取模型数据
chatModels = jsonLoader.myJsonDataBean();
/*
//验证获取模型数据 异常问题
try {
String fileText = FileUtil.getFileText("Json/ChatModel.json");
String jsonData = JSON.toJSONString(fileText);
//获取聊天字段中的数据
Object obj = JSON.parseObject(jsonData).get("chatModel");
String jsonData01 = JSON.toJSONString(obj);
//转换方式
chatModels = JSON.parseObject(jsonData01, new TypeReference<List<ChatModelDto>>() {});
log.info("获取地址fileText"+fileText+"----文件内容Data:"+ jsonData +"----获取模型集合Object" + obj +"----获取模型集合String"+ jsonData01 +"----获取模型集合机构:"+chatModels);
} catch (Exception e) {
throw new ServiceException(ErrorCode.OPERATION_ERROR.getCode(), "读取文件" + Arrays.toString(e.getStackTrace()) + e.getMessage());
}*/
//循环查找对应的模型数据
for (ChatModelDto chatModelTemp : chatModels) {
//判断评语类型
@ -333,8 +320,16 @@ public class ChatMessageServiceImpl implements ChatMessageService {
}
if (chatModel != null) {
String role = "";
if (phase > 2){
role = chatModel.getRole().get(0);
}else
{
role = chatModel.getRole().get(1);
}
//角色条件
builder.append(String.format(chatModel.getRole(), chatCommentsDto.getPeriod(), chatCommentsDto.getSubject()));
builder.append(String.format(chatModel.getRole().get(phase), chatCommentsDto.getPeriod(), chatCommentsDto.getSubject()));
}
ChatModelDto finalChatModel = chatModel;
@ -354,9 +349,12 @@ public class ChatMessageServiceImpl implements ChatMessageService {
throw new ServiceException(ErrorCode.PARAMS_ERROR.getCode(), "请求参数异常");
}
String chat = phase > 0 ? finalChatModel.getChat().get(1) : finalChatModel.getChat().get(0);
String cycleChat = finalChatModel.getCycleChats().get(0);
// 使用String.format方法生成最终的字符串
builder.append(String.format(
finalChatModel.getChat(),
chat,
wisdomComments.getName(),
wisdomComments.getYear(),
wisdomComments.getSemester(),
@ -368,24 +366,10 @@ public class ChatMessageServiceImpl implements ChatMessageService {
wisdomComments.getProportion(),
wisdomComments.getName()
));
/*
//有平均分
builder.append(String.format(
finalChatModel.getChat(),
wisdomComments.getName(),
wisdomComments.getYear(),
wisdomComments.getSemester(),
wisdomComments.getJoinAll(),
wisdomComments.getLessonMiddle(),
wisdomComments.getOnLine(),
wisdomComments.getMarking(),
wisdomComments.getAverage(),
wisdomComments.getLevel(),
wisdomComments.getProportion(),
wisdomComments.getName()
));*/
wisdomComments.getDims().forEach(item -> {
builder.append(String.format(finalChatModel.getCycleChats().get(0),
if(item.data.length >= 4)
{
builder.append(String.format(cycleChat,
item.name,
item.data[0],
item.data[1],
@ -393,8 +377,9 @@ public class ChatMessageServiceImpl implements ChatMessageService {
item.data[3],
item.data[4]
));
}
});
builder.append(String.format(finalChatModel.getEnd(), wisdomComments.getName()));
builder.append(String.format(finalChatModel.getEnd().get(0), wisdomComments.getDims().size()));
break;
}
//智育 表现模版
@ -423,11 +408,11 @@ public class ChatMessageServiceImpl implements ChatMessageService {
count++;
}
}
builder.append(String.format(finalChatModel.getEnd(), count));
builder.append(String.format(finalChatModel.getEnd().get(0), count));
break;
}
// 智育 学科评语模版
case "windomSubject": {
case "wisdomSubject": {
List<WisdomSubjectComments> subjectComments;
try {
subjectComments = JSON.parseObject(strData, new TypeReference<List<WisdomSubjectComments>>() {
@ -435,11 +420,9 @@ public class ChatMessageServiceImpl implements ChatMessageService {
} catch (Exception e) {
throw new ServiceException(ErrorCode.PARAMS_ERROR.getCode(), "请求参数异常");
}
if (subjectComments.size() <= 1) {
if (subjectComments.isEmpty()) {
throw new ServiceException(ErrorCode.PARAMS_ERROR.getCode(), "请求参数异常");
}
}
builder.append(finalChatModel.getChat());
String name = "";
//拼接学科数组
@ -448,10 +431,12 @@ public class ChatMessageServiceImpl implements ChatMessageService {
for (WisdomSubjectComments.StuInfo stuInfo : comments.getRankings()) {
builder.append(String.format(finalChatModel.getCycleChats().get(1), stuInfo.ranking,stuInfo.name, stuInfo.scoreRate*100));
}
if (phase == 0) {
name = comments.getClaasRanking().name;
builder.append(String.format(finalChatModel.getCycleChats().get(2),name,comments.getClaasRanking().ranking, comments.getClaasRanking().scoreRate * 100,comments.getClaasRanking().average * 100));
builder.append(String.format(finalChatModel.getCycleChats().get(2), name, comments.getClaasRanking().ranking, comments.getClaasRanking().scoreRate * 100, comments.getClaasRanking().average * 100));
}
}
builder.append(String.format(finalChatModel.getEnd(), subjectComments.size(),name));
builder.append(String.format(finalChatModel.getEnd().get(0), subjectComments.size(),name));
break;
}
//艺术 考核指标纬度评语
@ -496,7 +481,7 @@ public class ChatMessageServiceImpl implements ChatMessageService {
builder.append(String.format(finalChatModel.getCycleChats().get(0), artSubject.getDimension(),artSubject.getBlock(), artSubject.getPoint(),artSubject.getScore(), artSubject.getTotalScore(),artSubject.getPercent()));
}
builder.append(String.format(finalChatModel.getEnd(),chatCommentsDto.getSubject()));
builder.append(String.format(finalChatModel.getEnd().get(0),chatCommentsDto.getSubject()));
break;
}
//体育
@ -519,13 +504,17 @@ public class ChatMessageServiceImpl implements ChatMessageService {
}
if (chatCommentsDto.getSize() > 0) {
builder.append("字数限制在")
builder.append("限制条件")
.append(chatCommentsDto.getSize())
.append("字左右");
.append("字左右;【返回评语内容#不要开头提示语#】。");
} else {
builder.append("字数限制在200字左右");
builder.append("字数限制在200字左右;【#返回评语内容#,#不要内容提示语#】。");
}
return builder.toString();
} catch (Exception e) {
log.info(Arrays.toString(e.getStackTrace()));
log.error("{}-{}", e.getMessage(), Arrays.toString(e.getStackTrace()));
throw new ServiceException(ErrorCode.OPERATION_ERROR.getCode(), Arrays.toString(e.getStackTrace()));
}
}
}

@ -3,42 +3,44 @@
{
"type": "wisdom",
"name": "智育 总体评语模版",
"role": "请扮演[%s%s]老师角色\n",
"chat": "%s同学在%s学年度第%s学期中共计参加了%s次评测其中课中评测%s次、线上评测%s次、阅卷评测%s次素养等级为%s已超过班级%s%% 同学。\n %s同学总体表现",
"role": ["请扮演[%s%s]老师角色\n","请扮演[%s%s]老师角色\n"],
"chat": ["%s同学在%s学年度第%s学期中共计参加了%s次评测其中课中评测%s次、线上评测%s次、阅卷评测%s次素养等级为%s已超过班级%s%% 的同学。\n %s同学的总体表现",
"%s在%s学年度第%s学期共计参加了%s次评测其中课中评测%s次、线上评测%s次、阅卷评测%s次总体表现"
],
"cycleChats": ["在%s中学习态度为%s、学习成效%s、合作能力%s、评价能力%s、评价能力%s ;\n"],
"end": "根据我提供的数据,对这 %s 次考试成绩表现做一个评价\n"
"end": ["根据我提供的数据,对这 %s 次考试成绩表现做一个评价\n"]
},
{
"type": "wisdomExam",
"name": "智育 成绩表现模版",
"role": "请扮演[%s%s]老师角色\n",
"chat": "",
"role": ["请扮演[%s%s]老师角色\n","请扮演[%s%s]老师角色\n"],
"chat": [""],
"cycleChats": ["参加第%s次考试结果名称:%s时间:%s得分%s考试得分率%s %% 排名:%s ;\n"],
"end": "根据我提供的数据,对这 %s 次考试成绩表现做一个评价。\n"
"end": ["根据我提供的数据,对这 %s 次考试成绩表现做一个评价。\n"]
},
{
"type": "windomSubject",
"type": "wisdomSubject",
"name": "智育 学科评语模版",
"role": "请扮演[%s%s]老师角色\n ",
"chat": "各科评测表现",
"role": ["请扮演[%s%s]老师角色\n ","请扮演[%s%s]老师角色\n"],
"chat": ["各科评测表现"],
"cycleChats":["科目:%s 班级top10"," 排名:%s姓名%s得分率%s %% ,\n " ,"%s在班级排名%s,得分率:%s %%,排在班级平均得分率:(%s %%)"],
"end": "根据我提供的数据,对这%s门学科【%s】在班级中的表现做一个评价。 \n"
"end": ["根据我提供的数据,对这%s门学科【%s】在班级中的表现做一个评价。 \n"]
},
{
"type": "artLatitude",
"name": "艺术 考核指标评语模版",
"role": "请扮演[%s%s]老师角色\n ",
"chat": "考核指标评纬度\n",
"role": ["请扮演[%s%s]老师角色\n ","请扮演[%s%s]老师角色\n"],
"chat": ["考核指标评纬度\n"],
"cycleChats": [" 一级指标:%s %s %%);二级指标:%s %s %%);三级指标 %s %s %% ;得分率:%s %% 等级:%s\n"],
"end": "根据我提供的【考核指标纬度】做一个整体的评价。 \n"
"end": ["根据我提供的【考核指标纬度】做一个整体的评价。 \n"]
},
{
"type": "artSubject",
"name": "艺术 学科评语模版",
"role": "请扮演[%s%s]老师角色\n ",
"chat": "%s学科\n",
"role": ["请扮演[%s%s]老师角色\n ","请扮演[%s%s]年级老师角色\n"],
"chat": ["%s学科\n"],
"cycleChats": [" 考核纬度:%s一级知识点%s二级知识点 %s得分%s/%s 得分率:%s\n"],
"end": "根据我提供的【%s学科】的表现做一个整体的评价。 \n"
"end": ["根据我提供的【%s学科】的表现做一个整体的评价。 \n"]
}
]
}

Loading…
Cancel
Save