1. 如何实现历史记录和连续对话功能呢?
1.1 SpringAI 连续对话实现




java
import com.ai.deepseek.entity.ChatMessageDO;
import com.ai.deepseek.mapper.ChatMessageMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.ai.chat.memory.ChatMemory;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.stream.Collectors;
@Component
public class MySQLchatMemory implements ChatMemory {
@Autowired
private ChatMessageMapper repository;
@Override
public void add(String conversationId, Message message) {
ChatMessageDO entity = new chatMessageD0();
entity.setConversationId(conversationId);
entity.setRole(message.getMessageType().name());
entity.setContext(message.getText());
repository.insert(entity);
}
@Override
public void add(String conversationId, List<Message> messages) {
messages.forEach(message -> add(conversationId, message));
}
@Override
public List<Message> get(String conversationId, int lastN) {
LambdaQueryWrapper<ChatMessageD0> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eg(ChatMessageD0::getConversationId, conversationId);
//queryWrapper.orderByDesc(ChatMessageDO::getId);
return repository.selectList(queryWrapper)
.stream()
.limit(lastN)
.map(e -> new UserMessage(e.getContext()))
.collect(Collectors.toList());
}
@Override
public void clear(String conversationId) {
LambdaQueryWrapper<ChatMessageD0> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eg(ChatMessageD0::getConversationId, conversationId);
repository.delete(queryWrapper);
}
}


1.2 SpringAI Alibaba 连续对话实现




1. 在微服务项目中如何实现聊天机器人?






2. SpringBoot项目如何将结果流式输出给用户?







