设计模仿DeepSeek网页版的前端用户交互接口

  • 作者: 凯哥Java(公众号:凯哥Java)
  • AI相关
  • 时间:2025-11-27 18:10
  • 74人已阅读
简介 需求:需要结合“会话内多次问答+单问题多轮回答(版本)+重新生成+点赞点踩”的完整需求,设计模仿DeepSeek网页版的前端用户交互接口。以下是覆盖所有核心场景的接口设计,包含接口功能、参数、响应及业务逻辑说明:一、前端用户交互核心接口(按模块分类)1.应用模块(选择AI应用)接口功能请求方式请求URL请求参数(示例)响应示例获取应用列表GET/api/ai/application/listpag

🔔🔔🔔好消息!好消息!🔔🔔🔔

有需要的朋友👉:联系凯哥 微信号 kaigejava2022

需求:需要结合“会话内多次问答+单问题多轮回答(版本)+重新生成+点赞点踩”的完整需求,设计模仿DeepSeek网页版的前端用户交互接口。以下是覆盖所有核心场景的接口设计,包含接口功能、参数、响应及业务逻辑说明:

一、前端用户交互核心接口(按模块分类)

1. 应用模块(选择AI应用)

接口功能请求方式请求URL请求参数(示例)响应示例
获取应用列表GET/api/ai/application/listpageNum=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/listapplicationId=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/listapplicationId=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。

三、接口设计亮点

  1. 版本聚合清晰:通过baseRecordId将同一问题的多版本回答聚合,前端无需处理复杂关联;

  2. 状态透传:响应中直接返回“当前用户的评价状态”,前端可直接标记“已点赞/已点踩”;

  3. 兼容流式响应:若需支持DeepSeek的流式回答,可新增/api/ai/qa/send/stream接口(SSE或WebSocket),实时返回回答内容。

总结

核心接口设计覆盖了DeepSeek网页版的所有交互场景,关键要点:

  1. 会话管理接口聚焦“会话生命周期”(创建、列表、详情、删除);

  2. 问答接口聚焦“问题-版本”聚合,通过baseRecordId关联多版本;

  3. 评价接口精准绑定“用户-版本”,保证交互唯一性。

这些接口既匹配你设计的表结构,又能让前端快速实现“会话列表→问答详情→版本切换→互动评价”的完整流程。


TopTop