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








相关推荐
北方的银狐-Zero19 分钟前
ERP 管执行,数据管标准,OntoL本体 管思考:企业智能化升级的规划图
大数据·人工智能·本体论
Wang's Blog20 分钟前
Java 接入Redis: 服务启动停止与后台运行配置
java·服务器·redis
此时不提桶,更待何时36 分钟前
01-04-B-垃圾回收面试与生产事故实战
java·jvm·面试
浅安的邂逅1 小时前
260918-白帽把 OpenAI 论坛“打穿“了:攻防赛漏洞、账户被 Claude 入侵、模型偷偷掩盖不当行为
人工智能·大模型·ai编程·ai模型·行业动态
jinyishu_1 小时前
认识 AI Agent:概念、架构、设计模式与主流框架
人工智能
Hrain-AI1 小时前
AI 爬虫三档授权工程落地:搜索放行、训练拦截、Agent 分层(附脚本)
人工智能·elasticsearch·milvus
sunhy_csdn1 小时前
“词码”作为 Token 候选译名
人工智能
Hrain-AI1 小时前
多 Agent 并行不打架:worktree 隔离与反馈回流落地(附脚本)
网络·数据库·人工智能·架构
Koi慢热2 小时前
DayDayMap学术社区体验:卫星网络测绘专题用下来怎么样
网络·人工智能·windows·web安全·网络安全