package com.zy.ai.service; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; @Slf4j @Component public class PythonService { @Autowired private LlmChatService llmChatService; public boolean runPython(String prompt, String chatId, SseEmitter emitter) { try { llmChatService.chatStreamRunPython(prompt, chatId, s -> { try { String safe = s == null ? "" : s.replace("\r", "").replace("\n", "\\n"); if (!safe.isEmpty()) { sse(emitter, safe); } } catch (Exception ignore) { } }, () -> { try { sse(emitter, "\\n\\n【AI】运行已停止(正常结束)\\n\\n"); log.info("AI MCP diagnose stopped: final end"); emitter.complete(); } catch (Exception ignore) { } }, e -> { sse(emitter, "\\n\\n【AI】分析出错,正在回退...\\n\\n"); }); return true; } catch (Exception e) { try { sse(emitter, "\\n\\n【AI】运行已停止(异常)\\n\\n"); log.error("AI MCP diagnose stopped: error", e); emitter.completeWithError(e); } catch (Exception ignore) {} return true; } } private void sse(SseEmitter emitter, String data) { if (data == null) return; try { emitter.send(SseEmitter.event().data(data)); } catch (Exception e) { log.warn("SSE send failed", e); } } }