构建带记忆的对话机器人

入门·10 分钟·通过可运行代码讲解「构建带记忆的对话机器人」,覆盖环境准备、核心代码、参数说明、异常处理、工程化改造和练习任务,适合 AI 编程入门。

构建带记忆的对话机器人

带记忆的对话机器人不仅能回答当前问题,还能记住用户偏好、任务进度或历史摘要。这里的记忆不是让模型无限保存聊天记录,而是由程序管理上下文。

记忆分两类

短期记忆:当前会话里的最近几轮对话,用于理解上下文。

长期记忆:跨会话保存的信息,例如用户偏好、项目背景、常用格式。长期记忆应该结构化保存,并允许用户查看和删除。

短期记忆实现

messages = [{'role': 'system', 'content': '你是学习助手'}]
 
def add_message(role, content):
    messages.append({'role': role, 'content': content})
    keep_recent_messages()

保留最近 N 轮可以控制 token 成本。

摘要式记忆

当对话很长时,可以把早期内容总结成摘要:

memory_summary = '用户正在学习RAG,偏好通俗解释和Python示例。'
messages = [
    {'role': 'system', 'content': '你是学习助手'},
    {'role': 'system', 'content': f'历史摘要:{memory_summary}'},
    *recent_messages
]

摘要要短、准、可更新。

长期记忆结构

不要把长期记忆只写成一大段文本。可以保存成 JSON:

{
  "name": "小明",
  "level": "Python入门",
  "interests": ["RAG", "本地模型"],
  "output_style": "步骤清晰,配代码"
}

程序在需要时把相关字段加入提示词。

隐私和控制权

记忆功能涉及隐私,必须让用户知道保存了什么。敏感信息不要默认长期保存,例如身份证、密钥、住址、公司机密。

最好提供“查看记忆”“删除记忆”“关闭记忆”的功能。

常见错误

  • 无限追加历史导致成本暴涨;
  • 把错误信息写入长期记忆;
  • 用户改偏好后不更新;
  • 保存敏感信息;
  • 记忆和当前任务冲突时不处理。

小结

带记忆的机器人靠程序管理状态,而不是指望模型自己记住一切。短期记忆用于上下文,长期记忆用于偏好和背景,隐私控制必须从一开始设计。