Commit 01801a7afc9ddc7de26ba1c6cb5f1dfcdab64410

Authored by qianbao
1 parent a3e3d139

AI添加问题 历史问题记录

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());