MetaGPT 中的记忆:让你的 AI 智能体拥有记忆力 2024-06-19 作者 C3P00 在之前的教程中,我们已经了解了智能体和多智能体系统。但一个真正强大的 AI 智能体,还需要拥有记忆能力。记忆可以帮助智能体积累经验,并根据过去的经验进行决策和行动。 本教程将带你了解 MetaGPT 中的记忆功能,以及如何使用它来提升你的 AI 智能体的能力。 MetaGPT 中的记忆 在 MetaGPT 中,Memory 类是智能体记忆的抽象表示。当一个角色被初始化时,它会获得一个 Memory 对象,用于存储它观察到的所有消息。这些消息会被保存在一个列表中,方便以后检索。 检索记忆 当你需要使用记忆时,例如将记忆作为 LLM 的上下文,可以使用 self.get_memories() 方法。该方法的定义如下: def get_memories(self, k=0) -> list[Message]: """A wrapper to return the most recent k memories of this role, return all when k=0""" return self.rc.memory.get(k=k) 该方法接受一个可选参数 k,用于指定要检索的最近记忆数量。如果 k 为 0,则返回所有记忆。 例如,在之前的多智能体教程中,我们使用 get_memories() 方法将所有记忆作为上下文提供给测试者。这样,如果审查者提供了反馈,测试者可以参考之前的版本修改测试用例。代码片段如下: async def _act(self) -> Message: logger.info(f"{self._setting}: ready to {self.rc.todo}") todo = self.rc.todo # context = self.get_memories(k=1)[0].content # 使用最近的记忆作为上下文 context = self.get_memories() # 使用所有记忆作为上下文 code_text = await todo.run(context, k=5) # 指定参数 msg = Message(content=code_text, role=self.profile, cause_by=todo) return msg 添加记忆 要添加记忆,可以使用 self.rc.memory.add(msg) 方法,其中 msg 必须是 Message 类的实例。 建议在定义 _act 方法时,将动作输出的消息添加到角色的记忆中。角色通常需要记住它之前说过的话或做过的事,才能采取下一步行动。 下一步 本教程介绍了 MetaGPT 中的“短期记忆”概念。记忆的检索是基于简单的最近性原则。然而,还有许多其他类型的记忆,以及各种各样的记忆生成和检索技术。你可以参考 Memory 教程,了解如何使用记忆来真正提升你的智能体的性能。
在之前的教程中,我们已经了解了智能体和多智能体系统。但一个真正强大的 AI 智能体,还需要拥有记忆能力。记忆可以帮助智能体积累经验,并根据过去的经验进行决策和行动。
本教程将带你了解 MetaGPT 中的记忆功能,以及如何使用它来提升你的 AI 智能体的能力。
MetaGPT 中的记忆
在 MetaGPT 中,
Memory
类是智能体记忆的抽象表示。当一个角色被初始化时,它会获得一个Memory
对象,用于存储它观察到的所有消息。这些消息会被保存在一个列表中,方便以后检索。检索记忆
当你需要使用记忆时,例如将记忆作为 LLM 的上下文,可以使用
self.get_memories()
方法。该方法的定义如下:该方法接受一个可选参数
k
,用于指定要检索的最近记忆数量。如果k
为 0,则返回所有记忆。例如,在之前的多智能体教程中,我们使用
get_memories()
方法将所有记忆作为上下文提供给测试者。这样,如果审查者提供了反馈,测试者可以参考之前的版本修改测试用例。代码片段如下:添加记忆
要添加记忆,可以使用
self.rc.memory.add(msg)
方法,其中msg
必须是Message
类的实例。建议在定义
_act
方法时,将动作输出的消息添加到角色的记忆中。角色通常需要记住它之前说过的话或做过的事,才能采取下一步行动。下一步
本教程介绍了 MetaGPT 中的“短期记忆”概念。记忆的检索是基于简单的最近性原则。然而,还有许多其他类型的记忆,以及各种各样的记忆生成和检索技术。你可以参考 Memory 教程,了解如何使用记忆来真正提升你的智能体的性能。