From 15c306eca21ec956275ab66a3e4f6610db908565 Mon Sep 17 00:00:00 2001
From: ageerle <ageerle@163.com>
Date: 星期二, 22 四月 2025 11:28:10 +0800
Subject: [PATCH] fix: 根据不同的模型构建对话客户端

---
 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java    |    2 +-
 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/OpenAIServiceImpl.java |    7 +++++++
 2 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/OpenAIServiceImpl.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/OpenAIServiceImpl.java
index 6f7f977..f78ef5c 100644
--- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/OpenAIServiceImpl.java
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/OpenAIServiceImpl.java
@@ -2,12 +2,15 @@
 
 import io.modelcontextprotocol.client.McpSyncClient;
 import lombok.extern.slf4j.Slf4j;
+import org.ruoyi.chat.config.ChatConfig;
 import org.ruoyi.chat.listener.SSEEventSourceListener;
 import org.ruoyi.chat.service.chat.IChatService;
 import org.ruoyi.common.chat.entity.chat.ChatCompletion;
 import org.ruoyi.common.chat.entity.chat.Message;
 import org.ruoyi.common.chat.openai.OpenAiStreamClient;
 import org.ruoyi.common.chat.request.ChatRequest;
+import org.ruoyi.domain.vo.ChatModelVo;
+import org.ruoyi.service.IChatModelService;
 import org.springframework.ai.chat.client.ChatClient;
 import org.springframework.ai.mcp.SyncMcpToolCallbackProvider;
 import org.springframework.ai.openai.OpenAiChatOptions;
@@ -22,6 +25,8 @@
 public class OpenAIServiceImpl implements IChatService {
 
     @Autowired
+    private IChatModelService chatModelService;
+
     private OpenAiStreamClient openAiStreamClient;
 
     private final ChatClient chatClient;
@@ -36,6 +41,8 @@
 
     @Override
     public SseEmitter chat(ChatRequest chatRequest,SseEmitter emitter) {
+        ChatModelVo chatModelVo = chatModelService.selectModelByName(chatRequest.getModel());
+        openAiStreamClient = ChatConfig.createOpenAiStreamClient(chatModelVo.getApiHost(), chatModelVo.getApiKey());
         String toolString = mcpChat(chatRequest.getPrompt());
         Message userMessage = Message.builder().content("宸ュ叿杩斿洖淇℃伅锛�"+toolString).role(Message.Role.USER).build();
         List<Message> messages = chatRequest.getMessages();
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 c011d50..f5b14b5 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
@@ -71,7 +71,7 @@
 
     @Override
     public SseEmitter sseChat(ChatRequest chatRequest, HttpServletRequest request) {
-        SseEmitter sseEmitter = new SseEmitter();
+        SseEmitter sseEmitter = new SseEmitter(0L);
         try {
             // 鏋勫缓娑堟伅鍒楄〃
             buildChatMessageList(chatRequest);

--
Gitblit v1.9.3