diff --git a/src/main/java/com/xly/service/XlyErpService.java b/src/main/java/com/xly/service/XlyErpService.java index ccf89a9..4df521d 100644 --- a/src/main/java/com/xly/service/XlyErpService.java +++ b/src/main/java/com/xly/service/XlyErpService.java @@ -350,23 +350,21 @@ public class XlyErpService { } String sResponMessage = StrUtil.EMPTY; //用户输入添加方法(如果没有方法,动态SQL方法不需要) + Boolean isConfirmed = dynamicToolProvider.isConfirmed(input,session); if(!(ObjectUtil.isNotEmpty(session.getCurrentTool()) && ObjectUtil.isNotEmpty(session.getCurrentTool().getSInputTabelName()) && ObjectUtil.isNotEmpty(session.getCurrentTool().getSStructureMemo())) ){ String sSystemPrompt = AgentSystemPrompt.sSystemPrompt; //如果客户输入了确认/生成 切换引导语言 - Boolean isConfirmed = dynamicToolProvider.isConfirmed(input,session); if(ObjectUtil.isNotEmpty(session.getSSystemPrompt()) && isConfirmed){ sSystemPrompt = session.getSSystemPrompt(); // session.setSSystemPrompt(); //重新生成新的aiAgent拿新的aiAgent 做选择 aiAgent = createConfirmeAgent(session); } - //存在动态参数需要重新定义引导语 - if(ObjectUtil.isNotEmpty(session.getCurrentTool()) - && ObjectUtil.isNotEmpty(session.getCurrentTool().getDynamicParamRule()) - ){ + //报价每次定义参数 + if(!isConfirmed && ObjectUtil.isNotEmpty(session) && ObjectUtil.isNotEmpty(session.getCurrentTool()) && session.getCurrentTool().getBQuo()){ sSystemPrompt = SystemPromptGenerator.generate(session.getCurrentTool().getSMethodName(),session); aiAgent = createConfirmeAgent(session); } @@ -381,7 +379,7 @@ public class XlyErpService { } sReturnType = (session!=null && ObjectUtil.isNotEmpty(session.getCurrentTool()) && session.getCurrentTool().getBQuo())?ReturnTypeCode.JSON.getCode():ReturnTypeCode.HTML.getCode(); //动态方法或返回需要提示的信息 - if(ObjectUtil.isNotEmpty(session.getSFunPrompts())){ + if(ObjectUtil.isNotEmpty(session.getSFunPrompts()) && !isConfirmed){ return AiResponseDTO.builder().sSceneName(sceneName).sMethodName(methodName).aiText(session.getSFunPrompts()).sReturnType(sReturnType).build(); } // 1.找到方法并且本方法带表结构描述时,需要调用 自然语言转SQL智能体 @@ -1000,7 +998,7 @@ public class XlyErpService { if(ObjectUtil.isNotEmpty(dataList)){ dataList.forEach(one->{ immediateReturnToolNames.add(one.getsName()); - if(ObjectUtil.isNotEmpty(session.getCurrentTool()) && ObjectUtil.isNotEmpty(session.getCurrentTool().getDynamicParamRule())){ + if(ObjectUtil.isNotEmpty(session.getCurrentTool())){ ToolSpecification spec = dynamicToolProvider.buildToolSpecification(session.getCurrentTool()); session.getCurrentTool().setDynamicParamRule(new ArrayList<>()); executors.put(spec,one.getToolExecutor()); diff --git a/src/main/java/com/xly/tool/DynamicToolProvider.java b/src/main/java/com/xly/tool/DynamicToolProvider.java index 5a1640e..6fa3b6e 100644 --- a/src/main/java/com/xly/tool/DynamicToolProvider.java +++ b/src/main/java/com/xly/tool/DynamicToolProvider.java @@ -231,6 +231,7 @@ public class DynamicToolProvider implements ToolProvider { if(session.getCurrentTool().getBQuo()){ resp = JSONUtil.toJsonStr(session.getQuoData()); session.setSFunPrompts(resp); + session.getCurrentTool().setDynamicParamRule(null); return resp; }else{ resp = JSONUtil.toJsonStr(args) ; @@ -617,16 +618,17 @@ public class DynamicToolProvider implements ToolProvider { //校验是否缺失参数 private String getMissParamMsg(ToolMeta meta,UserSceneSession session, Map args){ if(meta.getBQuo()){ - List dataParamDynamic = session.getCurrentTool().getParamRuleListAll().stream().filter(d -> - d.getBDynamicParam()).collect(Collectors.toUnmodifiableList()); Map data = quoService.getQuoData(args, session); List> sAll = (List>) data.get("sAll"); List> sEmptyData = sAll.stream().filter(one-> BooleanUtil.toBoolean(one.get("bEmpty").toString()) && (!Validator.isValid(one.get("sValue"))) && !"sDynamicPart".equals(one.get("sName"))).collect(Collectors.toUnmodifiableList()); data.remove("sAll"); if(ObjectUtil.isNotEmpty(sEmptyData)){ + List missData = session.getCurrentTool().getParamRuleListAll().stream().filter(d -> + d.getBEmpty() + && (!Validator.isValid(args.get(d.getSParam()))) && !"sDynamicPart".equals(d.getSParamValue())).collect(Collectors.toUnmodifiableList()); data.put("bTs",true); - String sSystemPrompt = SystemPromptGenerator.buildMissParamPrompt(session,dataParamDynamic); + String sSystemPrompt = SystemPromptGenerator.buildMissParamPrompt(session,missData); session.setSSystemPrompt(sSystemPrompt); String askMsg = JSONObject.toJSONString(data); session.setSFunPrompts(askMsg); @@ -993,6 +995,9 @@ public class DynamicToolProvider implements ToolProvider { if (iBizType == 1 || iBizType == 4) { Map data = new HashMap<>(args); data.put("sData", JSONObject.toJSONString((data))); + if(meta.getBQuo()){ + data.put("sQuoData", JSONObject.toJSONString((session.getQuoData()))); + } if(ObjectUtil.isEmpty(sBizContent) && iBizType == 4){ sBizContent ="Sp_Ai_AddCommonAfterNew"; if(ObjectUtil.isEmpty(args.get("sSlaveId"))){