Commit fa60f81ab46712af2020d818fe7c64878000934b

Authored by qianbao
1 parent ffda9953

添加向量库

src/main/java/com/xly/service/XlyErpService.java
@@ -125,7 +125,7 @@ public class XlyErpService { @@ -125,7 +125,7 @@ public class XlyErpService {
125 // 3. 未选场景:先展示场景选择界面,处理用户序号选择 125 // 3. 未选场景:先展示场景选择界面,处理用户序号选择
126 if (!session.isSceneSelected() && ValiDataUtil.me().isPureNumber(input)){ 126 if (!session.isSceneSelected() && ValiDataUtil.me().isPureNumber(input)){
127 // 3.1 尝试处理场景选择(输入序号则匹配,否则展示选择提示) 127 // 3.1 尝试处理场景选择(输入序号则匹配,否则展示选择提示)
128 - AiResponseDTO aiResponseDTO = handleSceneSelect(userId, input, session,1); 128 + AiResponseDTO aiResponseDTO = handleSceneSelect(userId, input, session,1,0);
129 return Flux.just(aiResponseDTO); 129 return Flux.just(aiResponseDTO);
130 } 130 }
131 // 4. 构建Agent,执行业务交互,如果返回为null,说明大模型没有判段出场景,必判断出后才能继续 131 // 4. 构建Agent,执行业务交互,如果返回为null,说明大模型没有判段出场景,必判断出后才能继续
@@ -241,10 +241,11 @@ public class XlyErpService { @@ -241,10 +241,11 @@ public class XlyErpService {
241 String sSubsidiaryId, 241 String sSubsidiaryId,
242 String sUserType, 242 String sUserType,
243 String authorization, 243 String authorization,
244 - Integer iPage) { 244 + Integer iPage,
  245 + Integer pageCount) {
245 // 1. 初始化用户场景会话(权限内场景) 246 // 1. 初始化用户场景会话(权限内场景)
246 UserSceneSession session = userSceneSessionService.getUserSceneSession(userId,sUserName,sBrandsId,sSubsidiaryId,sUserType,authorization); 247 UserSceneSession session = userSceneSessionService.getUserSceneSession(userId,sUserName,sBrandsId,sSubsidiaryId,sUserType,authorization);
247 - return getChange(session, iPage); 248 + return getChange(session, iPage, pageCount);
248 } 249 }
249 250
250 /*** 251 /***
@@ -290,7 +291,7 @@ public class XlyErpService { @@ -290,7 +291,7 @@ public class XlyErpService {
290 // 3. 未选场景:先展示场景选择界面,处理用户序号选择 291 // 3. 未选场景:先展示场景选择界面,处理用户序号选择
291 if (!session.isSceneSelected() && ValiDataUtil.me().isPureNumber(input)){ 292 if (!session.isSceneSelected() && ValiDataUtil.me().isPureNumber(input)){
292 // 3.1 尝试处理场景选择(输入序号则匹配,否则展示选择提示) 293 // 3.1 尝试处理场景选择(输入序号则匹配,否则展示选择提示)
293 - return handleSceneSelect(userId, input, session,1); 294 + return handleSceneSelect(userId, input, session,1,0);
294 } 295 }
295 // 4. 构建Agent,执行业务交互,如果返回为null,说明大模型没有判段出场景,必判断出后才能继续 296 // 4. 构建Agent,执行业务交互,如果返回为null,说明大模型没有判段出场景,必判断出后才能继续
296 ErpAiAgent aiAgent = createErpAiAgent(userId, input, session); 297 ErpAiAgent aiAgent = createErpAiAgent(userId, input, session);
@@ -962,7 +963,7 @@ public class XlyErpService { @@ -962,7 +963,7 @@ public class XlyErpService {
962 /** 963 /**
963 * 处理用户场景选择:输入序号→匹配场景→更新会话状态 964 * 处理用户场景选择:输入序号→匹配场景→更新会话状态
964 */ 965 */
965 - private AiResponseDTO handleSceneSelect(String userId, String userInput, UserSceneSession session,Integer page) { 966 + private AiResponseDTO handleSceneSelect(String userId, String userInput, UserSceneSession session,Integer page,Integer pageCount) {
966 // 1. 尝试根据序号匹配场景 967 // 1. 尝试根据序号匹配场景
967 boolean selectSuccess = session.selectSceneByInput(userInput); 968 boolean selectSuccess = session.selectSceneByInput(userInput);
968 String sceneName = StrUtil.EMPTY; 969 String sceneName = StrUtil.EMPTY;
@@ -974,7 +975,7 @@ public class XlyErpService { @@ -974,7 +975,7 @@ public class XlyErpService {
974 UserSceneSessionService.ERP_AGENT_CACHE.remove(userId); 975 UserSceneSessionService.ERP_AGENT_CACHE.remove(userId);
975 //清除记忆缓存 976 //清除记忆缓存
976 operableChatMemoryProvider.clearSpecifiedMemory(userId); 977 operableChatMemoryProvider.clearSpecifiedMemory(userId);
977 - return getChange( session, page); 978 + return getChange( session, page,pageCount);
978 } else { 979 } else {
979 // 3. 选择失败:重新展示场景选择提示 980 // 3. 选择失败:重新展示场景选择提示
980 return AiResponseDTO.builder().sSceneName(sceneName).sMethodName(methodName).aiText(session.buildSceneSelectHint()).build(); 981 return AiResponseDTO.builder().sSceneName(sceneName).sMethodName(methodName).aiText(session.buildSceneSelectHint()).build();
@@ -988,13 +989,13 @@ public class XlyErpService { @@ -988,13 +989,13 @@ public class XlyErpService {
988 * @return com.xly.entity.AiResponseDTO 989 * @return com.xly.entity.AiResponseDTO
989 * @Description 用户输入数字换一换 990 * @Description 用户输入数字换一换
990 **/ 991 **/
991 - private AiResponseDTO getChange(UserSceneSession session,Integer page){ 992 + private AiResponseDTO getChange(UserSceneSession session,Integer page,Integer pageCount){
992 StringBuffer aiText = new StringBuffer().append(" <div style='line-height:1.8;width:100%;'>") 993 StringBuffer aiText = new StringBuffer().append(" <div style='line-height:1.8;width:100%;'>")
993 .append("<div style=\"color: #333;\">") 994 .append("<div style=\"color: #333;\">")
994 .append("智能体选择成功! 现在可以问她相关问题(如" + String.join("、", session.getCurrentScene().getSSceneContext()) + ")") 995 .append("智能体选择成功! 现在可以问她相关问题(如" + String.join("、", session.getCurrentScene().getSSceneContext()) + ")")
995 .append("</div>"); 996 .append("</div>");
996 //插入用户常用问题 997 //插入用户常用问题
997 - aiText.append(getSelectAgent(session,page)); 998 + aiText.append(getSelectAgent(session,page,pageCount));
998 String sceneName = ObjectUtil.isNotEmpty(session.getCurrentScene())?session.getCurrentScene().getSSceneName():StrUtil.EMPTY; 999 String sceneName = ObjectUtil.isNotEmpty(session.getCurrentScene())?session.getCurrentScene().getSSceneName():StrUtil.EMPTY;
999 String methodName = ObjectUtil.isNotEmpty(session.getCurrentTool())?session.getCurrentTool().getSControlName():StrUtil.EMPTY; 1000 String methodName = ObjectUtil.isNotEmpty(session.getCurrentTool())?session.getCurrentTool().getSControlName():StrUtil.EMPTY;
1000 return AiResponseDTO.builder().sSceneName(sceneName).sMethodName(methodName).aiText(aiText.toString()).sSceneName(session.getCurrentScene().getSSceneName()).build(); 1001 return AiResponseDTO.builder().sSceneName(sceneName).sMethodName(methodName).aiText(aiText.toString()).sSceneName(session.getCurrentScene().getSSceneName()).build();
@@ -1009,14 +1010,14 @@ public class XlyErpService { @@ -1009,14 +1010,14 @@ public class XlyErpService {
1009 * @return java.lang.String 1010 * @return java.lang.String
1010 * @Description 选择智能体成功后获取高频问题列表 1011 * @Description 选择智能体成功后获取高频问题列表
1011 **/ 1012 **/
1012 - private String getSelectAgent(UserSceneSession session,Integer page){ 1013 + private String getSelectAgent(UserSceneSession session,Integer page,Integer pageCount){
1013 List<ToolMeta> toolMetaAll = session.getAuthTool(); 1014 List<ToolMeta> toolMetaAll = session.getAuthTool();
1014 String sSceneId = session.getCurrentScene().getSId(); 1015 String sSceneId = session.getCurrentScene().getSId();
1015 toolMetaAll = toolMetaAll.stream().filter(to-> to.getSSceneId().equals(session.getCurrentScene().getSId())).collect(Collectors.toUnmodifiableList()); 1016 toolMetaAll = toolMetaAll.stream().filter(to-> to.getSSceneId().equals(session.getCurrentScene().getSId())).collect(Collectors.toUnmodifiableList());
1016 StringBuffer sb = new StringBuffer(); 1017 StringBuffer sb = new StringBuffer();
1017 //获取用户最近五次问题 1018 //获取用户最近五次问题
1018 List<Map<String,Object>> data = getAiUserAgentQuestion(session.getUserName(),sSceneId, page,3); 1019 List<Map<String,Object>> data = getAiUserAgentQuestion(session.getUserName(),sSceneId, page,3);
1019 - Integer iPageCount = 0; 1020 + Integer iPageCount = pageCount;
1020 if(page==1){ 1021 if(page==1){
1021 iPageCount =getAiUserAgentQuestionCount(session.getUserName(),sSceneId); 1022 iPageCount =getAiUserAgentQuestionCount(session.getUserName(),sSceneId);
1022 iPageCount = (int) Math.ceil(iPageCount/3); 1023 iPageCount = (int) Math.ceil(iPageCount/3);
src/main/java/com/xly/tts/bean/TTSRequestDTO.java
@@ -15,8 +15,9 @@ public class TTSRequestDTO { @@ -15,8 +15,9 @@ public class TTSRequestDTO {
15 private String rate = "+10%"; 15 private String rate = "+10%";
16 private String volume = "+0%"; 16 private String volume = "+0%";
17 private Boolean voiceless; 17 private Boolean voiceless;
18 - private Integer iPage;  
19 - private String sSceneId; 18 + private Integer page;
  19 + private Integer pageCount;
  20 + private String sceneId;
20 21
21 22
22 } 23 }
23 \ No newline at end of file 24 \ No newline at end of file
src/main/java/com/xly/tts/service/PythonTtsProxyService.java
@@ -75,15 +75,15 @@ public class PythonTtsProxyService { @@ -75,15 +75,15 @@ public class PythonTtsProxyService {
75 * @Description 换一换 75 * @Description 换一换
76 **/ 76 **/
77 public ResponseEntity<TTSResponseDTO> change(TTSRequestDTO request) { 77 public ResponseEntity<TTSResponseDTO> change(TTSRequestDTO request) {
78 - String userInput = request.getText();  
79 String sUserId = request.getUserid(); 78 String sUserId = request.getUserid();
80 String sUserName = request.getUsername(); 79 String sUserName = request.getUsername();
81 String sBrandsId = request.getBrandsid(); 80 String sBrandsId = request.getBrandsid();
82 String sSubsidiaryId = request.getSubsidiaryid(); 81 String sSubsidiaryId = request.getSubsidiaryid();
83 String sUserType = request.getUsertype(); 82 String sUserType = request.getUsertype();
84 String authorization = request.getAuthorization(); 83 String authorization = request.getAuthorization();
85 - Integer iPage = request.getIPage();  
86 - AiResponseDTO voiceText = xlyErpService.change(sUserId, sUserName , sBrandsId , sSubsidiaryId, sUserType, authorization,iPage); 84 + Integer iPage = request.getPage();
  85 + Integer pageCount = request.getPageCount();
  86 + AiResponseDTO voiceText = xlyErpService.change(sUserId, sUserName , sBrandsId , sSubsidiaryId, sUserType, authorization,iPage, pageCount);
87 return synthesizeStreamAi(request, voiceText); 87 return synthesizeStreamAi(request, voiceText);
88 } 88 }
89 89