Commit b2cfdb10bfaedd00c1af249cfe8ec2df816e8c03
1 parent
80001927
添加未清选择 改成动态引导语
Showing
2 changed files
with
13 additions
and
10 deletions
src/main/java/com/xly/service/XlyErpService.java
| @@ -350,23 +350,21 @@ public class XlyErpService { | @@ -350,23 +350,21 @@ public class XlyErpService { | ||
| 350 | } | 350 | } |
| 351 | String sResponMessage = StrUtil.EMPTY; | 351 | String sResponMessage = StrUtil.EMPTY; |
| 352 | //用户输入添加方法(如果没有方法,动态SQL方法不需要) | 352 | //用户输入添加方法(如果没有方法,动态SQL方法不需要) |
| 353 | + Boolean isConfirmed = dynamicToolProvider.isConfirmed(input,session); | ||
| 353 | if(!(ObjectUtil.isNotEmpty(session.getCurrentTool()) | 354 | if(!(ObjectUtil.isNotEmpty(session.getCurrentTool()) |
| 354 | && ObjectUtil.isNotEmpty(session.getCurrentTool().getSInputTabelName()) | 355 | && ObjectUtil.isNotEmpty(session.getCurrentTool().getSInputTabelName()) |
| 355 | && ObjectUtil.isNotEmpty(session.getCurrentTool().getSStructureMemo())) | 356 | && ObjectUtil.isNotEmpty(session.getCurrentTool().getSStructureMemo())) |
| 356 | ){ | 357 | ){ |
| 357 | String sSystemPrompt = AgentSystemPrompt.sSystemPrompt; | 358 | String sSystemPrompt = AgentSystemPrompt.sSystemPrompt; |
| 358 | //如果客户输入了确认/生成 切换引导语言 | 359 | //如果客户输入了确认/生成 切换引导语言 |
| 359 | - Boolean isConfirmed = dynamicToolProvider.isConfirmed(input,session); | ||
| 360 | if(ObjectUtil.isNotEmpty(session.getSSystemPrompt()) && isConfirmed){ | 360 | if(ObjectUtil.isNotEmpty(session.getSSystemPrompt()) && isConfirmed){ |
| 361 | sSystemPrompt = session.getSSystemPrompt(); | 361 | sSystemPrompt = session.getSSystemPrompt(); |
| 362 | // session.setSSystemPrompt(); | 362 | // session.setSSystemPrompt(); |
| 363 | //重新生成新的aiAgent拿新的aiAgent 做选择 | 363 | //重新生成新的aiAgent拿新的aiAgent 做选择 |
| 364 | aiAgent = createConfirmeAgent(session); | 364 | aiAgent = createConfirmeAgent(session); |
| 365 | } | 365 | } |
| 366 | - //存在动态参数需要重新定义引导语 | ||
| 367 | - if(ObjectUtil.isNotEmpty(session.getCurrentTool()) | ||
| 368 | - && ObjectUtil.isNotEmpty(session.getCurrentTool().getDynamicParamRule()) | ||
| 369 | - ){ | 366 | + //报价每次定义参数 |
| 367 | + if(!isConfirmed && ObjectUtil.isNotEmpty(session) && ObjectUtil.isNotEmpty(session.getCurrentTool()) && session.getCurrentTool().getBQuo()){ | ||
| 370 | sSystemPrompt = SystemPromptGenerator.generate(session.getCurrentTool().getSMethodName(),session); | 368 | sSystemPrompt = SystemPromptGenerator.generate(session.getCurrentTool().getSMethodName(),session); |
| 371 | aiAgent = createConfirmeAgent(session); | 369 | aiAgent = createConfirmeAgent(session); |
| 372 | } | 370 | } |
| @@ -381,7 +379,7 @@ public class XlyErpService { | @@ -381,7 +379,7 @@ public class XlyErpService { | ||
| 381 | } | 379 | } |
| 382 | sReturnType = (session!=null && ObjectUtil.isNotEmpty(session.getCurrentTool()) && session.getCurrentTool().getBQuo())?ReturnTypeCode.JSON.getCode():ReturnTypeCode.HTML.getCode(); | 380 | sReturnType = (session!=null && ObjectUtil.isNotEmpty(session.getCurrentTool()) && session.getCurrentTool().getBQuo())?ReturnTypeCode.JSON.getCode():ReturnTypeCode.HTML.getCode(); |
| 383 | //动态方法或返回需要提示的信息 | 381 | //动态方法或返回需要提示的信息 |
| 384 | - if(ObjectUtil.isNotEmpty(session.getSFunPrompts())){ | 382 | + if(ObjectUtil.isNotEmpty(session.getSFunPrompts()) && !isConfirmed){ |
| 385 | return AiResponseDTO.builder().sSceneName(sceneName).sMethodName(methodName).aiText(session.getSFunPrompts()).sReturnType(sReturnType).build(); | 383 | return AiResponseDTO.builder().sSceneName(sceneName).sMethodName(methodName).aiText(session.getSFunPrompts()).sReturnType(sReturnType).build(); |
| 386 | } | 384 | } |
| 387 | // 1.找到方法并且本方法带表结构描述时,需要调用 自然语言转SQL智能体 | 385 | // 1.找到方法并且本方法带表结构描述时,需要调用 自然语言转SQL智能体 |
| @@ -1000,7 +998,7 @@ public class XlyErpService { | @@ -1000,7 +998,7 @@ public class XlyErpService { | ||
| 1000 | if(ObjectUtil.isNotEmpty(dataList)){ | 998 | if(ObjectUtil.isNotEmpty(dataList)){ |
| 1001 | dataList.forEach(one->{ | 999 | dataList.forEach(one->{ |
| 1002 | immediateReturnToolNames.add(one.getsName()); | 1000 | immediateReturnToolNames.add(one.getsName()); |
| 1003 | - if(ObjectUtil.isNotEmpty(session.getCurrentTool()) && ObjectUtil.isNotEmpty(session.getCurrentTool().getDynamicParamRule())){ | 1001 | + if(ObjectUtil.isNotEmpty(session.getCurrentTool())){ |
| 1004 | ToolSpecification spec = dynamicToolProvider.buildToolSpecification(session.getCurrentTool()); | 1002 | ToolSpecification spec = dynamicToolProvider.buildToolSpecification(session.getCurrentTool()); |
| 1005 | session.getCurrentTool().setDynamicParamRule(new ArrayList<>()); | 1003 | session.getCurrentTool().setDynamicParamRule(new ArrayList<>()); |
| 1006 | executors.put(spec,one.getToolExecutor()); | 1004 | executors.put(spec,one.getToolExecutor()); |
src/main/java/com/xly/tool/DynamicToolProvider.java
| @@ -231,6 +231,7 @@ public class DynamicToolProvider implements ToolProvider { | @@ -231,6 +231,7 @@ public class DynamicToolProvider implements ToolProvider { | ||
| 231 | if(session.getCurrentTool().getBQuo()){ | 231 | if(session.getCurrentTool().getBQuo()){ |
| 232 | resp = JSONUtil.toJsonStr(session.getQuoData()); | 232 | resp = JSONUtil.toJsonStr(session.getQuoData()); |
| 233 | session.setSFunPrompts(resp); | 233 | session.setSFunPrompts(resp); |
| 234 | + session.getCurrentTool().setDynamicParamRule(null); | ||
| 234 | return resp; | 235 | return resp; |
| 235 | }else{ | 236 | }else{ |
| 236 | resp = JSONUtil.toJsonStr(args) ; | 237 | resp = JSONUtil.toJsonStr(args) ; |
| @@ -617,16 +618,17 @@ public class DynamicToolProvider implements ToolProvider { | @@ -617,16 +618,17 @@ public class DynamicToolProvider implements ToolProvider { | ||
| 617 | //校验是否缺失参数 | 618 | //校验是否缺失参数 |
| 618 | private String getMissParamMsg(ToolMeta meta,UserSceneSession session, Map<String, Object> args){ | 619 | private String getMissParamMsg(ToolMeta meta,UserSceneSession session, Map<String, Object> args){ |
| 619 | if(meta.getBQuo()){ | 620 | if(meta.getBQuo()){ |
| 620 | - List<ParamRule> dataParamDynamic = session.getCurrentTool().getParamRuleListAll().stream().filter(d -> | ||
| 621 | - d.getBDynamicParam()).collect(Collectors.toUnmodifiableList()); | ||
| 622 | Map<String,Object> data = quoService.getQuoData(args, session); | 621 | Map<String,Object> data = quoService.getQuoData(args, session); |
| 623 | List<Map<String,Object>> sAll = (List<Map<String, Object>>) data.get("sAll"); | 622 | List<Map<String,Object>> sAll = (List<Map<String, Object>>) data.get("sAll"); |
| 624 | List<Map<String,Object>> sEmptyData = sAll.stream().filter(one-> BooleanUtil.toBoolean(one.get("bEmpty").toString()) | 623 | List<Map<String,Object>> sEmptyData = sAll.stream().filter(one-> BooleanUtil.toBoolean(one.get("bEmpty").toString()) |
| 625 | && (!Validator.isValid(one.get("sValue"))) && !"sDynamicPart".equals(one.get("sName"))).collect(Collectors.toUnmodifiableList()); | 624 | && (!Validator.isValid(one.get("sValue"))) && !"sDynamicPart".equals(one.get("sName"))).collect(Collectors.toUnmodifiableList()); |
| 626 | data.remove("sAll"); | 625 | data.remove("sAll"); |
| 627 | if(ObjectUtil.isNotEmpty(sEmptyData)){ | 626 | if(ObjectUtil.isNotEmpty(sEmptyData)){ |
| 627 | + List<ParamRule> missData = session.getCurrentTool().getParamRuleListAll().stream().filter(d -> | ||
| 628 | + d.getBEmpty() | ||
| 629 | + && (!Validator.isValid(args.get(d.getSParam()))) && !"sDynamicPart".equals(d.getSParamValue())).collect(Collectors.toUnmodifiableList()); | ||
| 628 | data.put("bTs",true); | 630 | data.put("bTs",true); |
| 629 | - String sSystemPrompt = SystemPromptGenerator.buildMissParamPrompt(session,dataParamDynamic); | 631 | + String sSystemPrompt = SystemPromptGenerator.buildMissParamPrompt(session,missData); |
| 630 | session.setSSystemPrompt(sSystemPrompt); | 632 | session.setSSystemPrompt(sSystemPrompt); |
| 631 | String askMsg = JSONObject.toJSONString(data); | 633 | String askMsg = JSONObject.toJSONString(data); |
| 632 | session.setSFunPrompts(askMsg); | 634 | session.setSFunPrompts(askMsg); |
| @@ -993,6 +995,9 @@ public class DynamicToolProvider implements ToolProvider { | @@ -993,6 +995,9 @@ public class DynamicToolProvider implements ToolProvider { | ||
| 993 | if (iBizType == 1 || iBizType == 4) { | 995 | if (iBizType == 1 || iBizType == 4) { |
| 994 | Map<String, Object> data = new HashMap<>(args); | 996 | Map<String, Object> data = new HashMap<>(args); |
| 995 | data.put("sData", JSONObject.toJSONString((data))); | 997 | data.put("sData", JSONObject.toJSONString((data))); |
| 998 | + if(meta.getBQuo()){ | ||
| 999 | + data.put("sQuoData", JSONObject.toJSONString((session.getQuoData()))); | ||
| 1000 | + } | ||
| 996 | if(ObjectUtil.isEmpty(sBizContent) && iBizType == 4){ | 1001 | if(ObjectUtil.isEmpty(sBizContent) && iBizType == 4){ |
| 997 | sBizContent ="Sp_Ai_AddCommonAfterNew"; | 1002 | sBizContent ="Sp_Ai_AddCommonAfterNew"; |
| 998 | if(ObjectUtil.isEmpty(args.get("sSlaveId"))){ | 1003 | if(ObjectUtil.isEmpty(args.get("sSlaveId"))){ |