Commit a04704a8 authored by 陈立彬's avatar 陈立彬

考试评分异步流程

parent c4be4d3f
...@@ -2,7 +2,9 @@ package cn.aibreeze.exam; ...@@ -2,7 +2,9 @@ package cn.aibreeze.exam;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;
@EnableAsync
@SpringBootApplication @SpringBootApplication
public class ExamMasterApplication { public class ExamMasterApplication {
......
...@@ -4,6 +4,7 @@ import cn.aibreeze.exam.dto.*; ...@@ -4,6 +4,7 @@ import cn.aibreeze.exam.dto.*;
import cn.aibreeze.exam.entity.ElehKnowledgeDo; import cn.aibreeze.exam.entity.ElehKnowledgeDo;
import cn.aibreeze.exam.entity.ElehKnowledgeTagDo; import cn.aibreeze.exam.entity.ElehKnowledgeTagDo;
import cn.aibreeze.exam.entity.ElehSessionQaRecordDo; import cn.aibreeze.exam.entity.ElehSessionQaRecordDo;
import cn.aibreeze.exam.facade.ExamAppFacade;
import cn.aibreeze.exam.mapper.ElehKnowledgeMapper; import cn.aibreeze.exam.mapper.ElehKnowledgeMapper;
import cn.aibreeze.exam.mapper.ElehKnowledgeTagMapper; import cn.aibreeze.exam.mapper.ElehKnowledgeTagMapper;
import cn.aibreeze.exam.mapper.ElehSessionQaRecordMapper; import cn.aibreeze.exam.mapper.ElehSessionQaRecordMapper;
...@@ -43,6 +44,8 @@ public class ExamController { ...@@ -43,6 +44,8 @@ public class ExamController {
private final AliyunNLSFacade aliyunNLSFacade; private final AliyunNLSFacade aliyunNLSFacade;
private final ExamAppFacade examAppFacade;
private static String EXAM_REDIS_SESSION_KEY = "EXAM_MASTER:%d:%s:%s"; private static String EXAM_REDIS_SESSION_KEY = "EXAM_MASTER:%d:%s:%s";
@GetMapping(value = "/list") @GetMapping(value = "/list")
...@@ -211,4 +214,18 @@ public class ExamController { ...@@ -211,4 +214,18 @@ public class ExamController {
return ApiResponse.ok(resultContent); return ApiResponse.ok(resultContent);
} }
@PostMapping(value = "/run4score")
public ApiResponse<String> run4Score(@RequestParam(value = "scene") String scene,
@RequestParam(value = "session_id") String sessionId,
@RequestParam(value = "user_id") String userId,
@RequestParam(value = "question") String question,
@RequestParam(value = "answer") String answer,
@RequestParam(value = "user_answer") String userAnswer) {
examAppFacade.run4Score(scene, sessionId, userId, question, answer, userAnswer);
return ApiResponse.ok("ok");
}
} }
package cn.aibreeze.exam.facade;
import com.alibaba.fastjson2.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.Map;
@Component
@Slf4j
public class ExamAppFacade {
@Value("${dify.api_base:https://ai-api.tech.breezeai.cn/v1}")
private String difyBase;
@Value("${dify.api_key:app-yaoa2lAMGJzB11ZGxd5P4iTQ}")
private String apiKey;
private final RestTemplate restTemplate = new RestTemplate();
@Async
public void run4Score(String scene, String sessionId, String userId, String question, String answer, String userAnswer) {
Map<String, String> inputs = new HashMap<>();
inputs.put("scene", scene);
inputs.put("question", question);
inputs.put("answer", answer);
JSONObject param = new JSONObject();
param.put("query", userAnswer);
param.put("inputs", inputs);
param.put("response_mode", "blocking");
param.put("conversation_id", sessionId);
param.put("user", userId);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setBearerAuth(apiKey);
HttpEntity<String> postEntity = new HttpEntity<>(param.toJSONString(), headers);
ResponseEntity<String> response = restTemplate.postForEntity(difyBase + "/chat-messages", postEntity, String.class);
log.info("执行结果:", JSONObject.parseObject(response.getBody()));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment