AI智能机器人-学习项目
“聊天机器人” 的小功能 —— SSE 实时流渲染 AI 大模型的回答,还需要添加以下功能:
开启新对话;
左侧栏展示历史对话,方便查看之前的问答内容;
右侧栏:
对话框:支持动态选择不同的 AI 大模型;
对话框:支持勾选联网搜索;
与 AI 大模型的聊天消息记录,需要存储到数据库中,后续也需要从服务端来获取;
创建表
分析完接下来需要开发的功能后,我们需要在 PostgreSQL 数据库中,新建两张表。
聊天对话表
用户点击 “开启新对话”,即在此表添加一条对话记录,以 UUID 作为对话的唯一标识。
为什么要使用 UUID 作为唯一标识?好处是 UUID 难以猜测,不像自增 ID 那样容易被人遍历,从而爬取所有对话内容,增强了数据安全性。
聊天对话表的建表语句如下:
-- 聊天对话表
CREATE TABLE t_chat (
id BIGSERIAL PRIMARY KEY, -- 主键
uuid VARCHAR(60) UNIQUE NOT NULL, -- 对话 UUID
summary VARCHAR(60), -- 对话摘要
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP -- 更新时间
);
-- 为表添加注释
COMMENT ON TABLE t_chat IS '聊天对话表';
-- 为字段添加注释
COMMENT ON COLUMN t_chat.id IS '主键ID,自增唯一标识';
COMMENT ON COLUMN t_chat.uuid IS '对话UUID,全局唯一标识';
COMMENT ON COLUMN t_chat.summary IS '对话摘要(最大长度60字符)';
COMMENT ON COLUMN t_chat.create_time IS '记录创建时间(默认当前时间)';
COMMENT ON COLUMN t_chat.update_time IS '记录最后更新时间(默认当前时间)';
-- 添加索引
CREATE INDEX idx_chat_update_time ON t_chat (update_time);
聊天消息表
每一个对话中,可以包含多条消息。它们是一对多的关系。聊天消息表建表语句如下:
-- 聊天消息表
CREATE TABLE t_chat_message (
id BIGSERIAL PRIMARY KEY, -- 主键ID,自增唯一标识
chat_uuid VARCHAR(60) NOT NULL, -- 关联的对话表的UUID
content TEXT NOT NULL, -- 消息内容
role VARCHAR(12), -- 消息角色(如:user/assistant)
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP -- 消息创建时间
);
-- 为表添加注释
COMMENT ON TABLE t_chat_message IS '聊天消息记录表';
-- 为字段添加注释
COMMENT ON COLUMN t_chat_message.id IS '主键ID,自增唯一标识';
COMMENT ON COLUMN t_chat_message.chat_uuid IS '关联的对话UUID,与t_chat表的uuid字段关联';
COMMENT ON COLUMN t_chat_message.content IS '消息内容';
COMMENT ON COLUMN t_chat_message.role IS '消息发送者角色(如:user-用户,assistant-助手)';
COMMENT ON COLUMN t_chat_message.create_time IS '消息创建时间(默认当前时间)';
-- 添加索引
create index idx_chat_message_create_time on t_chat_message (create_time);
create index idx_chat_message_uuid on t_chat_message (chat_uuid);
执行 SQL 语句
接着,打开 DataGrip, 在 console 控制台中,将以上 SQL 全部复制进去,Ctrl + S 全选,点击左上角的 “执行” 按钮即可。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Turnin
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果