From fa60f81ab46712af2020d818fe7c64878000934b Mon Sep 17 00:00:00 2001 From: qianbao Date: Tue, 7 Apr 2026 12:32:29 +0800 Subject: [PATCH] 添加向量库 --- src/main/java/com/xly/service/XlyErpService.java | 21 +++++++++++---------- src/main/java/com/xly/tts/bean/TTSRequestDTO.java | 5 +++-- src/main/java/com/xly/tts/service/PythonTtsProxyService.java | 6 +++--- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/xly/service/XlyErpService.java b/src/main/java/com/xly/service/XlyErpService.java index d64841d..10294eb 100644 --- a/src/main/java/com/xly/service/XlyErpService.java +++ b/src/main/java/com/xly/service/XlyErpService.java @@ -125,7 +125,7 @@ public class XlyErpService { // 3. 未选场景:先展示场景选择界面,处理用户序号选择 if (!session.isSceneSelected() && ValiDataUtil.me().isPureNumber(input)){ // 3.1 尝试处理场景选择(输入序号则匹配,否则展示选择提示) - AiResponseDTO aiResponseDTO = handleSceneSelect(userId, input, session,1); + AiResponseDTO aiResponseDTO = handleSceneSelect(userId, input, session,1,0); return Flux.just(aiResponseDTO); } // 4. 构建Agent,执行业务交互,如果返回为null,说明大模型没有判段出场景,必判断出后才能继续 @@ -241,10 +241,11 @@ public class XlyErpService { String sSubsidiaryId, String sUserType, String authorization, - Integer iPage) { + Integer iPage, + Integer pageCount) { // 1. 初始化用户场景会话(权限内场景) UserSceneSession session = userSceneSessionService.getUserSceneSession(userId,sUserName,sBrandsId,sSubsidiaryId,sUserType,authorization); - return getChange(session, iPage); + return getChange(session, iPage, pageCount); } /*** @@ -290,7 +291,7 @@ public class XlyErpService { // 3. 未选场景:先展示场景选择界面,处理用户序号选择 if (!session.isSceneSelected() && ValiDataUtil.me().isPureNumber(input)){ // 3.1 尝试处理场景选择(输入序号则匹配,否则展示选择提示) - return handleSceneSelect(userId, input, session,1); + return handleSceneSelect(userId, input, session,1,0); } // 4. 构建Agent,执行业务交互,如果返回为null,说明大模型没有判段出场景,必判断出后才能继续 ErpAiAgent aiAgent = createErpAiAgent(userId, input, session); @@ -962,7 +963,7 @@ public class XlyErpService { /** * 处理用户场景选择:输入序号→匹配场景→更新会话状态 */ - private AiResponseDTO handleSceneSelect(String userId, String userInput, UserSceneSession session,Integer page) { + private AiResponseDTO handleSceneSelect(String userId, String userInput, UserSceneSession session,Integer page,Integer pageCount) { // 1. 尝试根据序号匹配场景 boolean selectSuccess = session.selectSceneByInput(userInput); String sceneName = StrUtil.EMPTY; @@ -974,7 +975,7 @@ public class XlyErpService { UserSceneSessionService.ERP_AGENT_CACHE.remove(userId); //清除记忆缓存 operableChatMemoryProvider.clearSpecifiedMemory(userId); - return getChange( session, page); + return getChange( session, page,pageCount); } else { // 3. 选择失败:重新展示场景选择提示 return AiResponseDTO.builder().sSceneName(sceneName).sMethodName(methodName).aiText(session.buildSceneSelectHint()).build(); @@ -988,13 +989,13 @@ public class XlyErpService { * @return com.xly.entity.AiResponseDTO * @Description 用户输入数字换一换 **/ - private AiResponseDTO getChange(UserSceneSession session,Integer page){ + private AiResponseDTO getChange(UserSceneSession session,Integer page,Integer pageCount){ StringBuffer aiText = new StringBuffer().append("
") .append("
") .append("智能体选择成功! 现在可以问她相关问题(如" + String.join("、", session.getCurrentScene().getSSceneContext()) + ")") .append("
"); //插入用户常用问题 - aiText.append(getSelectAgent(session,page)); + aiText.append(getSelectAgent(session,page,pageCount)); String sceneName = ObjectUtil.isNotEmpty(session.getCurrentScene())?session.getCurrentScene().getSSceneName():StrUtil.EMPTY; String methodName = ObjectUtil.isNotEmpty(session.getCurrentTool())?session.getCurrentTool().getSControlName():StrUtil.EMPTY; return AiResponseDTO.builder().sSceneName(sceneName).sMethodName(methodName).aiText(aiText.toString()).sSceneName(session.getCurrentScene().getSSceneName()).build(); @@ -1009,14 +1010,14 @@ public class XlyErpService { * @return java.lang.String * @Description 选择智能体成功后获取高频问题列表 **/ - private String getSelectAgent(UserSceneSession session,Integer page){ + private String getSelectAgent(UserSceneSession session,Integer page,Integer pageCount){ List toolMetaAll = session.getAuthTool(); String sSceneId = session.getCurrentScene().getSId(); toolMetaAll = toolMetaAll.stream().filter(to-> to.getSSceneId().equals(session.getCurrentScene().getSId())).collect(Collectors.toUnmodifiableList()); StringBuffer sb = new StringBuffer(); //获取用户最近五次问题 List> data = getAiUserAgentQuestion(session.getUserName(),sSceneId, page,3); - Integer iPageCount = 0; + Integer iPageCount = pageCount; if(page==1){ iPageCount =getAiUserAgentQuestionCount(session.getUserName(),sSceneId); iPageCount = (int) Math.ceil(iPageCount/3); diff --git a/src/main/java/com/xly/tts/bean/TTSRequestDTO.java b/src/main/java/com/xly/tts/bean/TTSRequestDTO.java index 689bca5..9523a31 100644 --- a/src/main/java/com/xly/tts/bean/TTSRequestDTO.java +++ b/src/main/java/com/xly/tts/bean/TTSRequestDTO.java @@ -15,8 +15,9 @@ public class TTSRequestDTO { private String rate = "+10%"; private String volume = "+0%"; private Boolean voiceless; - private Integer iPage; - private String sSceneId; + private Integer page; + private Integer pageCount; + private String sceneId; } \ No newline at end of file diff --git a/src/main/java/com/xly/tts/service/PythonTtsProxyService.java b/src/main/java/com/xly/tts/service/PythonTtsProxyService.java index 156ec0d..e3f1a0b 100644 --- a/src/main/java/com/xly/tts/service/PythonTtsProxyService.java +++ b/src/main/java/com/xly/tts/service/PythonTtsProxyService.java @@ -75,15 +75,15 @@ public class PythonTtsProxyService { * @Description 换一换 **/ public ResponseEntity change(TTSRequestDTO request) { - String userInput = request.getText(); String sUserId = request.getUserid(); String sUserName = request.getUsername(); String sBrandsId = request.getBrandsid(); String sSubsidiaryId = request.getSubsidiaryid(); String sUserType = request.getUsertype(); String authorization = request.getAuthorization(); - Integer iPage = request.getIPage(); - AiResponseDTO voiceText = xlyErpService.change(sUserId, sUserName , sBrandsId , sSubsidiaryId, sUserType, authorization,iPage); + Integer iPage = request.getPage(); + Integer pageCount = request.getPageCount(); + AiResponseDTO voiceText = xlyErpService.change(sUserId, sUserName , sBrandsId , sSubsidiaryId, sUserType, authorization,iPage, pageCount); return synthesizeStreamAi(request, voiceText); } -- libgit2 0.22.2