fix: 根据不同的模型构建对话客户端

This commit is contained in:
ageerle
2025-04-22 11:28:10 +08:00
parent 620ea1fc76
commit 15c306eca2
2 changed files with 8 additions and 1 deletions

View File

@@ -2,12 +2,15 @@ package org.ruoyi.chat.service.chat.impl;
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 @@ import java.util.List;
public class OpenAIServiceImpl implements IChatService {
@Autowired
private IChatModelService chatModelService;
private OpenAiStreamClient openAiStreamClient;
private final ChatClient chatClient;
@@ -36,6 +41,8 @@ public class OpenAIServiceImpl implements IChatService {
@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();

View File

@@ -71,7 +71,7 @@ public class SseServiceImpl implements ISseService {
@Override
public SseEmitter sseChat(ChatRequest chatRequest, HttpServletRequest request) {
SseEmitter sseEmitter = new SseEmitter();
SseEmitter sseEmitter = new SseEmitter(0L);
try {
// 构建消息列表
buildChatMessageList(chatRequest);