从一次性问答到多轮对话
多轮对话不是把所有历史消息无限拼进去。它需要明确的消息结构、上下文裁剪策略和状态持久化方式。
基本结构
ts
type ChatMessage = {
role: "system" | "user" | "assistant"
content: string
}设计重点
- 系统消息定义长期行为,不放临时用户数据。
- 用户消息表达当前任务。
- 助手消息可以作为历史上下文,但需要裁剪。
- 重要业务状态不要只存在聊天记录里。
常见策略
- 保留最近几轮对话。
- 对较早历史做摘要。
- 把关键事实存入结构化状态。
- 对大型知识内容使用检索,而不是完整塞进历史。
学习目标
你需要把对话当成一个状态系统,而不是一个不断变长的字符串。