From 4194d522190d26e962a816e82df3107b4825502f Mon Sep 17 00:00:00 2001 From: Linnea Lin <1604326066@qq.com> Date: Sun, 19 Oct 2025 18:41:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=A1=A5=E5=85=85=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E8=AF=8D=E6=9E=84=E5=BB=BA=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xfg/frame/controller/UserController.java | 4 +- .../bugstack/xfg/frame/domain/req/KSReq.java | 26 +++++++ .../domain/req/KeySensorCompletionReq.java | 2 +- .../xfg/frame/service/IPromptService.java | 69 +++++++++++++++++++ 4 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 src/main/java/cn/bugstack/xfg/frame/domain/req/KSReq.java create mode 100644 src/main/java/cn/bugstack/xfg/frame/service/IPromptService.java 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 0ec1714..4904cbc 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 0000000..521f7b5 --- /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 f3bba10..592e255 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 0000000..2e2310e --- /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 + ); + } +} -- GitLab