办学质量监测教学评价系统
ageerle
2025-04-11 af3304011728e03872c72d8f3b5a8cd1715f47db
fix: 语音功能无法使用
已修改2个文件
23 ■■■■ 文件已修改
ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiStreamClient.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/openai/OpenAiStreamClient.java
@@ -593,11 +593,6 @@
    }
    /**
     * 构造
     *
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));
    }