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








相关推荐
ZPC8210几秒前
ROS 2 手眼标定完整方案
人工智能·算法·性能优化·机器人
2401_840192271 分钟前
数据库连接池和java servlet
java·数据库·servlet
OtIo TALL3 分钟前
Spring Boot管理用户数据
java·spring boot·后端
起个名字总是说已存在5 分钟前
github开源AI技能:UI UX Pro Max智能设计系统生成器
人工智能·ui·开源·github
Oflycomm8 分钟前
高通公司与Neura达成合作,重注人工智能机器人领域
人工智能·机器人·高通·wifi7·wifi模组
撬动未来的支点8 分钟前
【神经网络核心】张量、正向传播(空间映射)、反向传播(调整映射参数)
人工智能·深度学习·神经网络
小碗羊肉10 分钟前
【从零开始学Java | 第二十五篇】Set集合
java·开发语言
Seven9711 分钟前
用300行代码手写Spring核心原理
java
互联网志11 分钟前
具身智能:从炫技到实干,开启产业化新征程
人工智能
小垣11 分钟前
java调用yolo26n.onnx模型输出图像推理检测
java·人工智能·深度学习·onnx