优化,增加日志导出到excel

main
liu 10 months ago
parent b057d3d7cc
commit cf4eb1bb18

@ -94,6 +94,12 @@
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
</dependencies>
<build>

@ -71,9 +71,11 @@ public class AiUtil {
ChatReqDTO chatReqDTO = new ChatReqDTO();
chatReqDTO.setModel("glm-3-turbo");
chatReqDTO.setMessages(messageList);
HttpResponse response = HttpRequest.post("https://open.bigmodel.cn/api/paas/v4/chat/completions")
.body(JSONUtil.toJsonStr(chatReqDTO)).header("Authorization", TOKEN).execute();
String body = response.body();
String body;
try (HttpResponse response = HttpRequest.post("https://open.bigmodel.cn/api/paas/v4/chat/completions")
.body(JSONUtil.toJsonStr(chatReqDTO)).header("Authorization", TOKEN).execute()) {
body = response.body();
}
ChatResDTO bean = JSONUtil.toBean(body, ChatResDTO.class);
return bean.getChoices().stream().findFirst().orElseThrow(() -> new RuntimeException("获取政策文件失败")).getMessage().getContent();
}

@ -71,7 +71,7 @@ public class ItemExtractHandler {
public List<String> itemExtractByPossibleItemWithExample(String question, List<String> possible) {
String template = "请根据以下事项列表,从句子中识别并标注出对应的社保业务事项名称。若句子中不能直接对应到任何事项,就找可能性最高的事项。" +
"请确保只识别并标注一种可能性最高的社保业务事项。\n" +
"事项列表:{}" +
"事项列表:{}\n" +
"我现在有一些示例,可供你学习。\n" +
"输入:企业职工多少岁可以退休?输出:企业职工退休\n" +
"输入:深圳的职工退休手续怎么办?输出:深圳企业职工退休\n" +

@ -1,6 +1,13 @@
package com.supervision;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.file.FileReader;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.supervision.service.AskService;
import com.supervision.vo.SingleTalkReqVO;
import com.supervision.vo.SingleTalkResVO;
@ -11,6 +18,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.List;
@Slf4j
@ -19,142 +31,65 @@ import java.util.List;
public class AskTest {
@Autowired
private AskService askService;
@Test
public void test() {
private AskService askService;
for (String question : loadQuestion()) {
log.info("======start=======>>>question:{}", question);
@Test
public void test() throws IOException {
// 从excel中获取问题,开始循环调用
ExcelReader reader = ExcelUtil.getReader("/Users/flevance/Desktop/知识图谱/正常退休业务问题梳理_0422.xlsx", 1);
File file = FileUtil.file("/Users/flevance/Java/KBQA/test.log");
ExcelWriter writer = ExcelUtil.getWriter("/Users/flevance/Desktop/知识图谱/正常退休业务问题梳理_0422_output.xlsx", "Sheet2");
// 从第一行开始读取
List<List<Object>> readList = reader.read(1);
for (int i = 0; i < readList.size(); i++) {
List<Object> objects = readList.get(i);
SingleTalkReqVO singleTalkReqVO = new SingleTalkReqVO();
singleTalkReqVO.setUserTalk(question);
singleTalkReqVO.setUserTalk(String.valueOf(objects.get(1)));
SingleTalkResVO singleTalkResVO = null;
try {
SingleTalkResVO singleTalkResVO = askService.singleTalk(singleTalkReqVO);
log.info("====end=====>>>answer:{}<<<======end=======", singleTalkResVO.getAnswerText());
singleTalkResVO = askService.singleTalk(singleTalkReqVO);
} catch (Exception e) {
log.info("====end=====>>>answer:{}<<<======end=======", "error");
log.info("出现异常,结束");
}
FileReader fileReader = new FileReader(file);
List<String> strings = fileReader.readLines();
int y = i + 1;
strings.stream().filter(e -> StrUtil.contains(e, "identifyIntent开始识别意图:")).findAny().ifPresent(e -> {
String s = StrUtil.subAfter(e, "identifyIntent开始识别意图:", true);
writer.writeCellValue(2, y, s);
});
strings.stream().filter(e -> StrUtil.contains(e, "identifyIntent意图识别结果为:")).findAny().ifPresent(e -> {
String s = StrUtil.subAfter(e, "identifyIntent意图识别结果为:", true);
writer.writeCellValue(3, y, s);
});
strings.stream().filter(e -> StrUtil.contains(e, "itemExtractByPossibleItemWithExample查询语句为:")).findAny().ifPresent(e -> {
String s = StrUtil.subAfter(e, "itemExtractByPossibleItemWithExample查询语句为:", true);
writer.writeCellValue(4, y, s);
});
strings.stream().filter(e -> StrUtil.contains(e, "itemExtractByPossibleItemWithExample结果为:")).findAny().ifPresent(e -> {
String s = StrUtil.subAfter(e, "itemExtractByPossibleItemWithExample结果为:", true);
writer.writeCellValue(5, y, s);
});
strings.stream().filter(e -> StrUtil.contains(e, "answerQuestion的prompt是:")).findAny().ifPresent(e -> {
String s = StrUtil.subAfter(e, "answerQuestion的prompt是:", true);
writer.writeCellValue(6, y, s);
});
SingleTalkResVO finalSingleTalkResVO = singleTalkResVO;
strings.stream().filter(e -> StrUtil.contains(e, "answerQuestion的答案是:")).findAny().ifPresent(e -> {
String s = StrUtil.subAfter(e, "answerQuestion的答案是:", true);
if (ObjectUtil.isNotNull(finalSingleTalkResVO)) {
writer.writeCellValue(7, y, finalSingleTalkResVO.getAnswerText());
}
});
writer.flush();
BufferedWriter writer1 = FileUtil.getWriter(file, Charset.defaultCharset(), false);
writer1.write("");
writer1.flush();
writer1.close();
}
}
@Test
public void test1() {
//
SingleTalkReqVO singleTalkReqVO = new SingleTalkReqVO();
singleTalkReqVO.setUserTalk("退休手续办理完成后,如何查询养老保险待遇的发放情况?");
SingleTalkResVO singleTalkResVO = askService.singleTalk(singleTalkReqVO);
System.out.println("answer: "+singleTalkResVO.getAnswerText());
}
public List<String> loadQuestion(){
String question = "领取养老金的具体条件有哪些?\n" +
"新农保和城居保制度实施时,已年满 60 周岁的人是否可以直接领取基础养老金?\n" +
"参加原新农保或城居保的参保人,需要满足什么条件才能按月领取养老金?\n" +
"缴费累计达到多少年可以按月领取养老金?\n" +
"如果累计缴费年限没有达到规定缴费年限,应该怎么办?\n" +
"继续逐年缴费是否能享受政府缴费补贴?\n" +
"一次性补缴养老保险费是否享受政府缴费补贴?\n" +
"不继续逐年缴费或补缴至规定缴费年限,会有什么影响?\n" +
"60 周岁但累计缴费年限未达到规定的,能否申请按月领取个人账户养老金?\n" +
"个人账户养老金发放有何规定?\n" +
"办理按月领取养老金需要提供哪些材料?\n" +
"如何申请按月领取养老金?\n" +
"办理养老金领取手续的流程是怎样的?\n" +
"养老金的领取方式有哪些?\n" +
"领取养老金的资格如何审核?\n" +
"参保人的年龄和缴费年限以什么为准?\n" +
"不同地区的养老金办理条件是否相同?\n" +
"是否可以代办养老金领取手续?\n" +
"办理过程中如有疑问,如何咨询?\n" +
"养老金的发放时间是如何规定的?\n" +
"非干部身份的参保人办理退休需要提供离职证明吗?\n" +
"办理女干部在工人岗位退休的其他条件是什么?\n" +
"达龄月台账未出时,申请办理退休的具体流程是怎样的?\n" +
"单位延缴或个人延缴的情况下,办理退休有哪些注意事项?\n" +
"机要转档的具体流程和要求是什么?\n" +
"退休员工签领《养老保险待遇决定书》时还需要提供其他材料吗?\n" +
"办理退休手续的时间有限制吗?\n" +
"如果参保人档案未通过机要转至我局,该如何办理退休手续?\n" +
"参保人档案的审核标准是什么?\n" +
"退休手续办理完成后,如何查询养老保险待遇的发放情况?\n" +
"办理深圳市城乡居民养老保险需要哪些具体材料?\n" +
"深圳市企业职工养老保险养老金申请表如何获取?\n" +
"非深圳市户籍可以办理城乡居民养老保险吗?\n" +
"办理退休手续时,必须本人前往社保经办机构吗?\n" +
"代办退休手续需要提供哪些材料?\n" +
"退休年龄是如何确定的?\n" +
"深圳市养老保险业务办理委托书的格式是怎样的?\n" +
"办理养老待遇业务的具体流程是什么?\n" +
"线上办理养老待遇业务的具体操作步骤是什么?\n" +
"如何查询办理退休手续的进度?\n" +
"退休员工签领《养老保险待遇决定书》后多久能领回员工档案材料?\n" +
"办理退休手续的时间有没有限制?\n" +
"档案通过机要转至我局后,多久会通知当事人前来办理退休手续?\n" +
"办理退休手续需要满足哪些条件?\n" +
"女干部在工人岗位退休的具体条件是什么?\n" +
"身份证丢失了怎么办理退休手续?\n" +
"户口簿的信息需要与实际情况完全一致吗?\n" +
"港澳通行证或香港身份证的作用是什么?\n" +
"人事档案包括哪些内容?\n" +
"没有人事档案可以办理退休手续吗?\n" +
"授权委托书需要公证吗?\n" +
"办理退休手续的依据是什么?\n" +
"不同岗位的退休年龄有何区别?\n" +
"退休手续可以提前办理吗?\n" +
"办理退休手续后,养老金如何发放?\n" +
"养老保险待遇决定书有什么作用?\n" +
"退休人员如何领取养老金?\n" +
"养老金的计算方式是怎样的?\n" +
"办理退休手续时,需要缴纳费用吗?\n" +
"退休后养老金会随着时间调整吗?\n" +
"办理退休手续可以委托多人代办吗?\n" +
"退休人员去世后,养老金如何处理?\n" +
"办理退休手续后,如果发现信息有误如何更正?\n" +
"不同地区的办理流程和材料是否相同?\n" +
"线上办理途径是否只能通过“深圳社保”公众号?\n" +
"怎么办理退休?\n" +
"办理材料是否需要原件和复印件?\n" +
"材料提交后多久能办理完成?\n" +
"如果材料不齐全,可以线上补充提交吗?\n" +
"办理过程中如果有疑问,可以通过哪些方式咨询?\n" +
"退休人员的养老金是否会受到其他因素的影响?\n" +
"办理退休手续后,还需要注意哪些事项?\n" +
"缴费年限不足 15 年,是否可以一次性补缴?\n" +
"办理退休手续时,是否需要提供健康证明?\n" +
"退休人员是否需要进行资格认证?\n" +
"办理退休手续后,是否可以更改领取养老金的银行账户?\n" +
"退休人员的养老金是否会按时足额发放?\n" +
"如果对养老金金额有疑问,如何查询和核实?\n" +
"办理退休手续的过程中,如何保障个人信息的安全?\n" +
"我社保交够15年是不是就可以办理退休了\n" +
"社保交够15年是不是就不用交了\n" +
"企业女职工退休年龄如何确定怎么确定是50周岁退休还是55周岁退休\n" +
"领取失业金对退休金金额是否有影响\n" +
"有高级职称,退休时退休金高吗\n" +
"到退休年龄了缴费不够15年怎么办能一次性补齐吗\n" +
"退休金的计算公式是什么能领多少退休金\n" +
"职工的养老金何时领?\n" +
"单位如何为职工办理养老金申领手续?\n" +
"今后的养老金发放信息哪里查?\n" +
"社保缴费中断过,会影响养老金申领吗?\n" +
"养老保险缴费年限不够怎么办?\n" +
"现在退休证还有么,怎么办理?\n" +
"基本养老保险有哪些?\n" +
"个人养老金如何开账户?\n" +
"退休后去哪里领取个人养老金\n" +
"基本养老金的构成包括哪些方面\n" +
"职工社保和灵活就业都买了,多少岁退休\n" +
"之前单位缴过社保,现在自己交社保,退休年龄怎么算\n" +
"深户女的有营业执照的多大年龄退休\n" +
"港资公司女员工退休年龄\n";
return CollUtil.newArrayList(question.split("\n"));
}
}

Loading…
Cancel
Save