抖音私信+豆包智能体+大模型实现抖音后台私信智能人工客服
本文介绍了一个基于SpringBoot和大模型的智能对话系统实现方案。系统采用分层架构设计,包含实时对话处理、历史消息管理和定时任务调度三大核心功能模块。关键技术实现包括:20秒消息防重机制、首次/非首次对话区分处理、5分钟超时对话自动汇总,以及大模型智能回复引擎集成。系统通过MyBatis-Plus优化数据库操作,采用定时任务处理未完成对话,并实现了电话号码验证等业务逻辑。文章还提出了Redis

一、项目背景
在现代企业客服场景中,智能对话系统已成为提升服务效率的关键技术。本文介绍一个基于Spring Boot和大模型的智能对话系统实现,该系统具备实时对话处理、历史对话管理和定时任务处理等核心功能。
二、系统架构设计
2.1 技术栈
-
后端框架:Spring Boot 2.x
-
数据库操作:MyBatis-Plus
-
JSON处理:FastJSON
-
任务调度:Spring Scheduled
-
模型集成:自定义大模型接口
2.2 核心类设计
@RestController
@RequestMapping("/big")
public class BigController {
@Resource
private SendMapper sendMapper; // 消息发送Mapper
@Resource
private HistoryMapper historyMapper; // 历史记录Mapper
@Resource
private InfoMapper infoMapper; // 对话信息Mapper
}
三、核心功能实现
3.1 实时对话处理(show_msg接口)
3.1.1 消息防重机制
系统通过时间窗口和内容比对防止重复消息处理:
// 20秒内相同消息拦截
public boolean isWithin20Seconds(Info existInfo) {
if (existInfo == null || existInfo.getCreateTime() == null) {
return false;
}
long currentTime = System.currentTimeMillis();
long createTime = existInfo.getCreateTime().getTime();
long timeDifference = currentTime - createTime;
return timeDifference < 20000; // 20秒窗口
}
3.1.2 对话流程控制
系统区分首次对话和非首次对话,采用不同的响应策略:
// 首次对话:发送默认欢迎语
tempInfo2.setContent("您好,有台车要处理报废吗? 发下联系方式,给您沟通报价!");
// 非首次对话:调用大模型智能回复
String modelAnswer = SmartEntity_1.SmartWork(infoIn.getVisitor_id(), infoList);
3.2 消息补充机制(supply_msg接口)
该接口用于批量补充历史对话记录,确保对话完整性:
@PostMapping("/supply_msg")
public void supply_msg(@RequestBody InfoIn infoIn) {
// 批量处理消息补充,避免重复插入
for (InfoIn tempInfoIn : infoIn.getInfoInList()) {
// 检查消息是否已存在
QueryWrapper<Info> infoQueryWrapper = new QueryWrapper<>();
infoQueryWrapper.eq("visitor_id", tempInfoIn.getVisitor_id())
.eq("content", tempInfoIn.getContent());
Info existInfo = infoMapper.selectOne(infoQueryWrapper);
if (existInfo == null) {
// 插入新记录
infoMapper.insert(existInfo);
}
}
}
3.3 定时任务处理(scheduledRefresh方法)
3.3.1 任务调度配置
@Scheduled(fixedRate = 60000) // 每60秒执行一次
public void scheduledRefresh() {
// 处理超时对话逻辑
}
3.3.2 超时对话识别
系统识别5分钟无更新的对话进行批量处理:
public boolean isMoreThanTwoMinutes(Date createTime) {
LocalDateTime createDateTime = createTime.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDateTime();
LocalDateTime now = LocalDateTime.now();
Duration duration = Duration.between(createDateTime, now);
return duration.toMinutes() >= 5; // 5分钟超时
}
3.3.3 对话记录聚合与处理
// 按访客ID分组处理
Map<String, List<Info>> tempMap = allRecords.stream()
.collect(Collectors.groupingBy(Info::getVisitorId));
// 拼接对话记录
StringBuilder chatMessage = new StringBuilder();
for (Info info : infoList) {
String oneMsg = String.format("%s[%s]:%s",
info.getType().equals("answer") ? "客服" : info.getVisitorId(),
info.getCreateTime(),
info.getContent());
chatMessage.append(oneMsg).append("***");
}
四、数据库设计优化
4.1 对话信息表(Info)
-
visitor_id:访客唯一标识 -
content:消息内容 -
type:消息类型(question/answer) -
role:角色(user/assistant) -
create_time:创建时间 -
upload:上传状态标识
4.2 查询优化
使用MyBatis-Plus的Lambda表达式提高查询效率:
LambdaQueryWrapper<Info> wrapper = new LambdaQueryWrapper<>();
wrapper.orderByAsc(Info::getVisitorId)
.orderByAsc(Info::getCreateTime)
.isNull(Info::getUpload); // 过滤未上传记录
五、大模型集成策略
5.1 智能回复引擎
// 个性化回复生成 String modelAnswer = SmartEntity_1.SmartWork(visitorId, historyList); // 对话总结与提取 String res = SmartEntity_2.SmartWork(visitorId, chatHistory);
5.2 电话号码验证
if (PhoneNumberValidator.isValidPhoneNumber(JSON.toJSON(res).toString())) {
// 有效电话号码,执行上传
String workRes = HttpUpload.doWork(res);
} else {
// 标记为无效对话
tempInfo.setUpload("无效对话记录");
}
六、异常处理与日志
6.1 统一异常处理
try {
// 业务逻辑
infoMapper.insert(tempInfo);
return Res.success(tempInfo2);
} catch (Exception e) {
e.printStackTrace(); // 生产环境应使用日志框架
return Res.success("数据库操作发生异常" + new Date().toString());
}
6.2 日志输出
System.out.println("消息进入" + infoIn.getVisitor_id() + ":" + infoIn.getContent());
System.err.println("消息进入人大模型查到的消息:" + infoList.size());
七、性能优化建议
7.1 缓存策略
-
对频繁查询的访客信息添加Redis缓存
-
对话历史采用分页查询
7.2 数据库优化
-
为
visitor_id和create_time添加复合索引 -
定期归档历史对话记录
7.3 异步处理
-
大模型调用改为异步非阻塞
-
文件上传使用消息队列
八、部署与监控
8.1 部署建议
-
使用Docker容器化部署
-
配置Nginx负载均衡
-
设置健康检查端点
8.2 监控指标
-
接口响应时间
-
大模型调用成功率
-
数据库连接池状态
九、总结
本文详细介绍了基于大模型的智能对话系统设计与实现。系统通过实时对话处理、历史消息管理和定时任务调度,实现了完整的智能客服功能。关键技术点包括:
-
消息防重机制:20秒时间窗口防止重复处理
-
智能对话流程:区分首次和非首次对话场景
-
定时批量处理:5分钟超时对话自动汇总
-
大模型集成:个性化回复和对话总结
-
数据一致性:通过状态字段控制数据流转
该系统已在汽车报废咨询场景中得到验证,具有良好的可扩展性和稳定性,可根据不同业务需求快速适配。
更多推荐




所有评论(0)