Commit b90357f380c56ead9d8079c86ed0f61edc2ce1df
1 parent
3844bfb4
添加未清选择 改成动态引导语
Showing
8 changed files
with
32 additions
and
27 deletions
src/main/java/com/xly/entity/SceneDto.java
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 |