Commit b90357f380c56ead9d8079c86ed0f61edc2ce1df

Authored by qianbao
1 parent 3844bfb4

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

src/main/java/com/xly/entity/SceneDto.java
... ... @@ -42,6 +42,8 @@ public class SceneDto {
42 42  
43 43 private String sSceneContext;
44 44  
  45 + private String sKnowledgeBase;
  46 +
45 47 private String sStatus;
46 48  
47 49  
... ...
src/main/java/com/xly/entity/ToolMeta.java
... ... @@ -52,7 +52,6 @@ public class ToolMeta {
52 52 private String sVectorjson;
53 53 private String sVectorfiledAll;
54 54 private String sVectorfiledShow;
55   - private String sKnowledgeBase;
56 55 private String sTsMemo;
57 56 private Boolean sQue = false;
58 57 private Boolean bQuo = false;
... ...
src/main/java/com/xly/mapper/SceneMapper.java
... ... @@ -11,6 +11,6 @@ import java.util.List;
11 11 public interface SceneMapper {
12 12  
13 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 15 List<SceneDto> findAll();
16 16 }
17 17 \ No newline at end of file
... ...
src/main/java/com/xly/mapper/ToolMetaMapper.java
... ... @@ -13,6 +13,6 @@ import java.util.List;
13 13 public interface ToolMetaMapper {
14 14  
15 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 17 List<ToolMeta> findAll();
18 18 }
19 19 \ No newline at end of file
... ...
src/main/java/com/xly/service/QuoService.java
... ... @@ -2,9 +2,7 @@ package com.xly.service;
2 2  
3 3 import cn.hutool.core.util.ObjectUtil;
4 4 import cn.hutool.core.util.StrUtil;
5   -import cn.hutool.extra.pinyin.PinyinUtil;
6 5 import cn.hutool.json.JSONUtil;
7   -import com.alibaba.fastjson2.JSONObject;
8 6 import com.xly.entity.ParamRule;
9 7 import com.xly.entity.UserSceneSession;
10 8 import lombok.RequiredArgsConstructor;
... ... @@ -40,7 +38,9 @@ public class QuoService {
40 38 if(ObjectUtil.isEmpty(args)){
41 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 45 List<ParamRule> dataProduct = dataAll.stream().filter(one-> "产品".equals(one.getSGroup()) && !one.getBDynamicParam()).collect(Collectors.toUnmodifiableList());
46 46 List<ParamRule> dataPart = dataAll.stream().filter(one-> "部件".equals(one.getSGroup()) && !one.getBDynamicParam()).collect(Collectors.toUnmodifiableList());
... ... @@ -48,6 +48,7 @@ public class QuoService {
48 48 List<Map<String,Object>> sAll = new ArrayList<>();
49 49 List<Map<String,Object>> productList = new ArrayList<>();
50 50 Map<String, Object> finalArgsOld = args;
  51 + List<ParamRule> finalDataAll = dataAll;
51 52 dataProduct.forEach(p->{
52 53 Object sVal = getValue( p,finalArgsOld);
53 54 List<String> addValue = new ArrayList<>();
... ... @@ -67,7 +68,7 @@ public class QuoService {
67 68 product.put("iOrder", p.getIOrder());
68 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 72 if( !"sDynamicPart".equals(p.getSParamValue())
72 73 &&!"sDynamicPartDel".equals(p.getSParamValue())
73 74 ){
... ...
src/main/java/com/xly/service/XlyErpService.java
... ... @@ -356,9 +356,10 @@ public class XlyErpService {
356 356 && ObjectUtil.isNotEmpty(session.getCurrentTool().getSStructureMemo()))
357 357 ){
358 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 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 365 if(ObjectUtil.isNotEmpty(session.getSSystemPrompt()) && isConfirmed){
... ... @@ -369,7 +370,7 @@ public class XlyErpService {
369 370 }
370 371 //报价每次定义参数
371 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 374 aiAgent = createConfirmeAgent(session);
374 375 }
375 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 470 }
471 471 }
472 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 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 493 // 4. 合并所有参数
493 494 List<ParamRule> dataAll = new ArrayList<>(paramRuleDataAllNew);
... ... @@ -1002,7 +1003,7 @@ public class DynamicToolProvider implements ToolProvider {
1002 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 1007 if("enum".equals(sType) && ObjectUtil.isEmpty(dataListNew)){
1007 1008 args.remove(name);
1008 1009 args.remove(sValue);
... ...
src/main/resources/application.yml
... ... @@ -136,6 +136,7 @@ langchain4j:
136 136 # 聊天模型配置(用于一般对话)
137 137 base-url: http://112.82.245.194:41434
138 138 # chat-model-name: qwen2.5:7b-instruct
  139 +# chat-model-name: qwen3.6-27b-iq2:latest
139 140 chat-model-name: qwen2.5:14b
140 141 # chat-model-name: qwen3:14b
141 142 # chat-model-name: qwen3.5:9b
... ...