Commit b2cfdb10bfaedd00c1af249cfe8ec2df816e8c03

Authored by qianbao
1 parent 80001927

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

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"))){