自动生成对话标题的设计方案
🎯 核心设计理念
异步生成 + 多层降级 + 用户体验优先
📋 整体架构流程
1 | 用户首次提问 → 创建对话(临时标题) → AI回复 → 异 |
🔧 技术实现方案
1. 触发时机设计
- 主触发点 :用户发送首条消息且AI回复完成后
- 备选触发 :对话创建后的第一次消息交互
- 手动触发 :提供用户主动重新生成标题的接口
2. 标题生成策略(三层降级)
第一层:LLM智能生成
- 使用现有的 deepseek-reasoner 模型
- 专门设计标题生成 prompt
- 输入:用户问题 + AI回答的前200字
- 输出:10-30字符的精准标题
第二层:关键词提取
- LLM生成失败时的备选方案
- 提取用户问题中的关键词
- 组合成简洁标题
第三层:默认规则
- 使用时间戳 + “新对话”
- 确保系统稳定性
3. 异步处理架构
1 | # 推荐实现方式 |
4. 数据库设计优化
在 Conversation 模型中添加:
- title_status : 标题状态(generating/completed/failed)
- title_generated_at : 标题生成时间
- auto_generated : 是否自动生成的标题
🚀 实施步骤
阶段一:基础功能
- 创建 TitleGenerationService 服务类
- 在聊天接口中集成异步标题生成
- 实现基本的LLM标题生成
阶段二:优化体验
- 添加多层降级策略
- 实现前端状态显示
- 提供手动编辑功能
阶段三:高级功能
- 批量重新生成历史标题
- 用户偏好设置
- 标题生成历史和版本管理
💡 关键优势
- 用户体验流畅 :异步处理不阻塞聊天
- 高可靠性 :多层降级确保总能生成标题
- 智能化程度高 :利用AI理解对话内容
- 可扩展性强 :支持后续功能增强
- 性能优化 :避免同步等待影响响应速度
🔒 错误处理机制
- 重试策略 :最多3次重试
- 超时控制 :单次生成不超过10秒
- 日志记录 :详细记录失败原因用于优化
- 用户反馈 :允许用户报告标题质量问题
📊 监控指标
- 标题生成成功率
- 各层降级策略使用比例
- 用户手动修改标题的频率
- 标题生成平均耗时
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Excelius's World!