diff --git a/src/main/java/cn/bugstack/xfg/frame/controller/UserController.java b/src/main/java/cn/bugstack/xfg/frame/controller/UserController.java index 0ec17141f1e6b300364d03f6a0120ee3072db969..4904cbcc6ae533dbaa789535dc0a077689f0d086 100644 --- a/src/main/java/cn/bugstack/xfg/frame/controller/UserController.java +++ b/src/main/java/cn/bugstack/xfg/frame/controller/UserController.java @@ -43,6 +43,9 @@ public class UserController { @RequestMapping("/queryAI") public String queryAI() throws IOException { + // todo 构建ai (提示词) + // todo 根据上一步拿到的aichat id 创建一个session + // 构建请求参数 KeySensorCompletionReq.KeySensorCompletionReqBuilder reqBuilder = KeySensorCompletionReq.builder() .question("请给我一个5个字") @@ -50,7 +53,6 @@ public class UserController { Call call = knowledgeCenterService.getCompletions("Bearer ragflow-djN2QwZjc0YTNlNzExZjBiYjBlNDIwMT", reqBuilder.build(), "56a8f80aa85911f08a8a42010a8e0005"); CompletionRes completionRes = call.execute().body(); log.info("completionRes: {}", completionRes); - return "test"; } diff --git a/src/main/java/cn/bugstack/xfg/frame/domain/req/KSReq.java b/src/main/java/cn/bugstack/xfg/frame/domain/req/KSReq.java new file mode 100644 index 0000000000000000000000000000000000000000..521f7b5341f66c884f193cbadea519088b484995 --- /dev/null +++ b/src/main/java/cn/bugstack/xfg/frame/domain/req/KSReq.java @@ -0,0 +1,26 @@ +package cn.bugstack.xfg.frame.domain.req; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +import java.util.Map; + +/** + * @author Linnea + * @Description xx类 + * @Date 2025/10/18 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class KSReq { + private String id; + private Map contextInfo; + private List sensorNameList; + private Map epqInfo; + private String moduleName; +} diff --git a/src/main/java/cn/bugstack/xfg/frame/domain/req/KeySensorCompletionReq.java b/src/main/java/cn/bugstack/xfg/frame/domain/req/KeySensorCompletionReq.java index f3bba102acfadf234d614534340e9e85a41d5a75..592e255595ab61ff243f231ed0b432aff0d8ebb6 100644 --- a/src/main/java/cn/bugstack/xfg/frame/domain/req/KeySensorCompletionReq.java +++ b/src/main/java/cn/bugstack/xfg/frame/domain/req/KeySensorCompletionReq.java @@ -1,7 +1,6 @@ package cn.bugstack.xfg.frame.domain.req; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; @@ -20,3 +19,4 @@ public class KeySensorCompletionReq extends CompletionBaseReq{ private String session_id; private String user_id; } + diff --git a/src/main/java/cn/bugstack/xfg/frame/service/IPromptService.java b/src/main/java/cn/bugstack/xfg/frame/service/IPromptService.java new file mode 100644 index 0000000000000000000000000000000000000000..2e2310ec2293bf1f98a995dfc539e9d408d25c14 --- /dev/null +++ b/src/main/java/cn/bugstack/xfg/frame/service/IPromptService.java @@ -0,0 +1,69 @@ +package cn.bugstack.xfg.frame.service; + +import cn.bugstack.xfg.frame.domain.req.KSReq; + +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * @author Linnea + * @Description xx类 + * @Date 2025/10/18 + */ +public class IPromptService { + private String buildBatchPrompt(List ksReqs){ + StringBuilder batchPrompt = new StringBuilder(); + + for (KSReq ksReq : ksReqs) { + String singlePrompt = buildSinglePrompt(ksReq); + batchPrompt.append(singlePrompt); + batchPrompt.append(singlePrompt); + } + + return batchPrompt.toString(); + } + + private String buildSinglePrompt(KSReq ksReq){ + String multiLineTemplate = + "【待评分的批次ID】:%s\n" + + "【待评分的SVID列表】:%s\n" + + "【该批次SVID对应的设备信息】:设备厂商:%s;设备类型:%s\n" + + "【该批次SVID响应的上下文为】:产品ID: %s,工艺ID: %s,其他的上下文信息: %s"; + + // 定义需要排除的固定字段集合 + Set excludeKeys = new HashSet<>(); + excludeKeys.add("productID"); + excludeKeys.add("recipeID"); + + String batchId = ksReq.getId(); + String sensorNameList = String.join(",", ksReq.getSensorNameList()); + + Map contextInfoMap = ksReq.getContextInfo(); + + String productId = ksReq.getContextInfo().get("productID"); + String recipeId = ksReq.getContextInfo().get("recipeID"); + + StringBuilder otherContextIdStr = new StringBuilder(); + for(Map.Entry contextInfoEntry : contextInfoMap.entrySet()){ + String key = contextInfoEntry.getKey(); + String value = contextInfoEntry.getValue(); + if (!excludeKeys.contains(key)) { + otherContextIdStr.append(key).append(":").append(value).append(", "); + } + } + + return String.format( + multiLineTemplate + , batchId + , sensorNameList + , ksReq.getContextInfo().get("device_manufacturer") + , ksReq.getContextInfo().get("device_type") + , productId + , recipeId + , otherContextIdStr + ); + } +}