From f98c8bc665875e1e7795a332d8d0e7fd9e50fda1 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 12 三月 2026 11:18:26 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/ai/service/WcsDiagnosisService.java | 54 +++++++++++-------------------------------------------
1 files changed, 11 insertions(+), 43 deletions(-)
diff --git a/src/main/java/com/zy/ai/service/WcsDiagnosisService.java b/src/main/java/com/zy/ai/service/WcsDiagnosisService.java
index 189e57d..83f0380 100644
--- a/src/main/java/com/zy/ai/service/WcsDiagnosisService.java
+++ b/src/main/java/com/zy/ai/service/WcsDiagnosisService.java
@@ -5,13 +5,12 @@
import com.zy.ai.entity.ChatCompletionRequest;
import com.zy.ai.entity.ChatCompletionResponse;
import com.zy.ai.entity.WcsDiagnosisRequest;
-import com.zy.ai.mcp.controller.McpController;
+import com.zy.ai.mcp.service.SpringAiMcpToolManager;
import com.zy.ai.utils.AiPromptUtils;
import com.zy.ai.utils.AiUtils;
import com.zy.common.utils.RedisUtil;
import com.zy.core.enums.RedisKeyType;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -28,8 +27,6 @@
private static final long CHAT_TTL_SECONDS = 7L * 24 * 3600;
- @Value("${llm.platform}")
- private String platform;
@Autowired
private LlmChatService llmChatService;
@Autowired
@@ -39,9 +36,7 @@
@Autowired
private AiUtils aiUtils;
@Autowired(required = false)
- private McpController mcpController;
- @Autowired
- private PythonService pythonService;
+ private SpringAiMcpToolManager mcpToolManager;
public void diagnoseStream(WcsDiagnosisRequest request, SseEmitter emitter) {
List<ChatCompletionRequest.Message> messages = new ArrayList<>();
@@ -85,7 +80,7 @@
try {
try { emitter.send(SseEmitter.event().data("銆怉I銆戣繍琛屽凡鍋滄锛堝紓甯革級")); } catch (Exception ignore) {}
log.error("AI diagnose stream stopped: error", e);
- emitter.completeWithError(e);
+ emitter.complete();
} catch (Exception ignore) {}
});
}
@@ -95,11 +90,6 @@
String chatId,
boolean reset,
SseEmitter emitter) {
- if (platform.equals("python")) {
- pythonService.runPython(prompt, chatId, emitter);
- return;
- }
-
List<ChatCompletionRequest.Message> messages = new ArrayList<>();
List<ChatCompletionRequest.Message> history = null;
@@ -187,7 +177,10 @@
emitter.complete();
} catch (Exception ignore) {}
}, e -> {
- try { emitter.completeWithError(e); } catch (Exception ignore) {}
+ try {
+ try { emitter.send(SseEmitter.event().data("銆怉I銆戣繍琛屽凡鍋滄锛堝紓甯革級")); } catch (Exception ignore) {}
+ emitter.complete();
+ } catch (Exception ignore) {}
});
}
@@ -264,8 +257,8 @@
SseEmitter emitter,
String chatId) {
try {
- if (mcpController == null) return false;
- List<Object> tools = buildOpenAiTools();
+ if (mcpToolManager == null) return false;
+ List<Object> tools = mcpToolManager.buildOpenAiTools();
if (tools.isEmpty()) return false;
baseMessages.add(systemPrompt);
@@ -310,7 +303,7 @@
}
Object output;
try {
- output = mcpController.callTool(toolName, args);
+ output = mcpToolManager.callTool(toolName, args);
} catch (Exception e) {
java.util.LinkedHashMap<String, Object> err = new java.util.LinkedHashMap<String, Object>();
err.put("tool", toolName);
@@ -380,7 +373,7 @@
try {
sse(emitter, "\\n\\n銆怉I銆戣繍琛屽凡鍋滄锛堝紓甯革級\\n\\n");
log.error("AI MCP diagnose stopped: error", e);
- emitter.completeWithError(e);
+ emitter.complete();
} catch (Exception ignore) {}
return true;
}
@@ -393,31 +386,6 @@
} catch (Exception e) {
log.warn("SSE send failed", e);
}
- }
-
- private List<Object> buildOpenAiTools() {
- if (mcpController == null) return java.util.Collections.emptyList();
- List<Map<String, Object>> mcpTools = mcpController.listTools();
- if (mcpTools == null || mcpTools.isEmpty()) return java.util.Collections.emptyList();
-
- List<Object> tools = new ArrayList<>();
- for (Map<String, Object> t : mcpTools) {
- if (t == null) continue;
- Object name = t.get("name");
- if (name == null) continue;
- Object inputSchema = t.get("inputSchema");
- java.util.LinkedHashMap<String, Object> function = new java.util.LinkedHashMap<String, Object>();
- function.put("name", String.valueOf(name));
- Object desc = t.get("description");
- if (desc != null) function.put("description", String.valueOf(desc));
- function.put("parameters", inputSchema == null ? new java.util.LinkedHashMap<String, Object>() : inputSchema);
-
- java.util.LinkedHashMap<String, Object> tool = new java.util.LinkedHashMap<String, Object>();
- tool.put("type", "function");
- tool.put("function", function);
- tools.add(tool);
- }
- return tools;
}
private void sendLargeText(SseEmitter emitter, String text) {
--
Gitblit v1.9.1