设计模仿DeepSeek网页版的前端用户交互接口
- AI相关
- 时间:2025-11-27 18:10
- 73人已阅读
🔔🔔🔔好消息!好消息!🔔🔔🔔
有需要的朋友👉:联系凯哥
需求:需要结合“会话内多次问答+单问题多轮回答(版本)+重新生成+点赞点踩”的完整需求,设计模仿DeepSeek网页版的前端用户交互接口。以下是覆盖所有核心场景的接口设计,包含接口功能、参数、响应及业务逻辑说明:
一、前端用户交互核心接口(按模块分类)
1. 应用模块(选择AI应用)
| 接口功能 | 请求方式 | 请求URL | 请求参数(示例) | 响应示例 |
|---|---|---|---|---|
| 获取应用列表 | GET | /api/ai/application/list | pageNum=1&pageSize=10 | {code:200,data:{list:[{id:"app_001",name:"线路安规",desc:"..."},...]}} |
| 获取应用详情(含配置) | GET | /api/ai/application/{id} | 路径参数id | {code:200,data:{id:"app_001",name:"线路安规",config:{url:"dify-url",apiKey:"xxx"}}} |
2. 会话模块(管理聊天会话)
| 接口功能 | 请求方式 | 请求URL | 请求参数(示例) | 响应示例 |
|---|---|---|---|---|
| 创建新会话 | POST | /api/ai/chat/create | {applicationId:"app_001",clientId:"user_001",overview:"首次提问:什么是安规?"} | {code:200,data:{chatId:"chat_001",overview:"首次提问:什么是安规?"}} |
| 获取会话列表 | GET | /api/ai/chat/list | applicationId=app_001&clientId=user_001&pageNum=1 | {code:200,data:{list:[{chatId:"chat_001",overview:"...",createTime:"..."},...]}} |
| 获取会话详情(含所有问答) | GET | /api/ai/chat/{chatId}/detail | 路径参数chatId | {code:200,data:{chatId:"chat_001",overview:"...",qaList:[{baseRecordId:"rec_001",problem:"什么是安规?",versions:[{recordId:"rec_001",answer:"...",likeCount:0},{recordId:"rec_002",answer:"...",likeCount:1}],userEvaluate:null},...]}} |
| 会话重命名 | PUT | /api/ai/chat/{chatId}/rename | {overview:"安规相关问题咨询"} | {code:200,msg:"重命名成功"} |
| 删除会话 | DELETE | /api/ai/chat/{chatId} | 路径参数chatId | {code:200,msg:"删除成功"} |
3. 问答/版本模块(核心交互)
| 接口功能 | 请求方式 | 请求URL | 请求参数(示例) | 响应示例 |
|---|---|---|---|---|
| 发送新问题(生成基础回答) | POST | /api/ai/qa/send | {chatId:"chat_001",applicationId:"app_001",clientId:"user_001",problemText:"什么是安规?"} | {code:200,data:{baseRecordId:"rec_001",versionRecordId:"rec_001",answer:"...",runTime:500}} |
| 重新生成回答(新增版本) | POST | /api/ai/qa/{baseRecordId}/regenerate | 路径参数baseRecordId + {chatId:"chat_001",clientId:"user_001"} | {code:200,data:{versionRecordId:"rec_002",answer:"新版本回答...",versionNum:2}} |
| 获取单个问答的所有版本 | GET | /api/ai/qa/{baseRecordId}/versions | 路径参数baseRecordId | {code:200,data:{baseRecordId:"rec_001",problem:"什么是安规?",versions:[{recordId:"rec_001",answer:"...",likeCount:0},{recordId:"rec_002",answer:"...",likeCount:1}],userEvaluate:{type:1,recordId:"rec_002"}}} |
4. 评价模块(点赞/点踩)
| 接口功能 | 请求方式 | 请求URL | 请求参数(示例) | 响应示例 |
|---|---|---|---|---|
| 点赞/点踩回答版本 | POST | /api/ai/evaluate | {recordId:"rec_002",clientId:"user_001",evaluateType:1}(1=点赞,2=点踩) | {code:200,data:{likeCount:1,dislikeCount:0}} |
| 取消评价 | DELETE | /api/ai/evaluate/{recordId} | 路径参数recordId + clientId=user_001 | {code:200,data:{likeCount:0,dislikeCount:0}} |
5. 辅助模块(常见问题)
| 接口功能 | 请求方式 | 请求URL | 请求参数(示例) | 响应示例 |
|---|---|---|---|---|
| 获取应用常见问题 | GET | /api/ai/hotProblem/list | applicationId=app_001 | {code:200,data:{list:[{problem:"...",answer:"..."},...]}} |
二、关键接口的业务逻辑说明
1. “获取会话详情”接口(核心)
前端最依赖的接口,需返回结构化的问答+版本数据:
qaList:会话内的所有问答(按提问时间排序);每个问答包含
baseRecordId(基础记录ID,即首次提问的记录ID);versions:该问题下的所有回答版本(含版本号、回答内容、点赞数);userEvaluate:当前用户对该问答下某版本的评价状态(如点赞了版本2)。
2. “重新生成回答”接口
入参
baseRecordId定位到需要重新生成的问题;后端调用dify API生成新回答后,新增
ai_application_chat_record记录(parent_record_id=baseRecordId);同步更新
ai_answer_version表,绑定基础记录与新版本记录。
3. “点赞/点踩”接口
唯一索引保证用户对同一版本只能评价一次;
后端需统计该版本的总点赞/点踩数并返回,供前端实时更新UI。
三、接口设计亮点
版本聚合清晰:通过
baseRecordId将同一问题的多版本回答聚合,前端无需处理复杂关联;状态透传:响应中直接返回“当前用户的评价状态”,前端可直接标记“已点赞/已点踩”;
兼容流式响应:若需支持DeepSeek的流式回答,可新增
/api/ai/qa/send/stream接口(SSE或WebSocket),实时返回回答内容。
总结
核心接口设计覆盖了DeepSeek网页版的所有交互场景,关键要点:
会话管理接口聚焦“会话生命周期”(创建、列表、详情、删除);
问答接口聚焦“问题-版本”聚合,通过
baseRecordId关联多版本;评价接口精准绑定“用户-版本”,保证交互唯一性。
这些接口既匹配你设计的表结构,又能让前端快速实现“会话列表→问答详情→版本切换→互动评价”的完整流程。