From c78b1a14a9fdaacecfddb27f49a0c8f0e091a32a Mon Sep 17 00:00:00 2001 From: ageerle Date: Wed, 25 Feb 2026 21:20:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0ppio=E5=8E=82?= =?UTF-8?q?=E5=95=86=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/ruoyi/enums/ChatModeType.java | 1 + .../chat/impl/provider/PPIOServiceImpl.java | 50 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/chat/impl/provider/PPIOServiceImpl.java diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/enums/ChatModeType.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/enums/ChatModeType.java index 3312388b..a36438fe 100644 --- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/enums/ChatModeType.java +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/enums/ChatModeType.java @@ -14,6 +14,7 @@ public enum ChatModeType { ZHI_PU("zhipu", "智谱清言"), DEEP_SEEK("deepseek", "深度求索"), QIAN_WEN("qianwen", "通义千问"), + PPIO("ppio", "PPIO派欧云"), OPEN_AI("openai", "openai"); private final String code; private final String description; diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/chat/impl/provider/PPIOServiceImpl.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/chat/impl/provider/PPIOServiceImpl.java new file mode 100644 index 00000000..d6c0053b --- /dev/null +++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/service/chat/impl/provider/PPIOServiceImpl.java @@ -0,0 +1,50 @@ +package org.ruoyi.service.chat.impl.provider; + + +import dev.langchain4j.data.message.ChatMessage; +import dev.langchain4j.model.chat.StreamingChatModel; +import dev.langchain4j.model.chat.response.StreamingChatResponseHandler; +import dev.langchain4j.model.openai.OpenAiStreamingChatModel; +import lombok.extern.slf4j.Slf4j; +import org.ruoyi.common.chat.domain.dto.request.ChatRequest; +import org.ruoyi.common.chat.domain.vo.chat.ChatModelVo; +import org.ruoyi.enums.ChatModeType; +import org.ruoyi.service.chat.impl.AbstractStreamingChatService; +import org.springframework.stereotype.Service; + +import java.util.List; + + +/** + * PPIO服务调用 + * + * @author ageerle@163.com + * @date 2025/12/13 + */ +@Service +@Slf4j +public class PPIOServiceImpl extends AbstractStreamingChatService { + + @Override + protected StreamingChatModel buildStreamingChatModel(ChatModelVo chatModelVo, ChatRequest chatRequest) { + return OpenAiStreamingChatModel.builder() + .baseUrl(chatModelVo.getApiHost()) + .apiKey(chatModelVo.getApiKey()) + .modelName(chatModelVo.getModelName()) + .returnThinking(chatRequest.getEnableThinking()) + .build(); + } + + @Override + protected void doChat(ChatModelVo chatModelVo, ChatRequest chatRequest, List messagesWithMemory, StreamingChatResponseHandler handler) { + StreamingChatModel streamingChatModel = buildStreamingChatModel(chatModelVo, chatRequest); + streamingChatModel.chat(messagesWithMemory, handler); + } + + + @Override + public String getProviderName() { + return ChatModeType.PPIO.getCode(); + } + +}