From 566993606d6ea2fa892ee0bc2c82e3e1f171ad2d Mon Sep 17 00:00:00 2001 From: jack ning Date: Thu, 5 Jun 2025 18:59:20 +0800 Subject: [PATCH] update modules/ai: mod 6 files --- deploy/docker/docker-compose-ollama.yaml | 4 +- deploy/docker/docker-compose.yaml | 4 +- .../ai/springai/config/ChatModelConfig.java | 58 +++++++++---------- .../ai/springai/config/FallbackChatModel.java | 56 +++++++++--------- .../ollama/SpringAIOllamaConfig.java | 3 +- .../resources/application-open.properties | 2 + 6 files changed, 65 insertions(+), 62 deletions(-) diff --git a/deploy/docker/docker-compose-ollama.yaml b/deploy/docker/docker-compose-ollama.yaml index a84db70893..0e8d5ec6f3 100644 --- a/deploy/docker/docker-compose-ollama.yaml +++ b/deploy/docker/docker-compose-ollama.yaml @@ -167,8 +167,8 @@ services: BYTEDESK_ORGANIZATION_NAME: MyCompany BYTEDESK_ORGANIZATION_CODE: bytedesk # Features config - BYTEDESK_FEATURES_JAVA_AI: "false" - BYTEDESK_FEATURES_PYTHON_AI: "true" + BYTEDESK_FEATURES_JAVA_AI: "true" + BYTEDESK_FEATURES_PYTHON_AI: "false" BYTEDESK_FEATURES_EMAIL_TYPE: javamail BYTEDESK_FEATURES_ENABLE_REGISTRATION: "false" BYTEDESK_FEATURES_AVATAR_BASE_URL: diff --git a/deploy/docker/docker-compose.yaml b/deploy/docker/docker-compose.yaml index b832be8ee0..bd59de71ab 100644 --- a/deploy/docker/docker-compose.yaml +++ b/deploy/docker/docker-compose.yaml @@ -147,8 +147,8 @@ services: BYTEDESK_ORGANIZATION_NAME: MyCompany BYTEDESK_ORGANIZATION_CODE: bytedesk # Features config - BYTEDESK_FEATURES_JAVA_AI: "false" - BYTEDESK_FEATURES_PYTHON_AI: "true" + BYTEDESK_FEATURES_JAVA_AI: "true" + BYTEDESK_FEATURES_PYTHON_AI: "false" BYTEDESK_FEATURES_EMAIL_TYPE: javamail BYTEDESK_FEATURES_ENABLE_REGISTRATION: "false" BYTEDESK_FEATURES_AVATAR_BASE_URL: diff --git a/modules/ai/src/main/java/com/bytedesk/ai/springai/config/ChatModelConfig.java b/modules/ai/src/main/java/com/bytedesk/ai/springai/config/ChatModelConfig.java index 830a486220..0703542f0e 100644 --- a/modules/ai/src/main/java/com/bytedesk/ai/springai/config/ChatModelConfig.java +++ b/modules/ai/src/main/java/com/bytedesk/ai/springai/config/ChatModelConfig.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2025-05-31 10:00:00 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-05-31 13:49:47 + * @LastEditTime: 2025-06-05 18:54:26 * @Description: bytedesk.com https://github.com/Bytedesk/bytedesk * Please be aware of the BSL license restrictions before installing Bytedesk IM – * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. @@ -13,35 +13,35 @@ */ package com.bytedesk.ai.springai.config; -import org.springframework.ai.chat.model.ChatModel; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; +// import org.springframework.ai.chat.model.ChatModel; +// import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +// import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +// import org.springframework.context.annotation.Bean; +// import org.springframework.context.annotation.Configuration; +// import org.springframework.context.annotation.Primary; -import lombok.extern.slf4j.Slf4j; +// import lombok.extern.slf4j.Slf4j; -/** - * ChatModel配置类 - * 提供ChatModel的默认实现,当没有其他ChatModel可用时作为备用 - */ -@Slf4j -@Configuration -public class ChatModelConfig { +// /** +// * ChatModel配置类 +// * 提供ChatModel的默认实现,当没有其他ChatModel可用时作为备用 +// */ +// @Slf4j +// @Configuration +// public class ChatModelConfig { - /** - * 当没有其他ChatModel bean时,提供一个默认的ChatModel实现 - * 这个bean只有在启用Java AI功能时才会创建 - */ - @Bean - @Primary - @ConditionalOnMissingBean(ChatModel.class) - @ConditionalOnProperty(name = "bytedesk.features.java-ai", havingValue = "true", matchIfMissing = false) - public ChatModel defaultChatModel() { - log.warn("No ChatModel implementation found, using fallback implementation"); +// /** +// * 当没有其他ChatModel bean时,提供一个默认的ChatModel实现 +// * 这个bean只有在启用Java AI功能时才会创建 +// */ +// @Bean +// @Primary +// @ConditionalOnMissingBean(ChatModel.class) +// @ConditionalOnProperty(name = "bytedesk.features.java-ai", havingValue = "true", matchIfMissing = false) +// public ChatModel defaultChatModel() { +// log.warn("No ChatModel implementation found, using fallback implementation"); - // 返回一个简单的ChatModel实现作为备用 - return new FallbackChatModel(); - } -} +// // 返回一个简单的ChatModel实现作为备用 +// return new FallbackChatModel(); +// } +// } diff --git a/modules/ai/src/main/java/com/bytedesk/ai/springai/config/FallbackChatModel.java b/modules/ai/src/main/java/com/bytedesk/ai/springai/config/FallbackChatModel.java index a0648cac11..4eff1dc8cd 100644 --- a/modules/ai/src/main/java/com/bytedesk/ai/springai/config/FallbackChatModel.java +++ b/modules/ai/src/main/java/com/bytedesk/ai/springai/config/FallbackChatModel.java @@ -13,38 +13,38 @@ */ package com.bytedesk.ai.springai.config; -import org.springframework.ai.chat.messages.AssistantMessage; -import org.springframework.ai.chat.messages.UserMessage; -import org.springframework.ai.chat.model.ChatModel; -import org.springframework.ai.chat.model.ChatResponse; -import org.springframework.ai.chat.prompt.Prompt; -import org.springframework.ai.chat.model.Generation; +// import org.springframework.ai.chat.messages.AssistantMessage; +// import org.springframework.ai.chat.messages.UserMessage; +// import org.springframework.ai.chat.model.ChatModel; +// import org.springframework.ai.chat.model.ChatResponse; +// import org.springframework.ai.chat.prompt.Prompt; +// import org.springframework.ai.chat.model.Generation; -import lombok.extern.slf4j.Slf4j; +// import lombok.extern.slf4j.Slf4j; -import java.util.List; +// import java.util.List; -/** - * 备用ChatModel实现 - * 当没有其他ChatModel可用时使用此实现 - */ -@Slf4j -public class FallbackChatModel implements ChatModel { +// /** +// * 备用ChatModel实现 +// * 当没有其他ChatModel可用时使用此实现 +// */ +// @Slf4j +// public class FallbackChatModel implements ChatModel { - @Override - public ChatResponse call(Prompt prompt) { - log.warn("FallbackChatModel is being used - please configure a proper ChatModel implementation"); +// @Override +// public ChatResponse call(Prompt prompt) { +// log.warn("FallbackChatModel is being used - please configure a proper ChatModel implementation"); - // 创建一个简单的响应 - String responseText = "AI服务暂时不可用,请稍后再试。请确保已正确配置ChatModel实现(如Ollama、OpenAI等)。"; +// // 创建一个简单的响应 +// String responseText = "AI服务暂时不可用,请稍后再试。请确保已正确配置ChatModel实现(如Ollama、OpenAI等)。"; - AssistantMessage assistantMessage = new AssistantMessage(responseText); - Generation generation = new Generation(assistantMessage); - return new ChatResponse(List.of(generation)); - } +// AssistantMessage assistantMessage = new AssistantMessage(responseText); +// Generation generation = new Generation(assistantMessage); +// return new ChatResponse(List.of(generation)); +// } - @Override - public String call(String message) { - return call(new Prompt(new UserMessage(message))).getResult().getOutput().getText(); - } -} +// @Override +// public String call(String message) { +// return call(new Prompt(new UserMessage(message))).getResult().getOutput().getText(); +// } +// } diff --git a/modules/ai/src/main/java/com/bytedesk/ai/springai/providers/ollama/SpringAIOllamaConfig.java b/modules/ai/src/main/java/com/bytedesk/ai/springai/providers/ollama/SpringAIOllamaConfig.java index 617114c5dd..0e19917ff1 100644 --- a/modules/ai/src/main/java/com/bytedesk/ai/springai/providers/ollama/SpringAIOllamaConfig.java +++ b/modules/ai/src/main/java/com/bytedesk/ai/springai/providers/ollama/SpringAIOllamaConfig.java @@ -2,7 +2,7 @@ * @Author: jackning 270580156@qq.com * @Date: 2024-05-31 10:24:39 * @LastEditors: jackning 270580156@qq.com - * @LastEditTime: 2025-06-05 14:09:23 + * @LastEditTime: 2025-06-05 18:49:03 * @Description: bytedesk.com https://github.com/Bytedesk/bytedesk * Please be aware of the BSL license restrictions before installing Bytedesk IM – * selling, reselling, or hosting Bytedesk IM as a service is a breach of the terms and automatically terminates your rights under the license. @@ -78,6 +78,7 @@ public class SpringAIOllamaConfig { .build(); } + @Primary @Bean("bytedeskOllamaChatModel") OllamaChatModel bytedeskOllamaChatModel() { return OllamaChatModel.builder() diff --git a/starter/src/main/resources/application-open.properties b/starter/src/main/resources/application-open.properties index c251dbe346..05c42a7603 100644 --- a/starter/src/main/resources/application-open.properties +++ b/starter/src/main/resources/application-open.properties @@ -641,6 +641,8 @@ spring.ai.ollama.embedding.options.model=bge-m3:latest # spring.ai.ollama.embedding.options.numa=false # spring.ai.ollama.init.timeout=60s # spring.ai.ollama.init.max-retries=2 +# https://huggingface.co/BAAI/bge-reranker-v2-m3 +spring.ai.ollama.embedding.options.model.rerank=linux6200/bge-reranker-v2-m3:latest # zhipuai # https://open.bigmodel.cn/overview