提示词管理代码架构
This commit is contained in:
10
src/main/java/com/rj/service/IAiPromptsService.java
Normal file
10
src/main/java/com/rj/service/IAiPromptsService.java
Normal file
@@ -0,0 +1,10 @@
|
||||
package com.rj.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.rj.entity.AiPrompts;
|
||||
|
||||
/**
|
||||
* 表 ai_prompts 服务;常规 CRUD 与分页见 {@link IService}。
|
||||
*/
|
||||
public interface IAiPromptsService extends IService<AiPrompts> {
|
||||
}
|
||||
@@ -77,6 +77,15 @@ public interface IAudioTextAnalysisLlmService {
|
||||
String ownerPhone,
|
||||
String customerName,
|
||||
String customerPhone);
|
||||
|
||||
AudioTextAnalysisFurniture generateSummaryAndSaveForDetail(
|
||||
AudioAnalysisSceneType sceneType,
|
||||
String recordingText,
|
||||
String parentId,
|
||||
String ownerName,
|
||||
String ownerPhone,
|
||||
String customerName,
|
||||
String customerPhone);
|
||||
}
|
||||
|
||||
|
||||
|
||||
14
src/main/java/com/rj/service/impl/AiPromptsServiceImpl.java
Normal file
14
src/main/java/com/rj/service/impl/AiPromptsServiceImpl.java
Normal file
@@ -0,0 +1,14 @@
|
||||
package com.rj.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.rj.entity.AiPrompts;
|
||||
import com.rj.mapper.AiPromptsMapper;
|
||||
import com.rj.service.IAiPromptsService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 表 ai_prompts 服务实现
|
||||
*/
|
||||
@Service
|
||||
public class AiPromptsServiceImpl extends ServiceImpl<AiPromptsMapper, AiPrompts> implements IAiPromptsService {
|
||||
}
|
||||
@@ -14,10 +14,7 @@ import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.rj.common.AudioAnalysisSceneType;
|
||||
import com.rj.common.LocalLlmSummaryResult;
|
||||
import com.rj.entity.AudioManagement;
|
||||
import com.rj.entity.AudioTextAnalysisFurniture;
|
||||
import com.rj.entity.AudioTextAnalysisSop;
|
||||
import com.rj.entity.TodoItem;
|
||||
import com.rj.entity.*;
|
||||
import com.rj.service.IAudioManagementService;
|
||||
import com.rj.service.IAudioTextAnalysisFurnitureService;
|
||||
import com.rj.service.IAudioTextAnalysisLlmService;
|
||||
@@ -37,10 +34,7 @@ import jakarta.annotation.PostConstruct;
|
||||
import java.io.InputStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
import java.util.Scanner;
|
||||
import java.util.UUID;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
@@ -532,6 +526,56 @@ public class AudioTextAnalysisLlmServiceImpl implements IAudioTextAnalysisLlmSer
|
||||
|
||||
return furniture;
|
||||
}
|
||||
@Autowired
|
||||
private com.rj.service.IAudioManagementSegmentsService audioManagementSegmentsService;
|
||||
|
||||
@Override
|
||||
public AudioTextAnalysisFurniture generateSummaryAndSaveForDetail(
|
||||
AudioAnalysisSceneType sceneType,
|
||||
String recordingText,
|
||||
String parentId,
|
||||
String ownerName,
|
||||
String ownerPhone,
|
||||
String customerName,
|
||||
String customerPhone) {
|
||||
|
||||
LambdaQueryWrapper<AudioManagementSegments> segQuery = new LambdaQueryWrapper<>();
|
||||
segQuery.eq(AudioManagementSegments::getParentId, parentId)
|
||||
.orderByAsc(AudioManagementSegments::getChunkIndex);
|
||||
List<AudioManagementSegments> segmentList = audioManagementSegmentsService.list(segQuery);
|
||||
int emptyCount = 0 ;
|
||||
StringBuilder mergedText = new StringBuilder();
|
||||
if (segmentList != null && !segmentList.isEmpty()) {
|
||||
for (AudioManagementSegments seg : segmentList) {
|
||||
String segText = seg.getRecordingText();
|
||||
if (segText != null && !segText.trim().isEmpty()) {
|
||||
if (mergedText.length() > 0) {
|
||||
mergedText.append("\n");
|
||||
}
|
||||
mergedText.append(segText.trim());
|
||||
}else {
|
||||
emptyCount ++;
|
||||
}
|
||||
}
|
||||
}
|
||||
log.info(" AudioManagementSegments 总数是: {} ,未转文本记录条数是: {}",segmentList.size(), emptyCount);
|
||||
|
||||
|
||||
LocalLlmSummaryResult llmResult = generateSummaryByLocalLLM(sceneType, mergedText.toString());
|
||||
String rawContent = llmResult.rawContent();
|
||||
if (rawContent == null || rawContent.trim().isEmpty()) {
|
||||
log.warn("大模型返回内容为空");
|
||||
return null;
|
||||
}
|
||||
AudioTextAnalysisFurniture furniture = new AudioTextAnalysisFurniture();
|
||||
AudioManagement audioManagement = new AudioManagement();
|
||||
audioManagement.setId(parentId);
|
||||
audioManagement.setSummary(rawContent);
|
||||
applyLocalLlmTokenCountsToAudioManagement(audioManagement, llmResult);
|
||||
audioManagementService.updateById(audioManagement);
|
||||
|
||||
return furniture;
|
||||
}
|
||||
|
||||
private void applyDashScopeUsageToAudioManagement(AudioManagement target, GenerationResult result) {
|
||||
if (result == null || result.getUsage() == null) {
|
||||
|
||||
Reference in New Issue
Block a user