|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
package com.supervision.controller;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import cn.hutool.crypto.digest.MD5;
|
|
|
|
|
import cn.hutool.http.HttpUtil;
|
|
|
|
|
import cn.hutool.json.JSONObject;
|
|
|
|
@ -7,12 +8,19 @@ import cn.hutool.json.JSONUtil;
|
|
|
|
|
import com.supervision.exception.BusinessException;
|
|
|
|
|
import com.supervision.model.AskTemplateQuestionLibrary;
|
|
|
|
|
import com.supervision.model.ConfigPhysicalTool;
|
|
|
|
|
import com.supervision.model.DiagnosisAiRecord;
|
|
|
|
|
import com.supervision.service.AskTemplateQuestionLibraryService;
|
|
|
|
|
import com.supervision.service.ConfigPhysicalToolService;
|
|
|
|
|
import com.supervision.service.DiagnosisAiRecordService;
|
|
|
|
|
import com.supervision.util.MinioUtil;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.ai.chat.ChatResponse;
|
|
|
|
|
import org.springframework.ai.chat.messages.Message;
|
|
|
|
|
import org.springframework.ai.chat.messages.UserMessage;
|
|
|
|
|
import org.springframework.ai.chat.prompt.Prompt;
|
|
|
|
|
import org.springframework.ai.document.Document;
|
|
|
|
|
import org.springframework.ai.ollama.OllamaChatClient;
|
|
|
|
|
import org.springframework.ai.vectorstore.RedisVectorStore;
|
|
|
|
|
import org.springframework.ai.vectorstore.SearchRequest;
|
|
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
|
|
@ -37,6 +45,31 @@ public class TestController {
|
|
|
|
|
|
|
|
|
|
private final AskTemplateQuestionLibraryService askTemplateQuestionLibraryService;
|
|
|
|
|
|
|
|
|
|
private final DiagnosisAiRecordService diagnosisAiRecordService;
|
|
|
|
|
|
|
|
|
|
private final OllamaChatClient chatClient;
|
|
|
|
|
|
|
|
|
|
@GetMapping("testMatchQuestion")
|
|
|
|
|
public String test(String question) {
|
|
|
|
|
String template = """
|
|
|
|
|
现在给定以下问题列表:
|
|
|
|
|
---
|
|
|
|
|
{questionList}
|
|
|
|
|
---
|
|
|
|
|
给定问题:{question}
|
|
|
|
|
---
|
|
|
|
|
请先对给定问题列表进行意图分析,然后从中判断给定问题的意图是否出现
|
|
|
|
|
---
|
|
|
|
|
以json格式进行返回
|
|
|
|
|
{"match":true/false,"matchQuestion":"匹配到的项原文"}
|
|
|
|
|
""";
|
|
|
|
|
Set<String> questionList = diagnosisAiRecordService.lambdaQuery().list().stream().map(DiagnosisAiRecord::getQuestion).collect(Collectors.toSet());
|
|
|
|
|
List<Message> messages = new ArrayList<>();
|
|
|
|
|
messages.add(new UserMessage(StrUtil.format(template, Map.of("questionList", JSONUtil.toJsonStr(questionList), "question", question))));
|
|
|
|
|
ChatResponse call = chatClient.call(new Prompt(messages));
|
|
|
|
|
return call.getResult().getOutput().getContent();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@GetMapping("testRedisVectorStore")
|
|
|
|
|
public void testRedisVectorStore() {
|
|
|
|
|
List<AskTemplateQuestionLibrary> list = askTemplateQuestionLibraryService.list();
|
|
|
|
|