Commit a14f98e15ae57e8dc81a920faa9cfa49b016e5bc

Authored by qianbao
1 parent 4f8672b2

AI 对于时间的处理

src/main/java/com/xly/agent/ErpAiAgent.java
... ... @@ -11,12 +11,13 @@ import dev.langchain4j.service.V;
11 11 */
12 12 public interface ErpAiAgent {
13 13 @SystemMessage("""
14   - 你是一个专业的 工具方法匹配与参数提取 助手,核心职责是根据用户输入(含历史对话)精准匹配工具方法、提取参数、判断缺失并生成交互式补全提示;
15   - 按严格按以下步骤处理,无任何额外输出!规则如下:
16   - 1. 方法匹配:先精准拆解用户查询的核心业务意图,再自动匹配唯一符合用户问题的工具方法(MethodNo),禁止自创;
17   - 2. 参数提取:提取该工具的全部参数,与描述完全一致,严格按标注类型赋值,规则如下:
18   - 2.1 数字无引号,为空时禁止赋值0;
19   - 2.2 如果有空格需要去掉空格后再提取。
  14 + 1. 方法匹配:先精准拆解用户查询的核心业务意图,再自动匹配唯一符合用户问题的工具方法(MethodNo),禁止自创,规则如下;
  15 + 1.1 匹配方法时,无需考虑工具描述(@TOOL)中 1.必填参数,2.选填参数,示例,parameters内容 四个部分的内容;
  16 + 1.2 匹配方法时,只关注工具描述(@TOOL)中 “当用户” 和 “时,必须调用本工具”两个短语之间的内容;
  17 + 1.3 调用工具前,不需要询问用户提供缺失的参数
  18 + 2. 参数提取:提取该工具的全部参数,与描述完全一致,严格按标注类型赋值,规则如下:
  19 + 2.1 数字无引号,为空时禁止赋值0;
  20 + 2.2 如果有空格需要去掉空格后再提取。
20 21 """)
21 22 @UserMessage("用户输入:{{userInput}}")
22 23 String chat(@MemoryId String userId, @V("userInput") String userInput);
... ...
src/main/java/com/xly/service/XlyErpService.java
... ... @@ -373,6 +373,7 @@ public class XlyErpService {
373 373 .chatLanguageModel(chatModel)
374 374 .chatMemoryProvider(operableChatMemoryProvider)
375 375 .toolProvider(dynamicToolProvider)
  376 +// .toolChoice(ChatCompletionToolChoice.ofRequired()) // 👈 必须调用一个工具
376 377 .build();
377 378 UserSceneSessionService.ERP_AGENT_CACHE.put(userId, aiAgent);
378 379 // 初始化AiService 以防止热加载太慢 找不到相应的方法
... ...
src/main/java/com/xly/tool/DynamicToolProvider.java
... ... @@ -240,9 +240,7 @@ public class DynamicToolProvider implements ToolProvider {
240 240 // .append("1.全部数据生成多个单据 回复【全部确认】;2.全部数据生成一个单据 回复【合并确认】;3.按自然语义描述生成一个单据 如"1,3行确认"");
241 241 }
242 242 }
243   - if("boxQuote".equals(meta.getSMethodNo())){
244   - log.info(meta.getSParamRules());
245   - }
  243 +
246 244 try {
247 245 List<ParamRule> paramRuleData = meta.getParamRuleList();
248 246 // 1.必填参数:客户名称(字符串),产品名称(字符串),数量(数字);
... ... @@ -535,7 +533,7 @@ public class DynamicToolProvider implements ToolProvider {
535 533 // Map<String, Object> argsOld = DeepCopyUtils.deepCopy(args);
536 534 List<ParamRule> paramRuleData = meta.getParamRuleListAll();
537 535 // 2. 【自动补全】应用参数的默认值
538   -// args = applyDefaultValues(args, paramRuleData);
  536 + args = applyDefaultValues(args, paramRuleData);
539 537  
540 538 // 2.1 【补全动态参数】动态参数补全
541 539 try{
... ...