From 5e14889503d3e5ad079556b8bdddfb1543e80b9c Mon Sep 17 00:00:00 2001 From: liuhanqing Date: Tue, 4 Nov 2025 08:57:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0ai=E5=8A=9F=E8=83=BD=E5=BC=80?= =?UTF-8?q?=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/ai/chat/config/ChatModelConfig.java | 21 +++++++++++++++++++ .../controller/EmbeddingDemoController.java | 4 ++-- .../ai/chat/service/impl/ChatServiceImpl.java | 16 ++++++++------ .../ai/vector/service/DataVectorService.java | 2 +- .../src/main/resources/application.yml | 1 + 5 files changed, 35 insertions(+), 9 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/config/ChatModelConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/config/ChatModelConfig.java index 33ab00b..838bdd2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/config/ChatModelConfig.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/config/ChatModelConfig.java @@ -23,6 +23,7 @@ import org.springframework.ai.vectorstore.VectorStore; import org.springframework.ai.vectorstore.mariadb.MariaDBVectorStore; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; @@ -40,6 +41,11 @@ public class ChatModelConfig { @Bean + @ConditionalOnProperty( + name = "spring.ai.enable", // 配置项名称 + havingValue = "true", // 期望的值 + matchIfMissing = false // 配置不存在时是否匹配(false=不注册) + ) public ChatClient chatClient(OpenAiChatModel openAiChatModel, ChatMemory chatMemory, BasStockToolService toolService/*, ToolCallbackProvider toolCallbackProvider*/) { return ChatClient //使用的模型 @@ -63,11 +69,21 @@ public class ChatModelConfig { * @return */ @Bean + @ConditionalOnProperty( + name = "spring.ai.enable", // 配置项名称 + havingValue = "true", // 期望的值 + matchIfMissing = false // 配置不存在时是否匹配(false=不注册) + ) public ChatMemory chatMemory() { return new InSqlMemory(); } @Bean + @ConditionalOnProperty( + name = "spring.ai.enable", // 配置项名称 + havingValue = "true", // 期望的值 + matchIfMissing = false // 配置不存在时是否匹配(false=不注册) + ) @ConfigurationProperties("spring.datasource.druid.slave") public MariaDbDataSource dataSource() throws SQLException { return DataSourceBuilder.create().username("root") @@ -77,6 +93,11 @@ public class ChatModelConfig { @Bean + @ConditionalOnProperty( + name = "spring.ai.enable", // 配置项名称 + havingValue = "true", // 期望的值 + matchIfMissing = false // 配置不存在时是否匹配(false=不注册) + ) public VectorStore vectorStore(MariaDbDataSource dataSource, EmbeddingModel embeddingModel) throws SQLException { JdbcTemplate customJdbcTemplate = new JdbcTemplate(dataSource); return MariaDBVectorStore.builder(customJdbcTemplate, embeddingModel) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/controller/EmbeddingDemoController.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/controller/EmbeddingDemoController.java index c866df3..f270924 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/controller/EmbeddingDemoController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/controller/EmbeddingDemoController.java @@ -19,10 +19,10 @@ import java.util.List; @RequestMapping("/api/embedding") public class EmbeddingDemoController { - @Autowired + @Autowired(required = false) private OpenAiEmbeddingModel embeddingModel; - @Autowired + @Autowired(required = false) private VectorStore vectorStore; /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/service/impl/ChatServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/service/impl/ChatServiceImpl.java index 757666d..70a0032 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/service/impl/ChatServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/service/impl/ChatServiceImpl.java @@ -28,17 +28,17 @@ import java.util.List; @Service public class ChatServiceImpl implements ChatService { - @Autowired + @Autowired(required = false) private ChatClient chatClient; - @Autowired + @Autowired(required = false) private OpenAiChatModel openAiChatModel; - @Autowired + @Autowired(required = false) private ChatMemory chatMemory; - @Autowired + @Autowired(required = false) private VectorStore vectorStore; - @Autowired + @Autowired(required = false) private IChatMessageService chatMessageService; - @Autowired + @Autowired(required = false) private IConversationsService conversationsService; // 定义问答模板 @@ -110,6 +110,10 @@ public class ChatServiceImpl implements ChatService { */ @Override public Flux chatByUserContent(CustomMessage customMessage) { + if (chatClient == null){ + return Flux.just("未开启聊天模型"); + } + // 生成唯一会话ID Long sessionId = IdUtil.getSnowflakeNextId(); //修改会话 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/service/DataVectorService.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/service/DataVectorService.java index db128b6..ee0364c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/service/DataVectorService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/service/DataVectorService.java @@ -24,7 +24,7 @@ import java.util.List; @Service public class DataVectorService { - @Autowired + @Autowired(required = false) private VectorStore vectorStore; /** diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index fe5d7e9..1d47795 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -92,6 +92,7 @@ spring: max-wait: -1ms ai: + enable: false openai: api-key: sk-dzftrybcpjujsjgehjgtsjzjuhqxciosldcncjtlazxvjams # 密钥key base-url: https://api.siliconflow.cn # 产商地址