Commit 01801a7afc9ddc7de26ba1c6cb5f1dfcdab64410
1 parent
a3e3d139
AI添加问题 历史问题记录
Showing
3 changed files
with
26 additions
and
34 deletions
src/main/java/com/xly/agent/ErpAiAgent.java
| @@ -22,15 +22,6 @@ public interface ErpAiAgent { | @@ -22,15 +22,6 @@ public interface ErpAiAgent { | ||
| 22 | @UserMessage("用户输入:{{userInput}}") | 22 | @UserMessage("用户输入:{{userInput}}") |
| 23 | String chat(@MemoryId String userId, @V("userInput") String userInput); | 23 | String chat(@MemoryId String userId, @V("userInput") String userInput); |
| 24 | 24 | ||
| 25 | - @SystemMessage("{{stoolDesc}}") | ||
| 26 | - @UserMessage("用户输入:{{userInput}}") | ||
| 27 | - String chatCurrentTool(@MemoryId String userId, | ||
| 28 | - @V("userInput") String userInput, | ||
| 29 | - @V("sMethodNo") String sMethodNo, | ||
| 30 | - @V("sMethodName") String sMethodName, | ||
| 31 | - @V("stoolDesc") String stoolDesc | ||
| 32 | - ); | ||
| 33 | - | ||
| 34 | /** | 25 | /** |
| 35 | * 动态表结构:自然语言解释SQL执行结果 | 26 | * 动态表结构:自然语言解释SQL执行结果 |
| 36 | * 入参:用户问题、执行的SQL、表结构、JSON格式结果 | 27 | * 入参:用户问题、执行的SQL、表结构、JSON格式结果 |
src/main/java/com/xly/service/XlyErpService.java
| @@ -117,16 +117,16 @@ public class XlyErpService { | @@ -117,16 +117,16 @@ public class XlyErpService { | ||
| 117 | return getChatiAgent (input,session); | 117 | return getChatiAgent (input,session); |
| 118 | } | 118 | } |
| 119 | //用户输入添加方法 | 119 | //用户输入添加方法 |
| 120 | - String sResponMessage = StrUtil.EMPTY; | 120 | + String sResponMessage = aiAgent.chat(userId, input); |
| 121 | if(ObjectUtil.isNotEmpty(session.getCurrentTool()) | 121 | if(ObjectUtil.isNotEmpty(session.getCurrentTool()) |
| 122 | && !ObjectUtil.isNotEmpty(session.getCurrentTool().getSInputTabelName()) | 122 | && !ObjectUtil.isNotEmpty(session.getCurrentTool().getSInputTabelName()) |
| 123 | ){ | 123 | ){ |
| 124 | input = session.getCurrentTool().getSMethodName()+","+input; | 124 | input = session.getCurrentTool().getSMethodName()+","+input; |
| 125 | - sResponMessage = aiAgent.chatCurrentTool(userId, input,session.getCurrentTool().getSMethodNo(),session.getCurrentTool().getSMethodName(),session.getCurrentTool().getStoolDesc()); | ||
| 126 | - }else{ | ||
| 127 | - sResponMessage = aiAgent.chat(userId, input); | ||
| 128 | } | 125 | } |
| 129 | - | 126 | + //动态方法或返回需要提示的信息 |
| 127 | + if(ObjectUtil.isNotEmpty(session.getSFunPrompts())){ | ||
| 128 | + return AiResponseDTO.builder().sSceneName(sceneName).sMethodName(methodName).aiText(session.getSFunPrompts()).sReturnType(ReturnTypeCode.HTML.getCode()).build(); | ||
| 129 | + } | ||
| 130 | // 1.找到方法并且本方法带表结构描述时,需要调用 自然语言转SQL智能体 | 130 | // 1.找到方法并且本方法带表结构描述时,需要调用 自然语言转SQL智能体 |
| 131 | if((ObjectUtil.isNotEmpty(session.getCurrentTool()) | 131 | if((ObjectUtil.isNotEmpty(session.getCurrentTool()) |
| 132 | && ObjectUtil.isNotEmpty(session.getCurrentTool().getSInputTabelName()) | 132 | && ObjectUtil.isNotEmpty(session.getCurrentTool().getSInputTabelName()) |
src/main/java/com/xly/tool/DynamicToolProvider.java
| @@ -572,7 +572,27 @@ public class DynamicToolProvider implements ToolProvider { | @@ -572,7 +572,27 @@ public class DynamicToolProvider implements ToolProvider { | ||
| 572 | finalArgs.put(k,v); | 572 | finalArgs.put(k,v); |
| 573 | } | 573 | } |
| 574 | }); | 574 | }); |
| 575 | - session.setArgs(finalArgs); | 575 | + // 2 【补全动态参数】动态参数补全 |
| 576 | + try{ | ||
| 577 | + args = applyValues(args, meta.getParamRuleListCheck()); | ||
| 578 | + }catch (Exception e){ | ||
| 579 | + log.error("返回信息",e); | ||
| 580 | + String askMsg = e.getMessage(); | ||
| 581 | + session.setSFunPrompts(askMsg); | ||
| 582 | + return String.valueOf(successResult(toolExecutionRequest, askMsg)); | ||
| 583 | + } | ||
| 584 | + List<ParamRule> paramRuleData = meta.getParamRuleListAll(); | ||
| 585 | + // 2.1 【自动补全】应用参数的默认值 | ||
| 586 | + args = applyDefaultValues(args, paramRuleData); | ||
| 587 | + session.setArgs(args); | ||
| 588 | + // 3. 【自动校验】检查必填项 | ||
| 589 | + List<String> missing = checkRequiredParams(args, paramRuleData); | ||
| 590 | + if (!missing.isEmpty()) { | ||
| 591 | + // 4.1 参数缺失,生成“提问”消息,直接返给客户 | ||
| 592 | + String askMsg = buildAskUserMessage(meta, missing,args); | ||
| 593 | + session.setSFunPrompts(askMsg); | ||
| 594 | + return String.valueOf(successResult(toolExecutionRequest, askMsg)); | ||
| 595 | + } | ||
| 576 | // 2. 获取必填参数规则 | 596 | // 2. 获取必填参数规则 |
| 577 | // List<ParamRule> sParamRules = meta.getParamRuleListCheck(); | 597 | // List<ParamRule> sParamRules = meta.getParamRuleListCheck(); |
| 578 | // List<String> missingParams = getRequiredParams(sParamRules); | 598 | // List<String> missingParams = getRequiredParams(sParamRules); |
| @@ -585,25 +605,6 @@ public class DynamicToolProvider implements ToolProvider { | @@ -585,25 +605,6 @@ public class DynamicToolProvider implements ToolProvider { | ||
| 585 | public String doDynamicTool(ToolMeta meta,UserSceneSession session) { | 605 | public String doDynamicTool(ToolMeta meta,UserSceneSession session) { |
| 586 | List<ParamRule> paramRuleData = meta.getParamRuleListAll(); | 606 | List<ParamRule> paramRuleData = meta.getParamRuleListAll(); |
| 587 | Map<String, Object> args = session.getArgs(); | 607 | Map<String, Object> args = session.getArgs(); |
| 588 | - Map<String, Object> argsOld = new HashMap<>(args); | ||
| 589 | - // 2 【补全动态参数】动态参数补全 | ||
| 590 | - try{ | ||
| 591 | - args = applyValues(args, meta.getParamRuleListCheck()); | ||
| 592 | - }catch (Exception e){ | ||
| 593 | - log.error("返回信息",e); | ||
| 594 | - String sTsMsg = e.getMessage(); | ||
| 595 | - return sTsMsg; | ||
| 596 | - } | ||
| 597 | - // 2.1 【自动补全】应用参数的默认值 | ||
| 598 | - args = applyDefaultValues(args, paramRuleData); | ||
| 599 | - session.setArgs(args); | ||
| 600 | - // 3. 【自动校验】检查必填项 | ||
| 601 | - List<String> missing = checkRequiredParams(args, paramRuleData); | ||
| 602 | - if (!missing.isEmpty()) { | ||
| 603 | - // 4.1 参数缺失,生成“提问”消息,直接返给客户 | ||
| 604 | - String askMsg = buildAskUserMessage(meta, missing,args); | ||
| 605 | - return askMsg; | ||
| 606 | - } | ||
| 607 | 608 | ||
| 608 | // 6. 【最终确认信息】所有检测通过后,需要和客户确认交互 | 609 | // 6. 【最终确认信息】所有检测通过后,需要和客户确认交互 |
| 609 | List<ChatMessage> chatMessage = operableChatMemoryProvider.getCurrentChatMessages(session.getUserId()); | 610 | List<ChatMessage> chatMessage = operableChatMemoryProvider.getCurrentChatMessages(session.getUserId()); |