如何对聊天对话进行持久化

对聊天数据进行持久化保存

准备工作

image

image

session_id

text

content

text

role

text

create_at

timestamptz

创建代码

image

image

SQL语句

INSERT into chat_session (content, role, session_id) VALUES ({{typeof content === 'string' ? content : JSON.stringify(content)}}, {{role}}, {{currentSession.value}})

参数

content any

role string

image

image

参数

content string

enableThink boolean

enableSearch boolean

提示词

{{content}}

会话ID

{{currentSession.value}}

是否启用思考模式

{{enableThink}}

是否启用互联网搜索

{{enableSearch}}

image

image

const newSession = `mobi-${Math.random()}`

currentSession.setValue(newSession);
sessions.setIn(sessions.value.length, {session_id:newSession, content: "新会话" })
queryConversation.trigger()
  • queryConversation

image

image

SQL语句

SELECT * FROM chat_session WHERE session_id = {{currentSession.value}}

数据转换

return data.map(el => ({ ...el, content: JSON.parse(el.content) }));

成功回调

组件 chatPro

方法 setMessages

{{queryConversation.data}}

  • querySession

image

image

SELECT 
    t1.session_id,
    t1.content,
    t1.create_at
FROM chat_session t1
INNER JOIN (
    SELECT 
        session_id,
        MIN(create_at) as min_create_at
    FROM chat_session
    GROUP BY session_id
) t2 ON t1.session_id = t2.session_id 
    AND t1.create_at = t2.min_create_at
ORDER BY t1.session_id;
  • sessions

image

数据绑定 概述

  • 新增对话列表

image

  • 会话管理

image

数据源

{{sessions.value}}

会话ID

{{currentItem.session_id}}

会话标题

{{currentItem.content}}

时间戳

{{currentItem.create_at}}

头像

https://gw.alicdn.com/imgextra/i3/O1CN01d29U791Ew7O0ch0Lw_!!6000000000415-55-tps-48-48.svg

默认选中

{{currentSession.value}}

事件 会话点击

currentSession.setValue(currentItem.session_id);
queryConversation.trigger();

imageimage

回答完成

addSession

{{chatPro1.messages[chatPro1.messages.length - 1].message}}

发送

addSession

{{{ role: 'user', content: sender1.value}}}