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








相关推荐
程序员-珍17 分钟前
报错下载android sdk失败
android·java
weixin_66819 分钟前
Cursor-superpowers插件用法
数据库·人工智能
adinnet202620 分钟前
深度拆解企业级 Agent 架构:LangGraph + 知识图谱 + 向量检索的协同设计
人工智能·架构·知识图谱
糖果店的幽灵22 分钟前
langgraph分支之 - 动态分支(Dynamic Branch)
java·前端·javascript·人工智能·langgraph
这张生成的图像能检测吗25 分钟前
(论文速读)SCNN:用于交通场景理解的空间CNN
人工智能·深度学习·目标检测·计算机视觉·道路线检测
@insist12330 分钟前
系统规划与管理师-流程评价与持续改进核心知识-终章
大数据·人工智能·软考·系统规划与管理师·软件水平考试·系统规划与管理工程师
阿虎儿32 分钟前
Dify 中的 JSON Schema 标准与实战指南
人工智能
meilindehuzi_a32 分钟前
Workflow 与 Agent 有什么区别:从 LangChain 流水线到智能体决策
前端·人工智能
SLD_Allen34 分钟前
大规模分布式AI训练基础设施
人工智能·分布式·模型训练
吃饱了得干活40 分钟前
亿级订单表分库分表设计,从0到1全流程
java·数据库·面试