题目
当模型接口不替应用保存会话时,如何实现连续的多轮对话?
答案
由应用保存消息历史,每次调用模型前,读取当前会话需要的历史,再加上本轮用户消息。模型能接着聊,是因为本次输入包含了之前的信息。 会话存储至少关联租户、用户、会话 ID、消息 ID、角色、内容和时间。工具调用及其结果也要一起保存,不能只保存用户和助手的文本。 历史过长时,采用最近消息加摘要或按需检索。完整记录仍可保存在数据库中,但不必每次全部发给模型。模型输出和工具执行要分别记录,便于中断后恢复。 ![应用保存会话,模型读取本轮上下文](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/question/agent-development/extra-conversation-storage-340692c4137a3a2b.png) 同一会话出现并发请求时,需通过串行队列、锁或状态版本控制顺序。否则两个请求可能基于同一份旧历史生成回复,造成对话上下文交叉。会话 ID 也不是权限凭证,读取前必须检查归属。