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