FastGPT 引申:利用 Prompt 实现 Agent 记忆能力
参考 FastGPT 记忆能力,设计如下的 Prompt 模板,该模板通过明确的角色、知识库、交互历史等标记,实现了对用户输入的多轮交互记忆管理。
Prompt 定义
下面的内容正是我在项目中使用的 Prompt:
# 角色:你是一个任务失败诊断专家,可以根据用户输入结合知识库和交互历史内容进行简要分析,适当给出解决方案。
# 知识库:使用 <Data></Data> 标记中的内容作为你的知识
<Data>
</Data>
# 回答要求:
- 如果你不清楚答案,你需要澄清。
- 避免提及你是从 <Data></Data> 获取的知识。
- 保持答案与 <Data></Data> 中描述的一致。
- 保持答案与 <History></History> 中描述的一致。
- 使用 Markdown 语法优化回答格式。
- 使用中文进行回答。
# 交互历史:使用 <History></History> 标记中的内容作为你的交互历史
<History>
- 第一轮
```
我是张三
```
```
你好,张三!有什么问题我可以帮助你解答吗?无论是工作、学习还是生活上的疑问,都可以随时问我。
```
- 第二轮
```
我是谁
```
```
很高兴能够帮助你,张三。如果你有任何问题或需要帮助,请随时告诉我。
```
- 第三轮
```
我改名了,我叫李四
```
```
好的,我理解了,李四。请问有什么问题我可以帮助您解答吗?无论是工作、学习还是生活上的疑问,都可以随时问我。如果您有任何问题或需要帮助,请随时告诉我。
```
- 第四轮
```
我叫什么
```
```
很高兴能够帮助你,李四。请问有什么问题我可以帮助您解答吗?无论是工作、学习还是上的疑问,都可以随时问我。如果您有任何问题或需要帮助,请随时告诉我。
```
</History>
# 本次输入:
我之前都起过什么名字
常见实现方式
为了增强 Agent 的智能与连续性,除了在 Prompt 中利用交互历史实现短期记忆外,业界目前还探索了多种记忆机制,主要包括:
-
短期记忆
- 上下文窗口与 KV Cache:
Transformer 模型利用上下文窗口和 KV Cache 存储最近对话内容,实现类似“短期记忆”的效果,支持实时对话中的信息捕捉和处理。 - 实时上下文整合:
通过提示工程动态整合最新输入,使得 Agent 能保持最新状态并快速响应。
- 上下文窗口与 KV Cache:
-
长期记忆
- 向量数据库检索(RAG):
将历史交互内容转为向量后存储于外部数据库,利用相似度搜索在需要时召回相关信息,这种方式广泛用于RAG(检索增强生成)架构。 - 记忆总结与压缩:
定期将长对话进行总结,提炼关键信息生成摘要,既节省存储空间又便于后续检索,有效应对上下文窗口长度限制。
- 向量数据库检索(RAG):
-
记忆流与反思机制
- 记忆流(Memory Stream):
以时间轴方式记录所有交互观察,每条记录包含描述和时间戳。检索时综合近期性、重要性和相关性打分排序,选择最有价值的信息作为决策参考。 - 反思与计划结合:
部分系统通过定期反思,将低层次观察抽象为高层次总结,形成反思树,辅助 Agent 在规划和决策时调用更具概括性的记忆内容。
- 记忆流(Memory Stream):
-
情节记忆与语义记忆
- 情节记忆:
记录具体的交互事件,类似于人类对特定经历的记忆,有助于回顾详细情境。 - 语义记忆:
存储关于世界的常识和背景知识,常与外部知识库结合,为Agent提供更全面的信息支持。
- 情节记忆:
内容总结
通过在 Prompt中明确标记角色、交互历史及知识库,我的项目实现了对多轮对话的有效管理。同时,结合短期记忆、长期记忆、记忆流与反思机制等多种实现方式,Agent 可以更好地模拟人类的记忆特性,既保持实时对话的连贯性,又能在长期交互中不断优化自身表现。这样的设计不仅提升了系统智能,也为后续的功能扩展奠定了坚实基础。