提交 0c06ffd4 作者: 925993793@qq.com

大模型处理逻辑优化

上级 ef63c0a9
...@@ -33,9 +33,11 @@ public enum AnalysisColumnEnum { ...@@ -33,9 +33,11 @@ public enum AnalysisColumnEnum {
FOREIGN_SIMILAR_EVENT(11, "各国类似事件", "array", 1), FOREIGN_SIMILAR_EVENT(11, "各国类似事件", "array", 1),
DRIVING_FACTORS(12, "事件核心驱动因素", "string", 1), DRIVING_FACTORS(12, "事件核心驱动因素", "object", 1),
RELATED_INDICATOR(13, "事件相关指标", "string", 1) RELATED_INDICATOR(13, "事件相关指标", "array", 1),
IMPACT_ASSESSMENT_DETAIL(14, "影响评估详情", "string", 1),
; ;
//栏目编码 //栏目编码
......
...@@ -3,12 +3,10 @@ package com.zzsn.event.service; ...@@ -3,12 +3,10 @@ package com.zzsn.event.service;
import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.zzsn.event.entity.Event;
import com.zzsn.event.entity.EventLlmConfig; import com.zzsn.event.entity.EventLlmConfig;
import com.zzsn.event.entity.SubjectAnalysis; import com.zzsn.event.entity.SubjectAnalysis;
import com.zzsn.event.vo.CoOccurrenceVO; import com.zzsn.event.vo.*;
import com.zzsn.event.vo.CountVO;
import com.zzsn.event.vo.EventContextVO;
import com.zzsn.event.vo.PropagationPathVo;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
...@@ -85,15 +83,16 @@ public interface AnalysisService { ...@@ -85,15 +83,16 @@ public interface AnalysisService {
/** /**
* 利用大模型生成的结果 * 利用大模型生成的结果
* *
* @param eventName 事件名称 * @param event 事件信息
* @param startTime 开始时间 * @param startTime 开始时间
* @param endTime 结束时间 * @param endTime 结束时间
* @param llmConfig 模型配置信息 * @param llmConfig 模型配置信息
* @author lkg * @author lkg
* @date 2025/7/17 * @date 2025/7/17
*/ */
String llmResult(String eventName,String content, String startTime, String endTime, EventLlmConfig llmConfig); String llmResult(EventVO event, String content, String startTime, String endTime, EventLlmConfig llmConfig);
String llmResult(String eventId,String content, String startTime, String endTime, Integer columnCode);
String llmResult(String eventId, String content, String startTime, String endTime, Integer columnCode);
/** /**
* 重新生成 * 重新生成
......
...@@ -253,6 +253,8 @@ public class AnalysisServiceImpl implements AnalysisService { ...@@ -253,6 +253,8 @@ public class AnalysisServiceImpl implements AnalysisService {
@Override @Override
public PropagationPathVo propagationPath(String eventId) { public PropagationPathVo propagationPath(String eventId) {
PropagationPathVo top = null; PropagationPathVo top = null;
int count = esService.count(eventId, null, null);
if (count > 0) {
Event event = eventService.getById(eventId); Event event = eventService.getById(eventId);
String subjectName = event.getEventName(); String subjectName = event.getEventName();
//获取专题数据 //获取专题数据
...@@ -300,11 +302,12 @@ public class AnalysisServiceImpl implements AnalysisService { ...@@ -300,11 +302,12 @@ public class AnalysisServiceImpl implements AnalysisService {
} }
top.setChildren(secondList); top.setChildren(secondList);
} }
}
return top; return top;
} }
@Override @Override
public String llmResult(String eventName,String content, String startTime, String endTime, EventLlmConfig llmConfig) { public String llmResult(EventVO event,String content, String startTime, String endTime, EventLlmConfig llmConfig) {
if (llmConfig == null) { if (llmConfig == null) {
return null; return null;
} }
...@@ -329,14 +332,14 @@ public class AnalysisServiceImpl implements AnalysisService { ...@@ -329,14 +332,14 @@ public class AnalysisServiceImpl implements AnalysisService {
} }
} }
if (llmConfig.getColumnCode().equals(AnalysisColumnEnum.IMPACT_ASSESSMENT.getCode())) { if (llmConfig.getColumnCode().equals(AnalysisColumnEnum.IMPACT_ASSESSMENT.getCode())) {
String prompt = "根据提供的事件名称,以及其%s的概述,详细的描述下该事件的%s"; EventLlmConfig detailConfig = eventLlmConfigService.getConfig(event.getId(), AnalysisColumnEnum.IMPACT_ASSESSMENT_DETAIL.getCode());
List<JSONObject> impactList = JSON.parseArray(result, JSONObject.class); List<JSONObject> impactList = JSON.parseArray(result, JSONObject.class);
for (JSONObject impact : impactList) { for (JSONObject impact : impactList) {
String theme = impact.getString("theme");
JSONObject params = new JSONObject(); JSONObject params = new JSONObject();
params.put("eventName", eventName); params.put("eventName", event.getEventName());
params.put("eventSummary", event.getEventDescribe());
params.put("impactOutline", impact); params.put("impactOutline", impact);
String impactDetail = llmService.model(llmConfig.getLlmName(), String.format(prompt, theme, theme), params.toJSONString()); String impactDetail = llmService.model(llmConfig.getLlmName(), detailConfig.getLlmPrompt(), params.toJSONString());
impact.put("impactDetail", impactDetail); impact.put("impactDetail", impactDetail);
} }
result = JSON.toJSONString(impactList); result = JSON.toJSONString(impactList);
...@@ -346,9 +349,9 @@ public class AnalysisServiceImpl implements AnalysisService { ...@@ -346,9 +349,9 @@ public class AnalysisServiceImpl implements AnalysisService {
@Override @Override
public String llmResult(String eventId,String content, String startTime, String endTime, Integer columnCode) { public String llmResult(String eventId,String content, String startTime, String endTime, Integer columnCode) {
Event event = eventService.getById(eventId); EventVO event = eventService.queryInfo(eventId);
EventLlmConfig llmConfig = eventLlmConfigService.getConfig(eventId, columnCode); EventLlmConfig llmConfig = eventLlmConfigService.getConfig(eventId, columnCode);
return llmResult(event.getEventName(),content, startTime, endTime, llmConfig); return llmResult(event,content, startTime, endTime, llmConfig);
} }
@Override @Override
...@@ -359,7 +362,6 @@ public class AnalysisServiceImpl implements AnalysisService { ...@@ -359,7 +362,6 @@ public class AnalysisServiceImpl implements AnalysisService {
String versionId = saveVersion(eventId, today); String versionId = saveVersion(eventId, today);
EventVO event = eventService.queryInfo(eventId); EventVO event = eventService.queryInfo(eventId);
String eventName = event.getEventName(); String eventName = event.getEventName();
String content = "事件标题;" + eventName + "\n采集关键词:" + event.getKeywordsVO().getKeyword();
log.info("{}-事件分析重新生成逻辑开始。。。", eventName); log.info("{}-事件分析重新生成逻辑开始。。。", eventName);
String eventDescribe = event.getEventDescribe(); String eventDescribe = event.getEventDescribe();
//核心摘要 //核心摘要
...@@ -368,7 +370,8 @@ public class AnalysisServiceImpl implements AnalysisService { ...@@ -368,7 +370,8 @@ public class AnalysisServiceImpl implements AnalysisService {
//历史核心摘要是否为空 //历史核心摘要是否为空
boolean empty = StringUtils.isEmpty(eventDescribe); boolean empty = StringUtils.isEmpty(eventDescribe);
EventLlmConfig config = configList.stream().filter(e -> e.getColumnCode().equals(AnalysisColumnEnum.CORE_SUMMARY.getCode())).findFirst().orElse(new EventLlmConfig()); EventLlmConfig config = configList.stream().filter(e -> e.getColumnCode().equals(AnalysisColumnEnum.CORE_SUMMARY.getCode())).findFirst().orElse(new EventLlmConfig());
eventDescribe = this.llmResult(eventName,content, null, null, config); String content = "事件标题;" + eventName + "\n采集关键词:" + event.getKeywordsVO().getKeyword();
eventDescribe = this.llmResult(event,content, null, null, config);
if (empty) { if (empty) {
event.setEventDescribe(eventDescribe); event.setEventDescribe(eventDescribe);
LambdaUpdateWrapper<Event> update = Wrappers.lambdaUpdate(); LambdaUpdateWrapper<Event> update = Wrappers.lambdaUpdate();
...@@ -404,10 +407,14 @@ public class AnalysisServiceImpl implements AnalysisService { ...@@ -404,10 +407,14 @@ public class AnalysisServiceImpl implements AnalysisService {
} }
} }
//大模型相关逻辑生成的结果(影响评估,举措建议等) //大模型相关逻辑生成的结果(影响评估,举措建议等)
List<EventLlmConfig> collect = configList.stream().filter(e -> !e.getColumnCode().equals(AnalysisColumnEnum.CORE_SUMMARY.getCode())).collect(Collectors.toList()); List<EventLlmConfig> collect = configList.stream()
.filter(e -> !e.getColumnCode().equals(AnalysisColumnEnum.CORE_SUMMARY.getCode())
&& !e.getColumnCode().equals(AnalysisColumnEnum.IMPACT_ASSESSMENT_DETAIL.getCode()))
.collect(Collectors.toList());
String content = "事件标题;" + eventName + "\n事件摘要:" + event.getEventDescribe();
for (EventLlmConfig config : collect) { for (EventLlmConfig config : collect) {
try { try {
String llmResult = this.llmResult(eventName,content, null, null, config); String llmResult = this.llmResult(event,content, null, null, config);
EventAnalysisVersionRecord record = EventAnalysisVersionRecord.of(versionId, Objects.requireNonNull(AnalysisColumnEnum.getByCode(config.getColumnCode())), llmResult); EventAnalysisVersionRecord record = EventAnalysisVersionRecord.of(versionId, Objects.requireNonNull(AnalysisColumnEnum.getByCode(config.getColumnCode())), llmResult);
eventAnalysisVersionRecordService.save(record); eventAnalysisVersionRecordService.save(record);
log.info("{}-事件分析【{}】重新生成逻辑完成。", eventName, config.getColumnName()); log.info("{}-事件分析【{}】重新生成逻辑完成。", eventName, config.getColumnName());
......
...@@ -85,8 +85,6 @@ public class AnalysisTask { ...@@ -85,8 +85,6 @@ public class AnalysisTask {
for (Event event : eventList) { for (Event event : eventList) {
CompletableFuture.runAsync(() -> { CompletableFuture.runAsync(() -> {
String eventId = event.getId(); String eventId = event.getId();
int count = esService.count(eventId, null, null);
if (count > 0) {
String key = Constants.SUBJECT_ANALYSIS_PRE + Constants.PROPAGATION_KEY + eventId; String key = Constants.SUBJECT_ANALYSIS_PRE + Constants.PROPAGATION_KEY + eventId;
Date timeDisable = event.getEndTime(); Date timeDisable = event.getEndTime();
//已经结束的事件专题,永久缓存 //已经结束的事件专题,永久缓存
...@@ -106,7 +104,6 @@ public class AnalysisTask { ...@@ -106,7 +104,6 @@ public class AnalysisTask {
log.info("事件-{},传播路径数据缓存成功!", event.getEventName()); log.info("事件-{},传播路径数据缓存成功!", event.getEventName());
} }
} }
}
}); });
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论