From af3304011728e03872c72d8f3b5a8cd1715f47db Mon Sep 17 00:00:00 2001
From: ageerle <ageerle@163.com>
Date: 星期五, 11 四月 2025 10:45:02 +0800
Subject: [PATCH] fix: 语音功能无法使用

---
 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java |   18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)

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 80c2d8e..357280d 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 @@
 @RequiredArgsConstructor
 public class SseServiceImpl implements ISseService {
 
-    private OpenAiStreamClient openAiStreamClient;
+    private final OpenAiStreamClient openAiStreamClient;
 
     private final ChatConfig chatConfig;
 
@@ -88,6 +88,8 @@
 
     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 @@
             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 @@
                     .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 @@
         try {
             sseEmitter.send(event);
         } catch (IOException e) {
-            log.error("鍙戦�佷簨浠跺け璐�: {}", e.getMessage());
+            log.error("SSE鍙戦�佸け璐�: {}", e.getMessage());
         }
         sseEmitter.complete();
     }
@@ -248,7 +255,6 @@
         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));
     }
 

--
Gitblit v1.9.3