feat:隔离用户空间
This commit is contained in:
@@ -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";
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
spring:
|
||||
|
||||
application:
|
||||
name: xservice-ai-center
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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完成"))
|
||||
|
||||
@@ -22,8 +22,12 @@ public class DbPersistentStore implements ChatMemoryStore {
|
||||
private final IAiSimpleChatMessageManage aiSimpleChatMessageManage;
|
||||
|
||||
@Override
|
||||
public List<ChatMessage> getMessages(Object memoryId) {
|
||||
List<AiSimpleChatMessageDO> msg = aiSimpleChatMessageManage.getMsgByMemoryId((Long) memoryId);
|
||||
public List<ChatMessage> 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<AiSimpleChatMessageDO> 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<ChatMessage> list) {
|
||||
public void updateMessages(Object args, List<ChatMessage> list) {
|
||||
String argsStr = String.valueOf(args);
|
||||
String[] split = argsStr.split("-");
|
||||
Long userId = Long.valueOf(split[0]);
|
||||
Long memoryId = Long.valueOf(split[1]);
|
||||
List<AiSimpleChatMessageDO> 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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,15 +12,16 @@ import java.util.List;
|
||||
@Service
|
||||
public class AiSimpleChatMessageManageImpl extends ServiceImpl<IAiSimpleChatMessageMapper, AiSimpleChatMessageDO> implements IAiSimpleChatMessageManage {
|
||||
@Override
|
||||
public List<AiSimpleChatMessageDO> getMsgByMemoryId(Long memoryId) {
|
||||
public List<AiSimpleChatMessageDO> getMsgByMemoryId(Long userId, Long memoryId) {
|
||||
LambdaQueryWrapper<AiSimpleChatMessageDO> 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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,6 @@ import com.xiang.xservice.ai.pojo.entity.AiSimpleChatMessageDO;
|
||||
import java.util.List;
|
||||
|
||||
public interface IAiSimpleChatMessageManage extends IService<AiSimpleChatMessageDO> {
|
||||
List<AiSimpleChatMessageDO> getMsgByMemoryId(Long memoryId);
|
||||
boolean deleteByMemoryId(Long memoryId);
|
||||
List<AiSimpleChatMessageDO> getMsgByMemoryId(Long userId, Long memoryId);
|
||||
boolean deleteByMemoryId(Long userId, Long memoryId);
|
||||
}
|
||||
|
||||
@@ -9,6 +9,6 @@ import org.springframework.stereotype.Repository;
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface IAiSimpleChatMessageMapper extends BaseMapper<AiSimpleChatMessageDO> {
|
||||
int deleteByMemoryId(@Param("id") Long memoryId);
|
||||
int deleteByMemoryId(@Param("userId") Long userId, @Param("memoryId") Long memoryId);
|
||||
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
</sql>
|
||||
|
||||
<update id="deleteByMemoryId">
|
||||
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}
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user