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 | 22 | @UserMessage("用户输入:{{userInput}}") |
| 23 | 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 | 26 | * 动态表结构:自然语言解释SQL执行结果 |
| 36 | 27 | * 入参:用户问题、执行的SQL、表结构、JSON格式结果 | ... | ... |
src/main/java/com/xly/service/XlyErpService.java
| ... | ... | @@ -117,16 +117,16 @@ public class XlyErpService { |
| 117 | 117 | return getChatiAgent (input,session); |
| 118 | 118 | } |
| 119 | 119 | //用户输入添加方法 |
| 120 | - String sResponMessage = StrUtil.EMPTY; | |
| 120 | + String sResponMessage = aiAgent.chat(userId, input); | |
| 121 | 121 | if(ObjectUtil.isNotEmpty(session.getCurrentTool()) |
| 122 | 122 | && !ObjectUtil.isNotEmpty(session.getCurrentTool().getSInputTabelName()) |
| 123 | 123 | ){ |
| 124 | 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 | 130 | // 1.找到方法并且本方法带表结构描述时,需要调用 自然语言转SQL智能体 |
| 131 | 131 | if((ObjectUtil.isNotEmpty(session.getCurrentTool()) |
| 132 | 132 | && ObjectUtil.isNotEmpty(session.getCurrentTool().getSInputTabelName()) | ... | ... |
src/main/java/com/xly/tool/DynamicToolProvider.java
| ... | ... | @@ -572,7 +572,27 @@ public class DynamicToolProvider implements ToolProvider { |
| 572 | 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 | 596 | // 2. 获取必填参数规则 |
| 577 | 597 | // List<ParamRule> sParamRules = meta.getParamRuleListCheck(); |
| 578 | 598 | // List<String> missingParams = getRequiredParams(sParamRules); |
| ... | ... | @@ -585,25 +605,6 @@ public class DynamicToolProvider implements ToolProvider { |
| 585 | 605 | public String doDynamicTool(ToolMeta meta,UserSceneSession session) { |
| 586 | 606 | List<ParamRule> paramRuleData = meta.getParamRuleListAll(); |
| 587 | 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 | 609 | // 6. 【最终确认信息】所有检测通过后,需要和客户确认交互 |
| 609 | 610 | List<ChatMessage> chatMessage = operableChatMemoryProvider.getCurrentChatMessages(session.getUserId()); | ... | ... |