|
|
|
package com.supervision.handler.gpt;
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
import com.supervision.ai.AiUtil;
|
|
|
|
import com.supervision.ai.dto.MessageDTO;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
@Slf4j
|
|
|
|
@Component
|
|
|
|
public class AnswerQuestionHandler {
|
|
|
|
|
|
|
|
public String answerQuestion(String question, List<String> detailList) {
|
|
|
|
List<MessageDTO> messageList = new ArrayList<>();
|
|
|
|
messageList.add(new MessageDTO("system", "现在你是一个政务事项领域的问答大模型.\n" +
|
|
|
|
"我现在给一些政务文件的内容,再给你一个问题,请根据给你的文件内容,针对性的对问题进行解答.\n" +
|
|
|
|
"请严格按照文件内容进行回答,不要有文件内容之外的理解.\n" +
|
|
|
|
"除了解答的内容,什么其他的都不要说.\n" +
|
|
|
|
"如果你从文件内容中,没有提取到回答,你就回复:我暂时还不会这个问题哦!"));
|
|
|
|
messageList.add(new MessageDTO("assistant", "好的"));
|
|
|
|
messageList.add(new MessageDTO("user", StrUtil.format("政务文件内容:[{}]", CollUtil.join(detailList, ";"))));
|
|
|
|
messageList.add(new MessageDTO("assistant", "继续"));
|
|
|
|
messageList.add(new MessageDTO("user", StrUtil.format("问题:{}", question)));
|
|
|
|
messageList.add(new MessageDTO("assistant", "继续"));
|
|
|
|
messageList.add(new MessageDTO("user", StrUtil.format("现在你可以回答了")));
|
|
|
|
log.info("answerQuestion的prompt是:{}", JSONUtil.toJsonStr(messageList));
|
|
|
|
String answer = AiUtil.chatByMessage(messageList);
|
|
|
|
log.info("answerQuestion的答案是:{}", answer);
|
|
|
|
return answer;
|
|
|
|
}
|
|
|
|
}
|