Commit b90357f380c56ead9d8079c86ed0f61edc2ce1df

Authored by qianbao
1 parent 3844bfb4

添加未清选择 改成动态引导语

src/main/java/com/xly/entity/SceneDto.java
@@ -42,6 +42,8 @@ public class SceneDto { @@ -42,6 +42,8 @@ public class SceneDto {
42 42
43 private String sSceneContext; 43 private String sSceneContext;
44 44
  45 + private String sKnowledgeBase;
  46 +
45 private String sStatus; 47 private String sStatus;
46 48
47 49
src/main/java/com/xly/entity/ToolMeta.java
@@ -52,7 +52,6 @@ public class ToolMeta { @@ -52,7 +52,6 @@ public class ToolMeta {
52 private String sVectorjson; 52 private String sVectorjson;
53 private String sVectorfiledAll; 53 private String sVectorfiledAll;
54 private String sVectorfiledShow; 54 private String sVectorfiledShow;
55 - private String sKnowledgeBase;  
56 private String sTsMemo; 55 private String sTsMemo;
57 private Boolean sQue = false; 56 private Boolean sQue = false;
58 private Boolean bQuo = false; 57 private Boolean bQuo = false;
src/main/java/com/xly/mapper/SceneMapper.java
@@ -11,6 +11,6 @@ import java.util.List; @@ -11,6 +11,6 @@ import java.util.List;
11 public interface SceneMapper { 11 public interface SceneMapper {
12 12
13 // XML配置方式 13 // XML配置方式
14 - @Select("SELECT * FROM ai_agent order by iOrder") 14 + @Select("SELECT A.*,fun_ai_getsKnowledgeBase(A.sId) AS sKnowledgeBase FROM ai_agent AS A order by iOrder")
15 List<SceneDto> findAll(); 15 List<SceneDto> findAll();
16 } 16 }
17 \ No newline at end of file 17 \ No newline at end of file
src/main/java/com/xly/mapper/ToolMetaMapper.java
@@ -13,6 +13,6 @@ import java.util.List; @@ -13,6 +13,6 @@ import java.util.List;
13 public interface ToolMetaMapper { 13 public interface ToolMetaMapper {
14 14
15 // XML配置方式 15 // XML配置方式
16 - @Select("SELECT A.*,fun_ai_getsKnowledgeBase(A.sId) AS sKnowledgeBase FROM ai_tool AS A order by iOrder") 16 + @Select("SELECT A.* FROM ai_tool AS A order by iOrder")
17 List<ToolMeta> findAll(); 17 List<ToolMeta> findAll();
18 } 18 }
19 \ No newline at end of file 19 \ No newline at end of file
src/main/java/com/xly/service/QuoService.java
@@ -2,9 +2,7 @@ package com.xly.service; @@ -2,9 +2,7 @@ package com.xly.service;
2 2
3 import cn.hutool.core.util.ObjectUtil; 3 import cn.hutool.core.util.ObjectUtil;
4 import cn.hutool.core.util.StrUtil; 4 import cn.hutool.core.util.StrUtil;
5 -import cn.hutool.extra.pinyin.PinyinUtil;  
6 import cn.hutool.json.JSONUtil; 5 import cn.hutool.json.JSONUtil;
7 -import com.alibaba.fastjson2.JSONObject;  
8 import com.xly.entity.ParamRule; 6 import com.xly.entity.ParamRule;
9 import com.xly.entity.UserSceneSession; 7 import com.xly.entity.UserSceneSession;
10 import lombok.RequiredArgsConstructor; 8 import lombok.RequiredArgsConstructor;
@@ -40,7 +38,9 @@ public class QuoService { @@ -40,7 +38,9 @@ public class QuoService {
40 if(ObjectUtil.isEmpty(args)){ 38 if(ObjectUtil.isEmpty(args)){
41 args = new HashMap<>(); 39 args = new HashMap<>();
42 } 40 }
43 - List<ParamRule> dataAll = session.getCurrentTool().getParamRuleListAll(); 41 + List<ParamRule> dataAllData = session.getCurrentTool().getParamRuleListAll();
  42 +
  43 + List<ParamRule> dataAll = dataAllData.stream().filter(one->one.getBTipModel()).collect(Collectors.toList());
44 //获取产品的参数 44 //获取产品的参数
45 List<ParamRule> dataProduct = dataAll.stream().filter(one-> "产品".equals(one.getSGroup()) && !one.getBDynamicParam()).collect(Collectors.toUnmodifiableList()); 45 List<ParamRule> dataProduct = dataAll.stream().filter(one-> "产品".equals(one.getSGroup()) && !one.getBDynamicParam()).collect(Collectors.toUnmodifiableList());
46 List<ParamRule> dataPart = dataAll.stream().filter(one-> "部件".equals(one.getSGroup()) && !one.getBDynamicParam()).collect(Collectors.toUnmodifiableList()); 46 List<ParamRule> dataPart = dataAll.stream().filter(one-> "部件".equals(one.getSGroup()) && !one.getBDynamicParam()).collect(Collectors.toUnmodifiableList());
@@ -48,6 +48,7 @@ public class QuoService { @@ -48,6 +48,7 @@ public class QuoService {
48 List<Map<String,Object>> sAll = new ArrayList<>(); 48 List<Map<String,Object>> sAll = new ArrayList<>();
49 List<Map<String,Object>> productList = new ArrayList<>(); 49 List<Map<String,Object>> productList = new ArrayList<>();
50 Map<String, Object> finalArgsOld = args; 50 Map<String, Object> finalArgsOld = args;
  51 + List<ParamRule> finalDataAll = dataAll;
51 dataProduct.forEach(p->{ 52 dataProduct.forEach(p->{
52 Object sVal = getValue( p,finalArgsOld); 53 Object sVal = getValue( p,finalArgsOld);
53 List<String> addValue = new ArrayList<>(); 54 List<String> addValue = new ArrayList<>();
@@ -67,7 +68,7 @@ public class QuoService { @@ -67,7 +68,7 @@ public class QuoService {
67 product.put("iOrder", p.getIOrder()); 68 product.put("iOrder", p.getIOrder());
68 product.put("sParamConfigValue",p.getSParamConfigValue()==null?StrUtil.EMPTY:p.getSParamConfigValue()); 69 product.put("sParamConfigValue",p.getSParamConfigValue()==null?StrUtil.EMPTY:p.getSParamConfigValue());
69 //获取动态参数 70 //获取动态参数
70 - adddynamicData( sValue, dataAll, p, finalArgsOld, sAll, product); 71 + adddynamicData( sValue, finalDataAll, p, finalArgsOld, sAll, product);
71 if( !"sDynamicPart".equals(p.getSParamValue()) 72 if( !"sDynamicPart".equals(p.getSParamValue())
72 &&!"sDynamicPartDel".equals(p.getSParamValue()) 73 &&!"sDynamicPartDel".equals(p.getSParamValue())
73 ){ 74 ){
src/main/java/com/xly/service/XlyErpService.java
@@ -356,9 +356,10 @@ public class XlyErpService { @@ -356,9 +356,10 @@ public class XlyErpService {
356 && ObjectUtil.isNotEmpty(session.getCurrentTool().getSStructureMemo())) 356 && ObjectUtil.isNotEmpty(session.getCurrentTool().getSStructureMemo()))
357 ){ 357 ){
358 String sSystemPrompt =AgentSystemPrompt.sSystemPrompt; 358 String sSystemPrompt =AgentSystemPrompt.sSystemPrompt;
359 - if(ObjectUtil.isNotEmpty(session) && ObjectUtil.isNotEmpty(session.getCurrentTool())&&session.getCurrentTool().getBQuo()){ 359 + if(ObjectUtil.isNotEmpty(session) && ObjectUtil.isNotEmpty(session.getCurrentScene())
  360 + && "quotemanage".equals(session.getCurrentScene().getSSceneNo())){
360 sSystemPrompt =AgentSystemPrompt.sSystemPromptQuo; 361 sSystemPrompt =AgentSystemPrompt.sSystemPromptQuo;
361 - sSystemPrompt = StrUtil.format(sSystemPrompt,session.getCurrentTool().getSKnowledgeBase()); 362 + sSystemPrompt = StrUtil.format(sSystemPrompt,session.getCurrentScene().getSKnowledgeBase());
362 } 363 }
363 //如果客户输入了确认/生成 切换引导语言 364 //如果客户输入了确认/生成 切换引导语言
364 if(ObjectUtil.isNotEmpty(session.getSSystemPrompt()) && isConfirmed){ 365 if(ObjectUtil.isNotEmpty(session.getSSystemPrompt()) && isConfirmed){
@@ -369,7 +370,7 @@ public class XlyErpService { @@ -369,7 +370,7 @@ public class XlyErpService {
369 } 370 }
370 //报价每次定义参数 371 //报价每次定义参数
371 if(!isConfirmed && ObjectUtil.isNotEmpty(session) && ObjectUtil.isNotEmpty(session.getCurrentTool()) && session.getCurrentTool().getBQuo()){ 372 if(!isConfirmed && ObjectUtil.isNotEmpty(session) && ObjectUtil.isNotEmpty(session.getCurrentTool()) && session.getCurrentTool().getBQuo()){
372 - sSystemPrompt = SystemPromptGenerator.generate(session.getCurrentTool().getSMethodName(),session,session.getCurrentTool().getSKnowledgeBase()); 373 + sSystemPrompt = SystemPromptGenerator.generate(session.getCurrentTool().getSMethodName(),session,session.getCurrentScene().getSKnowledgeBase());
373 aiAgent = createConfirmeAgent(session); 374 aiAgent = createConfirmeAgent(session);
374 } 375 }
375 Result<String> rs = aiAgent.chat(userId, input,sSystemPrompt); 376 Result<String> rs = aiAgent.chat(userId, input,sSystemPrompt);
src/main/java/com/xly/tool/DynamicToolProvider.java
@@ -470,24 +470,25 @@ public class DynamicToolProvider implements ToolProvider { @@ -470,24 +470,25 @@ public class DynamicToolProvider implements ToolProvider {
470 } 470 }
471 } 471 }
472 // 移除不在 addValue 中的动态部件 472 // 移除不在 addValue 中的动态部件
473 - paramRuleDataAllNew = paramRuleDataAllNew.stream()  
474 - .filter(p -> {  
475 - // 如果不是动态部件参数,保留  
476 - if (!p.getBDynamicParam() || !"sDynamicPart".equals(p.getSDynamicParamName())) {  
477 - return true;  
478 - }  
479 - // 如果是动态部件参数,检查是否在有效值列表中  
480 - return validDynamicPartValues.contains(p.getSDynamicParam());  
481 - })  
482 - .collect(Collectors.toList()); 473 +// paramRuleDataAllNew = paramRuleDataAllNew.stream()
  474 +// .filter(p -> {
  475 +// // 如果不是动态部件参数,保留
  476 +// if (!p.getBDynamicParam() || !"sDynamicPart".equals(p.getSDynamicParamName())) {
  477 +// return true;
  478 +// }
  479 +// // 如果是动态部件参数,检查是否在有效值列表中
  480 +// return validDynamicPartValues.contains(p.getSDynamicParam());
  481 +// })
  482 +// .collect(Collectors.toList());
483 log.info("移除无效动态部件后,列表大小: {}", paramRuleDataAllNew.size()); 483 log.info("移除无效动态部件后,列表大小: {}", paramRuleDataAllNew.size());
484 - }else{  
485 - //移除不是动态部件的  
486 - paramRuleDataAllNew = paramRuleDataAllNew.stream()  
487 - .filter(p -> !p.getBDynamicParam() || !"sDynamicPart".equals(p.getSDynamicParamName()))  
488 - .collect(Collectors.toList());  
489 - log.info("sValue为空,移除所有动态部件");  
490 } 484 }
  485 +// else{
  486 +// //移除不是动态部件的
  487 +// paramRuleDataAllNew = paramRuleDataAllNew.stream()
  488 +// .filter(p -> !p.getBDynamicParam() || !"sDynamicPart".equals(p.getSDynamicParamName()))
  489 +// .collect(Collectors.toList());
  490 +// log.info("sValue为空,移除所有动态部件");
  491 +// }
491 } 492 }
492 // 4. 合并所有参数 493 // 4. 合并所有参数
493 List<ParamRule> dataAll = new ArrayList<>(paramRuleDataAllNew); 494 List<ParamRule> dataAll = new ArrayList<>(paramRuleDataAllNew);
@@ -1002,7 +1003,7 @@ public class DynamicToolProvider implements ToolProvider { @@ -1002,7 +1003,7 @@ public class DynamicToolProvider implements ToolProvider {
1002 args.put(sValue,((List<?>) args.get(sValue)).get(0)); 1003 args.put(sValue,((List<?>) args.get(sValue)).get(0));
1003 } 1004 }
1004 } 1005 }
1005 - List<Map<String,Object>> dataListNew = dataList.stream().filter(one-> one.get(sValue).equals(args.get(name)) || one.get(sValue).equals(args.get(sValue))).collect(Collectors.toUnmodifiableList()); 1006 + List<Map<String,Object>> dataListNew = dataList.stream().filter(one-> ObjectUtil.isNotEmpty(one.get(sValue)) &&(one.get(sValue).equals(args.get(name)) || one.get(sValue).equals(args.get(sValue)))).collect(Collectors.toUnmodifiableList());
1006 if("enum".equals(sType) && ObjectUtil.isEmpty(dataListNew)){ 1007 if("enum".equals(sType) && ObjectUtil.isEmpty(dataListNew)){
1007 args.remove(name); 1008 args.remove(name);
1008 args.remove(sValue); 1009 args.remove(sValue);
src/main/resources/application.yml
@@ -136,6 +136,7 @@ langchain4j: @@ -136,6 +136,7 @@ langchain4j:
136 # 聊天模型配置(用于一般对话) 136 # 聊天模型配置(用于一般对话)
137 base-url: http://112.82.245.194:41434 137 base-url: http://112.82.245.194:41434
138 # chat-model-name: qwen2.5:7b-instruct 138 # chat-model-name: qwen2.5:7b-instruct
  139 +# chat-model-name: qwen3.6-27b-iq2:latest
139 chat-model-name: qwen2.5:14b 140 chat-model-name: qwen2.5:14b
140 # chat-model-name: qwen3:14b 141 # chat-model-name: qwen3:14b
141 # chat-model-name: qwen3.5:9b 142 # chat-model-name: qwen3.5:9b