From 8e5472d9529e8759c68299e98d5004cc8aa61e3e Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期五, 12 十二月 2025 15:23:06 +0800
Subject: [PATCH] #AI
---
src/main/java/com/zy/ai/service/WcsDiagnosisService.java | 84 ++++++++++++++++++++---------------------
src/main/resources/application.yml | 7 ++-
2 files changed, 46 insertions(+), 45 deletions(-)
diff --git a/src/main/java/com/zy/ai/service/WcsDiagnosisService.java b/src/main/java/com/zy/ai/service/WcsDiagnosisService.java
index e5ab278..e3850c6 100644
--- a/src/main/java/com/zy/ai/service/WcsDiagnosisService.java
+++ b/src/main/java/com/zy/ai/service/WcsDiagnosisService.java
@@ -50,10 +50,9 @@
);
messages.add(system);
- // 2. user锛氭妸鍏蜂綋鐨勬暟鎹粍缁囨垚鏂囨湰锛圝SON 褰㈠紡鏂逛究妯″瀷鐪嬬粨鏋勶級
ChatCompletionRequest.Message user = new ChatCompletionRequest.Message();
user.setRole("user");
- user.setContent(buildUserContent(request));
+ user.setContent(buildDiagnosisUserContent(request));
messages.add(user);
// 璋冪敤澶фā鍨�
@@ -86,47 +85,12 @@
ChatCompletionRequest.Message user = new ChatCompletionRequest.Message();
user.setRole("user");
- user.setContent(buildUserContent(request));
+ user.setContent(buildDiagnosisUserContent(request));
messages.add(user);
llmChatService.chatStream(messages, 0.2, 2048, s -> {
try {
// SSE 鍗忚涓嶅厑璁稿師鏍锋惡甯︽崲琛岋紝鍏堣浆涓� \n 浼犺緭锛屽墠绔啀杩樺師
- String safe = s == null ? "" : s.replace("\r", "").replace("\n", "\\n");
- if (!safe.isEmpty()) {
- emitter.send(SseEmitter.event().data(safe));
- }
- } catch (Exception ignore) {}
- }, () -> {
- try { emitter.complete(); } catch (Exception ignore) {}
- }, e -> {
- try { emitter.completeWithError(e); } catch (Exception ignore) {}
- });
- }
-
- public void askStream(WcsDiagnosisRequest request, String prompt, SseEmitter emitter) {
- List<ChatCompletionRequest.Message> messages = new ArrayList<>();
-
- ChatCompletionRequest.Message system = new ChatCompletionRequest.Message();
- system.setRole("system");
- system.setContent(
- "浣犳槸涓�鍚嶈祫娣� WCS锛堜粨鍌ㄦ帶鍒剁郴缁燂級涓庤嚜鍔ㄥ寲绔嬪簱涓撳锛岀啛鎮夛細鍫嗗灈鏈恒�佽緭閫佺嚎銆佹彁鍗囨満銆佺┛姊溅绛夎澶囩殑浠诲姟鍒嗛厤鍜岃繍琛岄�昏緫锛屼篃鐔熸倝甯歌鐨勭郴缁熷崱姝汇�佷换鍔′笉鎵ц銆佽澶囩┖闂蹭絾鏃犱换鍔$瓑闂妯″紡銆俓n\n" +
- "鍦ㄥ洖绛旂敤鎴烽棶棰樻椂锛岄渶瑕佺粨鍚堜笅闈㈢粰鍑虹殑绯荤粺褰撳墠涓婁笅鏂囦俊鎭紙浠诲姟銆佽澶囧疄鏃剁姸鎬併�佽澶囬厤缃�佺郴缁熸棩蹇楃瓑锛夛紝浠ョ畝娲併�佹槑纭殑涓枃浣滅瓟锛屽苟鍦ㄩ渶瑕佹椂缁欏嚭鍙墽琛岀殑鎺掓煡寤鸿銆�"
- );
- messages.add(system);
-
- ChatCompletionRequest.Message contextMsg = new ChatCompletionRequest.Message();
- contextMsg.setRole("user");
- contextMsg.setContent(buildUserContent(request));
- messages.add(contextMsg);
-
- ChatCompletionRequest.Message questionMsg = new ChatCompletionRequest.Message();
- questionMsg.setRole("user");
- questionMsg.setContent("銆愮敤鎴锋彁闂�慭n" + (prompt == null ? "" : prompt));
- messages.add(questionMsg);
-
- llmChatService.chatStream(messages, 0.2, 2048, s -> {
- try {
String safe = s == null ? "" : s.replace("\r", "").replace("\n", "\\n");
if (!safe.isEmpty()) {
emitter.send(SseEmitter.event().data(safe));
@@ -178,7 +142,7 @@
ChatCompletionRequest.Message contextMsg = new ChatCompletionRequest.Message();
contextMsg.setRole("user");
- contextMsg.setContent(buildUserContent(request));
+ contextMsg.setContent(buildAskUserContent(request));
base.add(contextMsg);
ChatCompletionRequest.Message questionMsg = new ChatCompletionRequest.Message();
@@ -295,14 +259,12 @@
return p.length() > 20 ? p.substring(0, 20) : p;
}
- private String buildUserContent(WcsDiagnosisRequest request) {
+ private String buildDiagnosisUserContent(WcsDiagnosisRequest request) {
StringBuilder sb = new StringBuilder();
- sb.append("銆愰棶棰樻弿杩般�慭n");
if (request.getAlarmMessage() != null && !request.getAlarmMessage().isEmpty()) {
+ sb.append("銆愰棶棰樻弿杩般�慭n");
sb.append(request.getAlarmMessage()).append("\n\n");
- } else {
- sb.append("绯荤粺褰撳墠涓嶆墽琛屼换鍔★紝浣嗗叿浣撳師鍥犱笉鏄庯紝璇锋牴鎹互涓嬩俊鎭府鍔╁垽鏂�俓n\n");
}
sb.append("銆愯澶囦俊鎭�慭n");
@@ -361,4 +323,40 @@
return sb.toString();
}
+
+ private String buildAskUserContent(WcsDiagnosisRequest request) {
+ StringBuilder sb = new StringBuilder();
+
+ if (request.getExtraContext() != null && !request.getExtraContext().isEmpty()) {
+ sb.append("銆愰澶栦笂涓嬫枃 extraContext銆慭n");
+ sb.append(JSON.toJSONString(request.getExtraContext(), true)).append("\n\n");
+ }
+
+ if (request.getTasks() != null && !request.getTasks().isEmpty()) {
+ sb.append("銆愪换鍔′俊鎭� tasks銆慭n");
+ sb.append("涓嬮潰鏄綋鍓嶇浉鍏充换鍔″垪琛ㄧ殑 JSON 鏁版嵁锛歕n");
+ sb.append(JSON.toJSONString(request.getTasks(), true)).append("\n\n");
+ }
+
+ if (request.getDeviceRealtimeData() != null && !request.getDeviceRealtimeData().isEmpty()) {
+ sb.append("銆愯澶囧疄鏃舵暟鎹� deviceRealtimeData銆慭n");
+ sb.append("涓嬮潰鏄悇璁惧褰撳墠瀹炴椂鐘舵�佺殑 JSON 鏁版嵁锛歕n");
+ sb.append(JSON.toJSONString(request.getDeviceRealtimeData(), true)).append("\n\n");
+ }
+
+ if (request.getDeviceConfigs() != null && !request.getDeviceConfigs().isEmpty()) {
+ sb.append("銆愯澶囬厤缃俊鎭� deviceConfigs銆慭n");
+ sb.append("涓嬮潰鏄悇璁惧閰嶇疆鐨� JSON 鏁版嵁锛歕n");
+ sb.append(JSON.toJSONString(request.getDeviceConfigs(), true)).append("\n\n");
+ }
+
+ sb.append("銆愮郴缁熸棩蹇� logs锛堟寜鏃堕棿椤哄簭锛夈�慭n");
+ if (request.getLogs() != null && !request.getLogs().isEmpty()) {
+ for (String logLine : request.getLogs()) {
+ sb.append(logLine).append("\n");
+ }
+ }
+
+ return sb.toString();
+ }
}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 011d12e..eac702e 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -68,6 +68,9 @@
expireDays: 7
llm:
- base-url: https://api.siliconflow.cn/v1
- api-key: sk-sxdtebtquwrugzrmaqqqkzdzmrgzhzmplwwuowysdasccent
+# base-url: https://api.siliconflow.cn/v1
+# api-key: sk-sxdtebtquwrugzrmaqqqkzdzmrgzhzmplwwuowysdasccent
+# model: deepseek-ai/DeepSeek-V3.2
+ base-url: http://47.76.147.249:9998/e/7g7kqxxt1ei2un71
+ api-key: app-mP0O6aY5WpbfaHs7BNnjVkli
model: deepseek-ai/DeepSeek-V3.2
--
Gitblit v1.9.1