admin 管理员组文章数量: 1184232
AI对话系统表设计分析
根据您的描述和DeepSeek官网的交互模式,我来分析一下当前的表设计问题并提供改进建议。
当前表设计的问题
- 概念混淆:当前
AIConversation表混合了两个概念 - 对话会话(session)和单个消息交互(conversation turn) - 缺少对话标题:确实缺少对话的名称/标题字段
- 层级关系不明确:
session_id和conversation_id的关系不清晰
概念澄清
在AI对话系统中通常有两种层级:
-
会话(Session):代表一个完整的对话窗口/选项卡,包含多个交互轮次
- 例如:DeepSeek中你新建一个"Python编程问题"对话
- 有标题、创建时间等元数据
- 可以包含多个消息交互
-
交互轮次(Conversation Turn):单次用户提问和AI回复的配对
- 例如:在"Python编程问题"会话中你问"如何写快速排序",AI回复代码
改进建议
应该将表拆分为两个,明确层级关系:
from django.db import models
class AISession(models.Model):
"""代表一个完整的对话会话"""
session_id = models.CharField(max_length=100, unique=True, primary_key=True)
user_id = models.IntegerField(db_index=True)
title = models.CharField(max_length=200, default="新对话") # 对话框名称
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
is_active = models.BooleanField(default=True)
class Meta:
ordering = ['-updated_at']
class AIMessage(models.Model):
"""代表会话中的单次交互(用户消息+AI回复)"""
message_id = models.CharField(max_length=100, unique=True, primary_key=True)
session = models.ForeignKey(AISession, on_delete=models.CASCADE, related_name='messages')
user_id = models.IntegerField(db_index=True)
# 消息内容
prompt = models.TextField() # 用户输入
response = models.TextField() # AI回复
# 状态
status = models.SmallIntegerField(
choices=[(0, '处理中'), (1, '成功'), (2, '失败')],
default=0
)
# 元数据
created_at = models.DateTimeField(auto_now_add=True)
prompt_tokens = models.IntegerField(default=0)
response_tokens = models.IntegerField(default=0)
class Meta:
ordering = ['created_at']
设计说明
-
AISession表:
- 存储对话会话的元数据
- 包含用户可见的
title字段 - 通过
updated_at实现最近对话排序
-
AIMessage表:
- 存储每次具体的交互
- 通过外键关联到所属会话
- 包含完整的请求/响应内容和状态
-
ID关系:
- 一个
session_id对应多个message_id - 在DeepSeek官网示例中,浏览器地址栏中的ID应该是
session_id
- 一个
使用示例
# 创建新会话
session = AISession.objects.create(
session_id="sess_123",
user_id=1,
title="Python问题讨论"
)
# 添加消息
AIMessage.objects.create(
message_id="msg_001",
session=session,
user_id=1,
prompt="如何写快速排序?",
response="以下是Python实现的快速排序代码...",
status=1
)
这种设计更清晰地反映了AI对话系统的实际数据模型,也更容易实现常见的功能如对话列表、历史消息加载等。
版权声明:本文标题:支持多轮对话的AI消息存储方案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1765775468a3413605.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论