feat: stabilize rag chat conversations and auto title sync
This commit is contained in:
+20
-2
@@ -309,10 +309,12 @@ data: {"event":"error","task_id":"...","message_id":"...","code":"llm_error","me
|
||||
服务端行为说明:
|
||||
|
||||
- 若 `conversationId` 为空,会自动创建新会话
|
||||
- 若 `conversationId` 为空,会自动创建新会话,默认标题为 `新对话`
|
||||
- 会先落一条 `role = user` 消息,再流式生成回答
|
||||
- 流结束后会落一条 `role = assistant` 消息
|
||||
- 若命中知识库,会把引用结果写入 `sources / metadata`
|
||||
- 会根据对话内容追加 `suggested_questions`
|
||||
- 首轮回答完成后,后端会异步尝试生成会话标题
|
||||
- 当前应用解析顺序是:指定 `appId` -> 任意默认应用 -> 排序第一条应用;每一步都只检查当前命中的那一条记录是否可见,不会遍历全部可见应用
|
||||
|
||||
### 4.6 获取会话列表
|
||||
@@ -337,10 +339,12 @@ data: {"event":"error","task_id":"...","message_id":"...","code":"llm_error","me
|
||||
"data": [
|
||||
{
|
||||
"id": "b17d3b0b-xxxx-xxxx",
|
||||
"name": "新对话",
|
||||
"name": "烟草专卖法中的烟草定义",
|
||||
"introduction": "",
|
||||
"titleSource": "auto",
|
||||
"createdAt": 1746580000,
|
||||
"updatedAt": 1746580066
|
||||
"updatedAt": 1746580066,
|
||||
"lastMessageAt": 1746580066
|
||||
}
|
||||
],
|
||||
"hasMore": false,
|
||||
@@ -349,6 +353,15 @@ data: {"event":"error","task_id":"...","message_id":"...","code":"llm_error","me
|
||||
}
|
||||
```
|
||||
|
||||
补充说明:
|
||||
|
||||
- `titleSource` 取值:
|
||||
- `default`:默认标题,例如 `新对话`
|
||||
- `auto`:系统自动生成标题
|
||||
- `manual`:用户手动重命名
|
||||
- 会话列表排序按 `COALESCE(last_message_at, updated_at) DESC, updated_at DESC`
|
||||
- 自动标题更新不应该被前端视作“新消息到达”
|
||||
|
||||
### 4.7 获取会话消息
|
||||
|
||||
`GET /api/v3/rag/chat/conversations/{ConversationId}/messages`
|
||||
@@ -402,6 +415,11 @@ data: {"event":"error","task_id":"...","message_id":"...","code":"llm_error","me
|
||||
}
|
||||
```
|
||||
|
||||
补充说明:
|
||||
|
||||
- 手动重命名会将该会话的标题来源标记为 `manual`
|
||||
- 已手动重命名的会话,后续自动标题任务不得覆盖
|
||||
|
||||
说明:
|
||||
|
||||
- 返回结构是按“问答对”聚合后的结果,不是底层 `rag_message` 原始逐条结果。
|
||||
|
||||
Reference in New Issue
Block a user