请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

针对“多轮对话功能,管理历史对话内容”技术方案的提问

老师好:
在这小节视频中,讲解的关于“多轮对话功能,管理历史对话内容”的技术方案中我有2个问题想请教一下:

  1. 前端在构建完整的上下文消息数组(包含历史记录,例如最近的20条对话 + 当前用户消息)的技术方案中,这里是不是只是方便于demo讲解,如果是生产级别的项目,我理解是不是可以:前后端之间只传递会话id(session_id),然后构建完整的上下文消息数组的工作,放到后端来做,属于后端和大模型之间的工作,因为这些对话消息本身就是后端返回给前端的,不需要前端截取后再传给后端
  2. 对于在浏览器本地做消息对话的缓存,我没有理解这么做的目的是什么,是为了加载对话数据的速度能快一些吗?因为我使用了千问、元宝、豆包这些,我貌似没有在localstorage或者indexDB中看到缓存对话内容,所以想请教一下这里咱们课程中缓存的作用是为了什么解决什么问题(或者是为了带来什么优化)

正在回答 回答被采纳积分+3

2回答

喜康 2026-02-17 12:23:21
课程中提到的在浏览器本地(localStorage)缓存对话内容,主要有这几个目的:

1. 提升加载速度:用户再次打开页面时,先从本地缓存快速加载历史对话,避免等待网络请求,优化体验。
2. 支持离线查看:在网络不稳定或短暂离线时,用户仍能查看之前的对话记录。
3. 减少服务器压力:对于非敏感的历史对话,本地缓存可以减少不必要的重复请求。
4. 恢复对话状态:刷新页面后,能快速恢复当前的对话上下文,避免丢失。

至于你提到的千问、元宝、豆包等产品,它们通常采用更复杂的混合策略,结合了服务端会话管理、内存缓存,并且对缓存数据进行了加密和压缩,所以不易被直接观察到。
1 回复 有任何疑惑可以回复我~
喜康 2026-02-16 17:10:26
你的理解是完全正确的,在生产级项目中,确实应该把构建完整上下文消息数组的工作交给后端,而不是前端。
·Demo场景:前端直接拼接历史消息+当
前消息,是为了简化演示,让学习者直观看到“上下文是如何传递给大模型”的过程。
·生产环境:
1.安全性:前端传递的任何数据都不可信。
如果让前端负责拼接上下文,恶意用户可以篡改历史消息,误导大模型生成错误内容。
2.数据一致性:对话历史是后端存储的核
心数据,由后端从数据库或缓存中读取并构建上下文,可以保证数据的完整性和一致性,避免前端缓存与后端数据不同步的问题。
3.带宽与性能:只传递 会话Id ,可以大幅减少网络传输的数据量,提升响应速度。
你可以采用传递会话id的方式 ,然后根据会话id 去数据库查询历史聊天信息,并传给Ai 模型,从而实现多轮对话功能。
1 回复 有任何疑惑可以回复我~
  • 提问者 慕名小白 #1
    明白了,感谢老师,祝老师新年快乐
    回复 有任何疑惑可以回复我~ 2026-02-17 15:57:21
  • 喜康 回复 提问者 慕名小白 #2
    好的,也祝你学习愉快。有问题可以提出来,我会及时做出解答。
    回复 有任何疑惑可以回复我~ 2天前
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号