构建带记忆的对话机器人
入门·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": "步骤清晰,配代码"
}
程序在需要时把相关字段加入提示词。
隐私和控制权
记忆功能涉及隐私,必须让用户知道保存了什么。敏感信息不要默认长期保存,例如身份证、密钥、住址、公司机密。
最好提供“查看记忆”“删除记忆”“关闭记忆”的功能。
常见错误
- 无限追加历史导致成本暴涨;
- 把错误信息写入长期记忆;
- 用户改偏好后不更新;
- 保存敏感信息;
- 记忆和当前任务冲突时不处理。
小结
带记忆的机器人靠程序管理状态,而不是指望模型自己记住一切。短期记忆用于上下文,长期记忆用于偏好和背景,隐私控制必须从一开始设计。