From 6f05485e8f8164ab54e138fda21ca78f16004573 Mon Sep 17 00:00:00 2001 From: thinkgem Date: Fri, 23 May 2025 19:01:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=91=E9=87=8F=E5=BA=93=E5=8F=AF=E9=80=89?= =?UTF-8?q?=EF=BC=8C=E5=9C=A8pom=E9=87=8C=E5=8E=BB=E6=8E=89=E5=90=91?= =?UTF-8?q?=E9=87=8F=E5=BA=93=E5=AE=9E=E7=8E=B0=E5=8D=B3=E5=8F=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ai/service/ArticleVectorStoreImpl.java | 2 + .../cms/ai/service/CmsAiChatService.java | 49 +++++++++---------- .../modules/cms/service/CategoryService.java | 2 +- .../modules/cms/service/SiteService.java | 2 +- 4 files changed, 28 insertions(+), 27 deletions(-) diff --git a/modules/cms-ai/src/main/java/com/jeesite/modules/cms/ai/service/ArticleVectorStoreImpl.java b/modules/cms-ai/src/main/java/com/jeesite/modules/cms/ai/service/ArticleVectorStoreImpl.java index 7b9ad5cd..a1a64d41 100644 --- a/modules/cms-ai/src/main/java/com/jeesite/modules/cms/ai/service/ArticleVectorStoreImpl.java +++ b/modules/cms-ai/src/main/java/com/jeesite/modules/cms/ai/service/ArticleVectorStoreImpl.java @@ -37,6 +37,7 @@ import org.springframework.ai.transformer.splitter.TokenTextSplitter; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.ai.vectorstore.filter.FilterExpressionBuilder; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.stereotype.Service; import java.io.IOException; @@ -51,6 +52,7 @@ import java.util.Set; * @author ThinkGem */ @Service +@ConditionalOnBean(VectorStore.class) public class ArticleVectorStoreImpl implements ArticleVectorStore { protected Logger logger = LoggerFactory.getLogger(getClass()); diff --git a/modules/cms-ai/src/main/java/com/jeesite/modules/cms/ai/service/CmsAiChatService.java b/modules/cms-ai/src/main/java/com/jeesite/modules/cms/ai/service/CmsAiChatService.java index e3acbe3d..5ef37653 100644 --- a/modules/cms-ai/src/main/java/com/jeesite/modules/cms/ai/service/CmsAiChatService.java +++ b/modules/cms-ai/src/main/java/com/jeesite/modules/cms/ai/service/CmsAiChatService.java @@ -58,7 +58,7 @@ public class CmsAiChatService extends BaseService { private ChatClient chatClient; @Autowired private ChatMemory chatMemory; - @Autowired + @Autowired(required = false) private VectorStore vectorStore; @Autowired private CmsAiProperties properties; @@ -126,20 +126,18 @@ public class CmsAiChatService extends BaseService { * @author ThinkGem */ public Flux chatStream(String conversationId, String message, HttpServletRequest request) { - return chatClient.prompt() - .messages( - new UserMessage(StringUtils.replaceEach(message, USER_MESSAGE_SEARCH, USER_MESSAGE_REPLACE)) - ) - .advisors( - MessageChatMemoryAdvisor.builder(chatMemory) + ChatClient.ChatClientRequestSpec spec = chatClient.prompt() + .messages(new UserMessage(StringUtils.replaceEach(message, USER_MESSAGE_SEARCH, USER_MESSAGE_REPLACE))) + .advisors(MessageChatMemoryAdvisor.builder(chatMemory) .conversationId(conversationId) - .build(), - QuestionAnswerAdvisor.builder(vectorStore) - .searchRequest(SearchRequest.builder().similarityThreshold(0.6F).topK(6).build()) - .promptTemplate(new PromptTemplate(properties.getDefaultPromptTemplate())) - .build() - ) - .stream() + .build()); + if (vectorStore != null) { + spec.advisors(QuestionAnswerAdvisor.builder(vectorStore) + .searchRequest(SearchRequest.builder().similarityThreshold(0.6F).topK(6).build()) + .promptTemplate(new PromptTemplate(properties.getDefaultPromptTemplate())) + .build()); + } + return spec.stream() .chatResponse() .doOnNext(response -> { if (response.getResult() != null && StringUtils.isNotBlank(response.getResult().getOutput().getText())) { @@ -204,7 +202,8 @@ public class CmsAiChatService extends BaseService { new UserMessage(StringUtils.replaceEach(message, USER_MESSAGE_SEARCH, USER_MESSAGE_REPLACE)) ) .call() - .responseEntity(new AbstractMessageOutputConverter>( + .responseEntity( + new AbstractMessageOutputConverter>( new MappingJackson2MessageConverter(JsonMapper.getInstance()) ) { final MapOutputConverter mapOutputConverter = new MapOutputConverter(); @@ -228,18 +227,18 @@ public class CmsAiChatService extends BaseService { public List chatArea(String message) { List list = AreaUtils.getAreaAllList(); if (list.size() > 10) list = list.subList(0, 10); - return chatClient.prompt() - .messages( + ChatClient.ChatClientRequestSpec spec = chatClient.prompt() + .messages( new SystemMessage(JsonMapper.toJson(list)), new UserMessage(StringUtils.replaceEach(message, USER_MESSAGE_SEARCH, USER_MESSAGE_REPLACE)) - ) - .advisors( - QuestionAnswerAdvisor.builder(vectorStore) - .searchRequest(SearchRequest.builder().similarityThreshold(0.6F).topK(6).build()) - .promptTemplate(new PromptTemplate(properties.getDefaultPromptTemplate())) - .build() - ) - .call() + ); + if (vectorStore != null) { + spec.advisors(QuestionAnswerAdvisor.builder(vectorStore) + .searchRequest(SearchRequest.builder().similarityThreshold(0.6F).topK(6).build()) + .promptTemplate(new PromptTemplate(properties.getDefaultPromptTemplate())) + .build()); + } + return spec.call() .responseEntity(new BeanOutputConverter<>(new ParameterizedTypeReference>() {}, JsonMapper.getInstance())) .getEntity(); diff --git a/modules/cms/src/main/java/com/jeesite/modules/cms/service/CategoryService.java b/modules/cms/src/main/java/com/jeesite/modules/cms/service/CategoryService.java index 3dc22770..94b8ce5a 100644 --- a/modules/cms/src/main/java/com/jeesite/modules/cms/service/CategoryService.java +++ b/modules/cms/src/main/java/com/jeesite/modules/cms/service/CategoryService.java @@ -133,7 +133,7 @@ public class CategoryService extends TreeService { */ public String rebuildVectorStore(Category category) { if (articleVectorStore == null) { - return text("您好,系统未安装全文检索模块"); + return text("您好,系统未配置向量数据库"); } return articleVectorStore.rebuild(new Article(category)); } diff --git a/modules/cms/src/main/java/com/jeesite/modules/cms/service/SiteService.java b/modules/cms/src/main/java/com/jeesite/modules/cms/service/SiteService.java index 8ff3b909..b638078a 100644 --- a/modules/cms/src/main/java/com/jeesite/modules/cms/service/SiteService.java +++ b/modules/cms/src/main/java/com/jeesite/modules/cms/service/SiteService.java @@ -129,7 +129,7 @@ public class SiteService extends CrudService { */ public String rebuildVectorStore(Site site) { if (articleVectorStore == null) { - return text("您好,系统未安装内容管理AI模块"); + return text("您好,系统未配置向量数据库"); } return articleVectorStore.rebuild(new Article(new Category(site))); }