View a markdown version of this page

情节记忆策略 - Amazon Bedrock AgentCore

情节记忆策略

情景记忆可以捕捉用户和系统交互的有意义片段,因此应用程序可以以一种感觉集中和相关的方式回忆上下文。它不是存储每个原始事件,而是识别重要时刻,将其汇总成紧凑的记录,然后对其进行整理,以便系统可以在没有噪音的情况下检索重要内容。这使模型能够了解背景是如何随着时间的推移而演变的,从而创造出更具适应性和智能性的体验。

它的优势在于它拥有跨越许多互动的结构化上下文,同时还能保持高效的存储、搜索和更新。开发人员无需设计自己的汇总管道,即可在新鲜度、准确性和长期连续性之间取得平衡。

反思建立在情节记录的基础上,通过分析过去的事件,得出见解、模式和更高层次的结论。reflections 不是简单地检索发生的事情,而是帮助系统理解某些事件为何重要,以及它们应该如何影响未来的行为。他们将原始的经验转化为应用程序可以立即使用的指导,为模型提供了一种从历史中吸取教训的方式。

它们的价值来自于将信息置于个人时刻或情节之上,并创造持久的知识,从而改善决策、个性化和一致性。这有助于应用程序避免重复错误,更快地适应用户的偏好,并以一种长时间保持连贯的方式行事。

在了解过去互动顺序可以提高质量的任何场景中,以及需要长期改进的场景中,客户都应使用情景记忆。理想的用例包括客户支持对话、代理驱动的工作流程、依赖会话历史记录的代码助手、个人生产力工具、故障排除或诊断流程,以及需要基于实际先前事件而不是静态配置文件的上下文的应用程序。

当你调用剧集策略时, AgentCore 会自动检测对话中的剧集完成情况,并将事件处理成结构化的剧集记录。

策略中的步骤

情节记忆策略包括以下步骤:

  • 提取-分析正在进行的剧集并确定剧集是否已完成。

  • 合并 — 剧集完成后,将摘录合并为单集。

  • 反思 — 洞察是跨剧集生成的。

策略输出

情节记忆策略会返回剧集和 re XML-formatted flections 的输出。每集都分为情境、意图、评估、理由和情节层面的反思。随着互动的进行,将逐一分析剧集。您可以使用这些信息来更好地了解操作顺序和工具的使用。

此策略捕捉的剧集示例

  • 一种代码部署交互,其中代理选择了特定的工具,遇到了错误,并使用其他方法成功解决了错误。

  • 一项预约重新安排任务,它捕捉了用户的意图、代理人使用特定工具的决定以及成功结果。

  • 一种数据处理工作流程,用于记录哪些参数可为特定数据类型带来最佳性能。

情节策略包括记忆提取和巩固步骤(与其他策略共享)。此外,情节策略还会生成 reflections,这些反射会在互动发生时在背景中分析情节。在多个事件中整合反思,以提取更广泛的见解,从而确定成功的策略和模式、潜在的改进、常见的失败模式以及跨越多种互动的经验教训。

反射的示例包括

  • 确定哪些工具组合可以持续为特定任务类型带来成功结果。

  • 识别失败尝试的模式以及解决这些模式的方法。

  • 从多个具有相似场景的成功剧集中提取最佳实践。

下图对情节记忆策略进行了示意图:

情景记忆策略的架构。

通过引用存储的剧集,您的代理可以通过语义搜索和查看 reflections 来检索相关的过去体验,以避免重复失败的方法,并使成功的策略适应新的环境。对于那些受益于识别模式、需要持续更新信息、保持互动一致性以及需要背景和推理而不是静态知识来做出决策的代理人来说,这种策略非常有用。

命名空间

当你使用情节策略创建记忆时,你可以定义用于存储剧集和反射的命名空间。

注意

无论你选择在哪个命名空间中存储剧集,剧集总是从一个会话中创建的。

剧集通常存储在以下命名空间之一:

  • /strategy/{memoryStrategyId}/— 在策略层面存储剧集。具有不同参与者或来自不同会话但属于相同策略的剧集存储在同一个命名空间中。

  • /strategy/{memoryStrategyId}/actor/{actorId}/— 存储演员级别的所有剧集。来自不同会话但属于同一个演员的剧集存储在同一个命名空间中。

  • /strategy/{memoryStrategyId}/actor/{actorId}/session/{sessionId}/— 在会话级别存储所有剧集。属于同一会话的剧集存储在同一个命名空间中。

Reflections 必须匹配与剧集相同的命名空间模式,但反射可以减少嵌套。例如,如果你的剧集命名空间是/strategy/{memoryStrategyId}/actor/{actorId}/,你可以将以下命名空间用于 reflections:

  • /strategy/{memoryStrategyId}/actor/{actorId}/— 将从演员的所有剧集中提取见解。

  • /strategy/{memoryStrategyId}/— 将从所有剧集和所有参与者中提取该策略的见解。

重要

由于 reflections 可以跨越同一内存资源中的多个参与者,因此在检索反射时,请考虑跨参与者分析对隐私的影响。如果有问题,可以考虑将护栏与记忆结合使用,或者在演员层面进行反思。

如何最好地检索剧集以提高代理性能

有多种方法可以利用情景记忆:

  • 在您的代理代码中

    • 开始新任务时,请将您的代理配置为执行查询,询问最相似的剧集和 reflections。还要根据某种逻辑查询相关的剧集和随后的反思。

    • 使用创建短期记忆时 CreateEvent,包括TOOL结果将产生最佳结果。

    • 对于类似的成功剧集,请将剧集中的回合线性化,然后仅将其提供给经纪人,使其专注于主要步骤

  • 手动方式

    • 查看你的 reflections 或失败的剧集,并考虑是否可以通过更新代理代码来解决某些问题

执行检索时,请注意,记忆记录是根据剧集的 “意图” 和反射的 “用例” 编制索引的。

对于其他记忆策略,记忆记录是在整个交互过程中定期生成的。相比之下,只有在 Memory 检测到已完成的剧集后,才会生成情节 AgentCore 记忆记录。如果剧集未完成,则需要更长的时间才能生成,因为系统会等待对话是否继续。