From af3304011728e03872c72d8f3b5a8cd1715f47db Mon Sep 17 00:00:00 2001 From: ageerle Date: Fri, 11 Apr 2025 10:45:02 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=AF=AD=E9=9F=B3=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/chat/openai/OpenAiStreamClient.java | 5 ----- .../chat/service/chat/impl/SseServiceImpl.java | 18 ++++++++++++------ 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiStreamClient.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiStreamClient.java index e7992022..381e4d7a 100644 --- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiStreamClient.java +++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiStreamClient.java @@ -593,11 +593,6 @@ public class OpenAiStreamClient { } - - - - - /** * 构造 * diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java index 80c2d8e4..357280d8 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java @@ -70,7 +70,7 @@ import java.util.concurrent.atomic.AtomicReference; @RequiredArgsConstructor public class SseServiceImpl implements ISseService { - private OpenAiStreamClient openAiStreamClient; + private final OpenAiStreamClient openAiStreamClient; private final ChatConfig chatConfig; @@ -88,6 +88,8 @@ public class SseServiceImpl implements ISseService { private static final ObjectMapper mapper = new ObjectMapper(); + private OpenAiStreamClient openAiModelStreamClient; + @Override public SseEmitter sseChat(ChatRequest chatRequest, HttpServletRequest request) { SseEmitter sseEmitter = new SseEmitter(0L); @@ -100,8 +102,13 @@ public class SseServiceImpl implements ISseService { if (StpUtil.isLogin()) { // 通过模型名称查询模型信息 ChatModelVo chatModelVo = chatModelService.selectModelByName(chatRequest.getModel()); - // 构建api请求客户端 - openAiStreamClient = chatConfig.createOpenAiStreamClient(chatModelVo.getApiHost(), chatModelVo.getApiKey()); + if(chatModelVo!=null){ + // 通过模型信息构建请求客户端 + openAiModelStreamClient = chatConfig.createOpenAiStreamClient(chatModelVo.getApiHost(), chatModelVo.getApiKey()); + }else { + // 使用默认客户端 + openAiModelStreamClient = openAiStreamClient; + } // 设置默认提示词 Message sysMessage = Message.builder().content(chatModelVo.getSystemPrompt()).role(Message.Role.SYSTEM).build(); messages.add(0,sysMessage); @@ -167,7 +174,7 @@ public class SseServiceImpl implements ISseService { .model(chatRequest.getModel()) .stream(chatRequest.getStream()) .build(); - openAiStreamClient.streamChatCompletion(completion, openAIEventSourceListener); + openAiModelStreamClient.streamChatCompletion(completion, openAIEventSourceListener); // 保存消息记录 并扣除费用 chatCostService.deductToken(chatRequest); } catch (Exception e) { @@ -192,7 +199,7 @@ public class SseServiceImpl implements ISseService { try { sseEmitter.send(event); } catch (IOException e) { - log.error("发送事件失败: {}", e.getMessage()); + log.error("SSE发送失败: {}", e.getMessage()); } sseEmitter.complete(); } @@ -248,7 +255,6 @@ public class SseServiceImpl implements ISseService { if (!FileUtils.isValidFileExtention(file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION)) { throw new IllegalStateException("File Extention not supported"); } - openAiStreamClient = chatConfig.getOpenAiStreamClient(); return openAiStreamClient.uploadFile("fine-tune", convertMultiPartToFile(file)); }