From 35dca0a43554fffede9cd4ab9cabde25682ee731 Mon Sep 17 00:00:00 2001 From: Ttt Date: Fri, 13 Mar 2026 23:19:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E9=9A=94=E7=A6=BB=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=A9=BA=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xservice/ai/server/ChatController.java | 4 +-- .../src/main/resources/application-prod.yml | 20 +++++++------- .../src/main/resources/application-test.yml | 22 +++++++--------- .../src/main/resources/application.yml | 1 - .../xiang/xservice/ai/agent/BaseAgent.java | 9 ++++++- .../xservice/ai/agent/SimpleChatAgent.java | 6 +++-- .../ai/core/storage/DbPersistentStore.java | 26 ++++++++++++++----- .../manage/AiSimpleChatMessageManageImpl.java | 7 ++--- .../manage/IAiSimpleChatMessageManage.java | 4 +-- .../mapper/IAiSimpleChatMessageMapper.java | 2 +- .../mapper/AiSimpleChatMessageMapper.xml | 2 +- 11 files changed, 60 insertions(+), 43 deletions(-) diff --git a/xservice-server/src/main/java/com/xiang/xsa/xservice/ai/server/ChatController.java b/xservice-server/src/main/java/com/xiang/xsa/xservice/ai/server/ChatController.java index 9b5e834..8f80bce 100644 --- a/xservice-server/src/main/java/com/xiang/xsa/xservice/ai/server/ChatController.java +++ b/xservice-server/src/main/java/com/xiang/xsa/xservice/ai/server/ChatController.java @@ -14,8 +14,8 @@ public class ChatController { private final BaseAgent baseAgent; @GetMapping("/chat") - public String chatDemo(@RequestParam("question") String question, @RequestParam("id") Long id) { - baseAgent.chat(ModelTypeEnum.OPEN_AI, id, question); + public String chatDemo(@RequestParam("question") String question, @RequestParam("memoryId") Long memoryId, @RequestParam("userId") Long userId) { + baseAgent.chat(ModelTypeEnum.OPEN_AI, memoryId, userId, question); return "321"; } diff --git a/xservice-server/src/main/resources/application-prod.yml b/xservice-server/src/main/resources/application-prod.yml index cb6e43b..5bcd2c7 100644 --- a/xservice-server/src/main/resources/application-prod.yml +++ b/xservice-server/src/main/resources/application-prod.yml @@ -1,16 +1,14 @@ spring: - datasource: url: jdbc:mysql://rm-bp15t34gqx62jm069ro.mysql.rds.aliyuncs.com:3306/xservice-ai-center?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true username: root - password: xb#UWqnhH24&XpX + password: sdkljfikdfn@123 driver-class-name: com.mysql.cj.jdbc.Driver - ai: - dashscope: - api-key: sk-07353fd191074c9c930b134230ba88ea - chat: - options: - model: qwen-plus - http: - connect-timeout: 30s - read-timeout: 60s + +ai: + openai: + configs: + bai-lian: + apiKey: sk-70cb426d7d1e4b54b4ffe71022e7d815 + modelName: qwen3.5-plus + baseUrl: https://dashscope.aliyuncs.com/compatible-mode/v1 \ No newline at end of file diff --git a/xservice-server/src/main/resources/application-test.yml b/xservice-server/src/main/resources/application-test.yml index cb6e43b..7049d16 100644 --- a/xservice-server/src/main/resources/application-test.yml +++ b/xservice-server/src/main/resources/application-test.yml @@ -1,16 +1,14 @@ spring: - datasource: - url: jdbc:mysql://rm-bp15t34gqx62jm069ro.mysql.rds.aliyuncs.com:3306/xservice-ai-center?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true + url: jdbc:mysql://120.27.153.87:3306/xe-service-ai?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true username: root - password: xb#UWqnhH24&XpX + password: sdkljfikdfn@123 driver-class-name: com.mysql.cj.jdbc.Driver - ai: - dashscope: - api-key: sk-07353fd191074c9c930b134230ba88ea - chat: - options: - model: qwen-plus - http: - connect-timeout: 30s - read-timeout: 60s + +ai: + openai: + configs: + bai-lian: + apiKey: sk-70cb426d7d1e4b54b4ffe71022e7d815 + modelName: qwen3.5-plus + baseUrl: https://dashscope.aliyuncs.com/compatible-mode/v1 diff --git a/xservice-server/src/main/resources/application.yml b/xservice-server/src/main/resources/application.yml index 4e85cd7..e1e8159 100644 --- a/xservice-server/src/main/resources/application.yml +++ b/xservice-server/src/main/resources/application.yml @@ -1,5 +1,4 @@ spring: - application: name: xservice-ai-center diff --git a/xservice-service/src/main/java/com/xiang/xservice/ai/agent/BaseAgent.java b/xservice-service/src/main/java/com/xiang/xservice/ai/agent/BaseAgent.java index bd48c1e..8a2ad56 100644 --- a/xservice-service/src/main/java/com/xiang/xservice/ai/agent/BaseAgent.java +++ b/xservice-service/src/main/java/com/xiang/xservice/ai/agent/BaseAgent.java @@ -3,5 +3,12 @@ package com.xiang.xservice.ai.agent; import com.xiang.xservice.ai.core.enums.ModelTypeEnum; public interface BaseAgent { - void chat(ModelTypeEnum modelType, Long memoryId, String message); + /** + * chat + * @param modelType 模型枚举 + * @param memoryId + * @param userId + * @param message + */ + void chat(ModelTypeEnum modelType, Long memoryId, Long userId, String message); } diff --git a/xservice-service/src/main/java/com/xiang/xservice/ai/agent/SimpleChatAgent.java b/xservice-service/src/main/java/com/xiang/xservice/ai/agent/SimpleChatAgent.java index 1f6f662..099e4fd 100644 --- a/xservice-service/src/main/java/com/xiang/xservice/ai/agent/SimpleChatAgent.java +++ b/xservice-service/src/main/java/com/xiang/xservice/ai/agent/SimpleChatAgent.java @@ -32,16 +32,17 @@ public class SimpleChatAgent implements BaseAgent { @Override - public void chat(ModelTypeEnum modelType, Long id, String message) { + public void chat(ModelTypeEnum modelType, Long memoryId, Long userId, String message) { DbPersistentStore store = new DbPersistentStore(aiSimpleChatMessageManage); - ChatMemoryProvider chatMemoryProvider = memoryId -> MessageWindowChatMemory.builder() + ChatMemoryProvider chatMemoryProvider = args -> MessageWindowChatMemory.builder() .id(memoryId) .maxMessages(10) .chatMemoryStore(store) .build(); + OpenAIConfig openAIConfig = openAIBaseConfig.getConfigs().get("bai-lian"); ModelConfig modelConfig = ModelConfig.builder() .baseUrl(openAIConfig.getBaseUrl()) @@ -60,6 +61,7 @@ public class SimpleChatAgent implements BaseAgent { .build(); UserMessage userMessage = new UserMessage(message); SystemMessage systemMessage = new SystemMessage("你是一个能够与人聊天的AI智能助手,名字叫龙虾"); + String id = userId + "-" + memoryId; assistant.chat(id, Lists.newArrayList(systemMessage, userMessage)) .onPartialResponse(System.out::print) .onCompleteResponse(res -> System.out.println("\n完成")) diff --git a/xservice-service/src/main/java/com/xiang/xservice/ai/core/storage/DbPersistentStore.java b/xservice-service/src/main/java/com/xiang/xservice/ai/core/storage/DbPersistentStore.java index ea7e87f..1777f67 100644 --- a/xservice-service/src/main/java/com/xiang/xservice/ai/core/storage/DbPersistentStore.java +++ b/xservice-service/src/main/java/com/xiang/xservice/ai/core/storage/DbPersistentStore.java @@ -22,8 +22,12 @@ public class DbPersistentStore implements ChatMemoryStore { private final IAiSimpleChatMessageManage aiSimpleChatMessageManage; @Override - public List getMessages(Object memoryId) { - List msg = aiSimpleChatMessageManage.getMsgByMemoryId((Long) memoryId); + public List getMessages(Object args) { + String argsStr = String.valueOf(args); + String[] split = argsStr.split("-"); + Long userId = Long.valueOf(split[0]); + Long memoryId = Long.valueOf(split[1]); + List msg = aiSimpleChatMessageManage.getMsgByMemoryId(userId, memoryId); if (CollectionUtils.isEmpty(msg)) { return Lists.newArrayList(); } @@ -52,7 +56,11 @@ public class DbPersistentStore implements ChatMemoryStore { } @Override - public void updateMessages(Object memoryId, List list) { + public void updateMessages(Object args, List list) { + String argsStr = String.valueOf(args); + String[] split = argsStr.split("-"); + Long userId = Long.valueOf(split[0]); + Long memoryId = Long.valueOf(split[1]); List result = Lists.newArrayList(); for (ChatMessage chatMessage : list) { StringBuilder str = new StringBuilder(); @@ -77,8 +85,8 @@ public class DbPersistentStore implements ChatMemoryStore { } AiSimpleChatMessageDO message = AiSimpleChatMessageDO.builder() - .userId(1L) - .memoryId((Long) memoryId) + .userId(userId) + .memoryId(memoryId) .message(str.toString()) .createTime(LocalDateTime.now()) .delFlag(0) @@ -91,7 +99,11 @@ public class DbPersistentStore implements ChatMemoryStore { } @Override - public void deleteMessages(Object memoryId) { - aiSimpleChatMessageManage.deleteByMemoryId((Long) memoryId); + public void deleteMessages(Object args) { + String argsStr = String.valueOf(args); + String[] split = argsStr.split("-"); + Long userId = Long.valueOf(split[0]); + Long memoryId = Long.valueOf(split[1]); + aiSimpleChatMessageManage.deleteByMemoryId(userId, memoryId); } } diff --git a/xservice-service/src/main/java/com/xiang/xservice/ai/repository/manage/AiSimpleChatMessageManageImpl.java b/xservice-service/src/main/java/com/xiang/xservice/ai/repository/manage/AiSimpleChatMessageManageImpl.java index cbb8d4e..febc81f 100644 --- a/xservice-service/src/main/java/com/xiang/xservice/ai/repository/manage/AiSimpleChatMessageManageImpl.java +++ b/xservice-service/src/main/java/com/xiang/xservice/ai/repository/manage/AiSimpleChatMessageManageImpl.java @@ -12,15 +12,16 @@ import java.util.List; @Service public class AiSimpleChatMessageManageImpl extends ServiceImpl implements IAiSimpleChatMessageManage { @Override - public List getMsgByMemoryId(Long memoryId) { + public List getMsgByMemoryId(Long userId, Long memoryId) { LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.eq(AiSimpleChatMessageDO::getUserId, userId); lambdaQueryWrapper.eq(AiSimpleChatMessageDO::getMemoryId, memoryId); lambdaQueryWrapper.eq(AiSimpleChatMessageDO::getDelFlag, 0); return baseMapper.selectList(lambdaQueryWrapper); } @Override - public boolean deleteByMemoryId(Long memoryId) { - return baseMapper.deleteByMemoryId(memoryId) > 0; + public boolean deleteByMemoryId(Long userId, Long memoryId) { + return baseMapper.deleteByMemoryId(userId, memoryId) > 0; } } diff --git a/xservice-service/src/main/java/com/xiang/xservice/ai/repository/manage/IAiSimpleChatMessageManage.java b/xservice-service/src/main/java/com/xiang/xservice/ai/repository/manage/IAiSimpleChatMessageManage.java index 1de7bd9..8dab10e 100644 --- a/xservice-service/src/main/java/com/xiang/xservice/ai/repository/manage/IAiSimpleChatMessageManage.java +++ b/xservice-service/src/main/java/com/xiang/xservice/ai/repository/manage/IAiSimpleChatMessageManage.java @@ -6,6 +6,6 @@ import com.xiang.xservice.ai.pojo.entity.AiSimpleChatMessageDO; import java.util.List; public interface IAiSimpleChatMessageManage extends IService { - List getMsgByMemoryId(Long memoryId); - boolean deleteByMemoryId(Long memoryId); + List getMsgByMemoryId(Long userId, Long memoryId); + boolean deleteByMemoryId(Long userId, Long memoryId); } diff --git a/xservice-service/src/main/java/com/xiang/xservice/ai/repository/mapper/IAiSimpleChatMessageMapper.java b/xservice-service/src/main/java/com/xiang/xservice/ai/repository/mapper/IAiSimpleChatMessageMapper.java index 99901e9..03024de 100644 --- a/xservice-service/src/main/java/com/xiang/xservice/ai/repository/mapper/IAiSimpleChatMessageMapper.java +++ b/xservice-service/src/main/java/com/xiang/xservice/ai/repository/mapper/IAiSimpleChatMessageMapper.java @@ -9,6 +9,6 @@ import org.springframework.stereotype.Repository; @Mapper @Repository public interface IAiSimpleChatMessageMapper extends BaseMapper { - int deleteByMemoryId(@Param("id") Long memoryId); + int deleteByMemoryId(@Param("userId") Long userId, @Param("memoryId") Long memoryId); } diff --git a/xservice-service/src/main/resources/mapper/AiSimpleChatMessageMapper.xml b/xservice-service/src/main/resources/mapper/AiSimpleChatMessageMapper.xml index f60324e..f20db4d 100644 --- a/xservice-service/src/main/resources/mapper/AiSimpleChatMessageMapper.xml +++ b/xservice-service/src/main/resources/mapper/AiSimpleChatMessageMapper.xml @@ -24,7 +24,7 @@ - update ai_simple_chat_message set del_flag = 1 where memory_id = #{id} + update ai_simple_chat_message set del_flag = 1 where memory_id = #{memoryId} and user_id = #{userId} \ No newline at end of file