diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/chat/impl/AbstractStreamingChatService.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/chat/impl/AbstractStreamingChatService.java index a5f7e003..c8389004 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/chat/impl/AbstractStreamingChatService.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/chat/impl/AbstractStreamingChatService.java @@ -98,6 +98,8 @@ public abstract class AbstractStreamingChatService implements IChatService { } } catch (Exception e) { + SseMessageUtils.sendMessage(userId, "对话出错:" + e.getMessage()); + SseMessageUtils.completeConnection(userId, tokenValue); log.error("{}请求失败:{}", getProviderName(), e.getMessage(), e); } return emitter; @@ -223,6 +225,21 @@ public abstract class AbstractStreamingChatService implements IChatService { @Override public void onError(Throwable error) { log.error("{}流式响应错误: {}", getProviderName(), error.getMessage(), error); + + // 发送错误消息到前端 + try { + String errorMessage = String.format("模型调用失败: %s", error.getMessage()); + SseMessageUtils.sendMessage(userId, errorMessage); + } catch (Exception e) { + log.error("发送错误消息失败: {}", e.getMessage(), e); + } + + // 关闭SSE连接,避免前端一直等待 + try { + SseMessageUtils.completeConnection(userId, tokenValue); + } catch (Exception e) { + log.error("关闭SSE连接失败: {}", e.getMessage(), e); + } } }; }