Эх сурвалжийг харах

core-ai autoScore updates

deason 2 сар өмнө
parent
commit
13fc0394b7

+ 27 - 0
core-ai/src/main/java/com/qmth/boot/core/ai/model/llm/score/AutoScoreModel.java

@@ -0,0 +1,27 @@
+package com.qmth.boot.core.ai.model.llm.score;
+
+/**
+ * 评分模式
+ */
+public enum AutoScoreModel {
+
+    /**
+     * 按得分点给分模式
+     */
+    POINT,
+
+    /**
+     * 按档次给分模式
+     */
+    LEVEL;
+
+    public static AutoScoreModel find(String text) {
+        for (AutoScoreModel type : values()) {
+            if (type.toString().equalsIgnoreCase(text)) {
+                return type;
+            }
+        }
+        return null;
+    }
+
+}

+ 134 - 0
core-ai/src/main/java/com/qmth/boot/core/ai/model/llm/score/AutoScoreRequest.java

@@ -0,0 +1,134 @@
+package com.qmth.boot.core.ai.model.llm.score;
+
+import org.springframework.validation.annotation.Validated;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 自动评分请求参数
+ */
+@Validated
+public class AutoScoreRequest implements Serializable {
+
+    private static final long serialVersionUID = 6487765658648836214L;
+
+    @NotBlank(message = "科目名称不能为空")
+    private String subjectName;
+
+    @NotBlank(message = "试题内容不能为空")
+    private String questionBody;
+
+    @NotNull(message = "评分模式")
+    private AutoScoreModel scoreModel;
+
+    @Valid
+    @NotNull(message = "标答不能为空")
+    @Size(min = 1, message = "标答不能为空")
+    private List<StandardAnswer> standardAnswer = new ArrayList<>();
+
+    @NotNull(message = "考生回答不能为空")
+    private String studentAnswer;
+
+    /**
+     * 试题总分
+     */
+    private double totalScore;
+
+    /**
+     * 最小间隔分
+     */
+    private double intervalScore = 1;
+
+    /**
+     * 增加标答内容及分值
+     *
+     * @param content 标答内容
+     * @param score   按得分点-分值
+     */
+    public AutoScoreRequest addStandardAnswer(@NotNull String content, double score) {
+        StandardAnswer answer = new StandardAnswer();
+        answer.setContent(content);
+        answer.setScore(score);
+        this.standardAnswer.add(answer);
+        return this;
+    }
+
+    /**
+     * 增加标答内容及分值
+     *
+     * @param content   标答内容
+     * @param lowScore  按档次-最低分值
+     * @param highScore 按档次-最高分值
+     */
+    public AutoScoreRequest addStandardAnswer(@NotNull String content, double lowScore, double highScore) {
+        StandardAnswer answer = new StandardAnswer();
+        answer.setContent(content);
+        answer.setLowScore(lowScore);
+        answer.setHighScore(highScore);
+        this.standardAnswer.add(answer);
+        return this;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public String getQuestionBody() {
+        return questionBody;
+    }
+
+    public void setQuestionBody(String questionBody) {
+        this.questionBody = questionBody;
+    }
+
+    public AutoScoreModel getScoreModel() {
+        return scoreModel;
+    }
+
+    public void setScoreModel(AutoScoreModel scoreModel) {
+        this.scoreModel = scoreModel;
+    }
+
+    public List<StandardAnswer> getStandardAnswer() {
+        return standardAnswer;
+    }
+
+    public void setStandardAnswer(List<StandardAnswer> standardAnswer) {
+        this.standardAnswer = standardAnswer;
+    }
+
+    public String getStudentAnswer() {
+        return studentAnswer;
+    }
+
+    public void setStudentAnswer(String studentAnswer) {
+        this.studentAnswer = studentAnswer;
+    }
+
+    public double getTotalScore() {
+        return totalScore;
+    }
+
+    public void setTotalScore(double totalScore) {
+        this.totalScore = totalScore;
+    }
+
+    public double getIntervalScore() {
+        return intervalScore;
+    }
+
+    public void setIntervalScore(double intervalScore) {
+        this.intervalScore = intervalScore;
+    }
+
+}

+ 35 - 0
core-ai/src/main/java/com/qmth/boot/core/ai/model/llm/score/AutoScoreResult.java

@@ -0,0 +1,35 @@
+package com.qmth.boot.core.ai.model.llm.score;
+
+import java.io.Serializable;
+
+public class AutoScoreResult implements Serializable {
+
+    private static final long serialVersionUID = 471814557317957843L;
+
+    /**
+     * 得分
+     */
+    private double totalScore;
+
+    /**
+     * 步骤分
+     */
+    private double[] stepScore;
+
+    public double getTotalScore() {
+        return totalScore;
+    }
+
+    public void setTotalScore(double totalScore) {
+        this.totalScore = totalScore;
+    }
+
+    public double[] getStepScore() {
+        return stepScore;
+    }
+
+    public void setStepScore(double[] stepScore) {
+        this.stepScore = stepScore;
+    }
+
+}

+ 66 - 0
core-ai/src/main/java/com/qmth/boot/core/ai/model/llm/score/StandardAnswer.java

@@ -0,0 +1,66 @@
+package com.qmth.boot.core.ai.model.llm.score;
+
+import org.springframework.validation.annotation.Validated;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 自动评分的标答
+ */
+@Validated
+public class StandardAnswer implements Serializable {
+
+    private static final long serialVersionUID = -7828827674930886434L;
+
+    @NotNull(message = "标答不能为空")
+    private String content;
+
+    /**
+     * 按得分点-分值
+     */
+    private double score;
+
+    /**
+     * 按档次-最低分值
+     */
+    private double lowScore;
+
+    /**
+     * 按档次-最高分值
+     */
+    private double highScore;
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public double getScore() {
+        return score;
+    }
+
+    public void setScore(double score) {
+        this.score = score;
+    }
+
+    public double getLowScore() {
+        return lowScore;
+    }
+
+    public void setLowScore(double lowScore) {
+        this.lowScore = lowScore;
+    }
+
+    public double getHighScore() {
+        return highScore;
+    }
+
+    public void setHighScore(double highScore) {
+        this.highScore = highScore;
+    }
+
+}