diff --git a/src/main/java/com/xly/agent/ErpAiAgent.java b/src/main/java/com/xly/agent/ErpAiAgent.java index d44f8a1..581b9e4 100644 --- a/src/main/java/com/xly/agent/ErpAiAgent.java +++ b/src/main/java/com/xly/agent/ErpAiAgent.java @@ -22,15 +22,6 @@ public interface ErpAiAgent { @UserMessage("用户输入:{{userInput}}") String chat(@MemoryId String userId, @V("userInput") String userInput); - @SystemMessage("{{stoolDesc}}") - @UserMessage("用户输入:{{userInput}}") - String chatCurrentTool(@MemoryId String userId, - @V("userInput") String userInput, - @V("sMethodNo") String sMethodNo, - @V("sMethodName") String sMethodName, - @V("stoolDesc") String stoolDesc - ); - /** * 动态表结构:自然语言解释SQL执行结果 * 入参:用户问题、执行的SQL、表结构、JSON格式结果 diff --git a/src/main/java/com/xly/service/XlyErpService.java b/src/main/java/com/xly/service/XlyErpService.java index cbccb7f..73ed17d 100644 --- a/src/main/java/com/xly/service/XlyErpService.java +++ b/src/main/java/com/xly/service/XlyErpService.java @@ -117,16 +117,16 @@ public class XlyErpService { return getChatiAgent (input,session); } //用户输入添加方法 - String sResponMessage = StrUtil.EMPTY; + String sResponMessage = aiAgent.chat(userId, input); if(ObjectUtil.isNotEmpty(session.getCurrentTool()) && !ObjectUtil.isNotEmpty(session.getCurrentTool().getSInputTabelName()) ){ input = session.getCurrentTool().getSMethodName()+","+input; - sResponMessage = aiAgent.chatCurrentTool(userId, input,session.getCurrentTool().getSMethodNo(),session.getCurrentTool().getSMethodName(),session.getCurrentTool().getStoolDesc()); - }else{ - sResponMessage = aiAgent.chat(userId, input); } - + //动态方法或返回需要提示的信息 + if(ObjectUtil.isNotEmpty(session.getSFunPrompts())){ + return AiResponseDTO.builder().sSceneName(sceneName).sMethodName(methodName).aiText(session.getSFunPrompts()).sReturnType(ReturnTypeCode.HTML.getCode()).build(); + } // 1.找到方法并且本方法带表结构描述时,需要调用 自然语言转SQL智能体 if((ObjectUtil.isNotEmpty(session.getCurrentTool()) && ObjectUtil.isNotEmpty(session.getCurrentTool().getSInputTabelName()) diff --git a/src/main/java/com/xly/tool/DynamicToolProvider.java b/src/main/java/com/xly/tool/DynamicToolProvider.java index 4460659..1269893 100644 --- a/src/main/java/com/xly/tool/DynamicToolProvider.java +++ b/src/main/java/com/xly/tool/DynamicToolProvider.java @@ -572,7 +572,27 @@ public class DynamicToolProvider implements ToolProvider { finalArgs.put(k,v); } }); - session.setArgs(finalArgs); + // 2 【补全动态参数】动态参数补全 + try{ + args = applyValues(args, meta.getParamRuleListCheck()); + }catch (Exception e){ + log.error("返回信息",e); + String askMsg = e.getMessage(); + session.setSFunPrompts(askMsg); + return String.valueOf(successResult(toolExecutionRequest, askMsg)); + } + List paramRuleData = meta.getParamRuleListAll(); + // 2.1 【自动补全】应用参数的默认值 + args = applyDefaultValues(args, paramRuleData); + session.setArgs(args); + // 3. 【自动校验】检查必填项 + List missing = checkRequiredParams(args, paramRuleData); + if (!missing.isEmpty()) { + // 4.1 参数缺失,生成“提问”消息,直接返给客户 + String askMsg = buildAskUserMessage(meta, missing,args); + session.setSFunPrompts(askMsg); + return String.valueOf(successResult(toolExecutionRequest, askMsg)); + } // 2. 获取必填参数规则 // List sParamRules = meta.getParamRuleListCheck(); // List missingParams = getRequiredParams(sParamRules); @@ -585,25 +605,6 @@ public class DynamicToolProvider implements ToolProvider { public String doDynamicTool(ToolMeta meta,UserSceneSession session) { List paramRuleData = meta.getParamRuleListAll(); Map args = session.getArgs(); - Map argsOld = new HashMap<>(args); - // 2 【补全动态参数】动态参数补全 - try{ - args = applyValues(args, meta.getParamRuleListCheck()); - }catch (Exception e){ - log.error("返回信息",e); - String sTsMsg = e.getMessage(); - return sTsMsg; - } - // 2.1 【自动补全】应用参数的默认值 - args = applyDefaultValues(args, paramRuleData); - session.setArgs(args); - // 3. 【自动校验】检查必填项 - List missing = checkRequiredParams(args, paramRuleData); - if (!missing.isEmpty()) { - // 4.1 参数缺失,生成“提问”消息,直接返给客户 - String askMsg = buildAskUserMessage(meta, missing,args); - return askMsg; - } // 6. 【最终确认信息】所有检测通过后,需要和客户确认交互 List chatMessage = operableChatMemoryProvider.getCurrentChatMessages(session.getUserId());