提交 c01035b0 作者: 925993793@qq.com

定制专题汇总摘要逻辑修改

上级 88b6c9b3
......@@ -2,6 +2,7 @@ package com.zzsn.event.external.controller;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
......@@ -282,7 +283,7 @@ public class ExternalController {
subjectInfoVO.setInfoSourceList(externalSubjectInfoSourceMapService.list(queryWrapper));
try {
HttpUtil.doPost(keywordCrawlerUrl, JSONObject.from(subjectInfoVO), 30000);
log.info("【{}】-通知元搜索采集数据",subjectDetailVO.getSubjectName());
log.info("【{}】-通知元搜索采集数据", subjectDetailVO.getSubjectName());
} catch (IOException e) {
e.printStackTrace();
}
......@@ -299,6 +300,12 @@ public class ExternalController {
*/
@GetMapping("/gatherSummary")
public Result<?> gatherSummary(@RequestParam String subjectId, @RequestParam String language) {
String key = "GATHER_SUMMARY::" + subjectId;
if (redisUtil.hasKey(key)) {
Object data = redisUtil.get(key);
if (data instanceof Map) {
Map<String, Object> map = (Map<String, Object>) data;
List<String> ids = JSON.parseArray(map.get("idList").toString(), String.class);
InfoDataSearchCondition searchCondition = new InfoDataSearchCondition();
searchCondition.setSubjectId(subjectId);
searchCondition.setCategory(2);
......@@ -307,44 +314,18 @@ public class ExternalController {
IPage<DisplayInfo> pageList = informationService.subjectPageList(searchCondition);
List<DisplayInfo> records = pageList.getRecords();
if (CollectionUtils.isNotEmpty(records)) {
JSONObject params = new JSONObject();
List<JSONObject> summaryList = new ArrayList<>();
records.forEach(record -> {
JSONObject summary = new JSONObject();
summary.put("summary", record.getSummary());
summaryList.add(summary);
});
Subject subject = subjectService.getById(subjectId);
params.put("subject", subject.getSubjectName());
params.put("summaryList", summaryList);
String languageCN = "中文简体";
if ("zh-CN".equals(language)) {
languageCN = "中文简体";
} else if ("en".equals(language)) {
languageCN = "英文";
} else if ("ja".equals(language)) {
languageCN = "日文";
List<String> idList = new ArrayList<>();
records.forEach(record -> idList.add(record.getId()));
if (!CollectionUtils.isEqualCollection(idList, ids)) {
Map<String, Object> resultMap = generateSummary(subjectId, records, language);
return Result.OK(resultMap);
}
String prompt = "将用户上传的多篇资讯摘要文本和主题整合为一段连贯、精炼的综合摘要(约500字)。要求:\n" +
"1)将输入的json解析,subject是主题,summary是摘要,提炼核心主题与高度共识的关键发现;\n" +
"2)客观指出存在的分歧点及其原因;\n" +
"3)简述观点或技术的演进趋势;\n" +
"4)语言需严谨中性,直接输出整合后的段落,无需分节分段或小标题。\n" +
"\n" +
"约束:\n" +
"1.输出禁止分段\n" +
"2.必须输出" + languageCN + "的摘要\n" +
"\n" +
"使用示例:\n" +
"输入:\n" +
"{\"subject\":\"机器学习可解释性\",\"summaryList\":[{\"summary\":\"提出梯度解释法...验证准确率提升15%\"},{\"summary\":\"对比LIME与SHAP...指出计算效率缺陷\"},{\"summary\":\"医疗领域应用研究...模型透明度不足影响临床采纳\"}]}\n" +
"输出(示例段落):\n" +
"多篇关于机器学习可解释性(XAI)的研究聚焦于提升复杂模型透明度。核心共识在于有效解释技术(如梯度解释法、LIME、SHAP)能增强用户信任并提升决策准确率。然而,在方法实用性上存在分歧,部分研究指出主流技术存在显著计算效率缺陷,尤其在资源受限场景;同时,医疗领域应用突显透明度不足是阻碍临床采纳的关键瓶颈。研究趋势显示从开发基础解释方法(如早期梯度法)转向评估实际场景效能及效率优化。当前主要知识缺口在于缺乏统一标准评估解释的可靠性与临床相关性,亟需开发兼顾高效性和领域适配性的XAI解决方案。";
String model = llmService.model("qwen", "qwen-max-latest", prompt, JSONObject.toJSONString(params));
redisUtil.set("GATHER_SUMMARY::" + subjectId, model);
return Result.OK(model);
}
}
return Result.OK(data);
} else {
return Result.FAIL("没有资讯信息");
List<DisplayInfo> dataList = getDataList(subjectId);
return Result.OK(generateSummary(subjectId,dataList, language));
}
}
......@@ -386,4 +367,63 @@ public class ExternalController {
}
return Result.OK(data);
}
private List<DisplayInfo> getDataList(String subjectId){
InfoDataSearchCondition searchCondition = new InfoDataSearchCondition();
searchCondition.setSubjectId(subjectId);
searchCondition.setCategory(2);
searchCondition.setColumn("score");
searchCondition.setPageSize(20);
IPage<DisplayInfo> pageList = informationService.subjectPageList(searchCondition);
return pageList.getRecords();
}
private Map<String, Object> generateSummary(String subjectId,List<DisplayInfo> records, String language) {
Map<String, Object> resultMap = null;
if (CollectionUtils.isNotEmpty(records)) {
JSONObject params = new JSONObject();
List<String> idList = new ArrayList<>();
List<JSONObject> summaryList = new ArrayList<>();
records.forEach(record -> {
idList.add(record.getId());
JSONObject summary = new JSONObject();
summary.put("summary", record.getSummary());
summaryList.add(summary);
});
Subject subject = subjectService.getById(subjectId);
params.put("subject", subject.getSubjectName());
params.put("summaryList", summaryList);
String languageCN = "中文简体";
if ("zh-CN".equals(language)) {
languageCN = "中文简体";
} else if ("en".equals(language)) {
languageCN = "英文";
} else if ("ja".equals(language)) {
languageCN = "日文";
}
String prompt = "将用户上传的多篇资讯摘要文本和主题整合为一段连贯、精炼的综合摘要(约500字)。要求:\n" +
"1)将输入的json解析,subject是主题,summary是摘要,提炼核心主题与高度共识的关键发现;\n" +
"2)客观指出存在的分歧点及其原因;\n" +
"3)简述观点或技术的演进趋势;\n" +
"4)语言需严谨中性,直接输出整合后的段落,无需分节分段或小标题。\n" +
"\n" +
"约束:\n" +
"1.输出禁止分段\n" +
"2.必须输出" + languageCN + "的摘要\n" +
"\n" +
"使用示例:\n" +
"输入:\n" +
"{\"subject\":\"机器学习可解释性\",\"summaryList\":[{\"summary\":\"提出梯度解释法...验证准确率提升15%\"},{\"summary\":\"对比LIME与SHAP...指出计算效率缺陷\"},{\"summary\":\"医疗领域应用研究...模型透明度不足影响临床采纳\"}]}\n" +
"输出(示例段落):\n" +
"多篇关于机器学习可解释性(XAI)的研究聚焦于提升复杂模型透明度。核心共识在于有效解释技术(如梯度解释法、LIME、SHAP)能增强用户信任并提升决策准确率。然而,在方法实用性上存在分歧,部分研究指出主流技术存在显著计算效率缺陷,尤其在资源受限场景;同时,医疗领域应用突显透明度不足是阻碍临床采纳的关键瓶颈。研究趋势显示从开发基础解释方法(如早期梯度法)转向评估实际场景效能及效率优化。当前主要知识缺口在于缺乏统一标准评估解释的可靠性与临床相关性,亟需开发兼顾高效性和领域适配性的XAI解决方案。";
String model = llmService.model("qwen", "qwen-max-latest", prompt, JSONObject.toJSONString(params));
resultMap = new HashMap<>();
resultMap.put("idList", idList);
resultMap.put("language", language);
resultMap.put("model", model);
redisUtil.set("GATHER_SUMMARY::" + subjectId, JSONObject.toJSONString(resultMap));
}
return resultMap;
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论