9. AI面试题之 功能代码实现

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项目如何将结果流式输出给用户?








相关推荐
xieliyu.5 分钟前
Java算法精讲:双指针(三)
java·开发语言·算法
我没胡说八道6 分钟前
高校论文AI检测优化工具对比研究与实测分析(2026)
人工智能·深度学习·机器学习·计算机视觉·aigc·论文
秦亚伟7 分钟前
AI浪潮重塑融资租赁行业新格局
人工智能
love530love7 分钟前
LiveTalking 数字人项目 Windows 部署完全指南(EPGF 架构)
人工智能·windows·python·架构·livetalking·epgf
元启数宇8 分钟前
喷淋AI布点实战:8小时人工布点→20分钟自动出图
人工智能
哈哈,柳暗花明8 分钟前
人工智能专业术语详解(H)
人工智能·专业术语
圣殿骑士-Khtangc10 分钟前
AI 编程工具 2026 实战横评:Cursor 3 vs Claude Code vs Copilot,开发者选型完全指南
人工智能·copilot
云器科技14 分钟前
云器Lakehouse 2026年5月版本发布:拥抱 AI Agent,重塑数据智能开发新范式
人工智能
小鹰-上海鹰谷-电子实验记录本15 分钟前
第六届党建引领科创生态座谈会 | 邓光辉博士出席分享AI赋能创新药科研新范式
人工智能·ai·电子实验记录本·药企合规
明夜之约20 分钟前
Spring Boot 自动装配源码
java·spring boot·后端