Commit b2cfdb10bfaedd00c1af249cfe8ec2df816e8c03

Authored by qianbao
1 parent 80001927

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

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