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