Skip to main content
使用 Session Storage 将 Agent 会话和状态持久化到数据库或文件中。
为什么我们需要 Session Storage?Agent 是短暂的,内置的内存仅能维持单个执行周期。在生产环境中,我们通过 API 提供(或触发)Agent,需要在多次请求中延续同一会话。Storage 能将会话历史记录和状态持久化到数据库中,让我们能够接续之前的进度。Storage 还允许我们检查和评估 Agent 会话,提取 few-shot 示例,并构建内部监控工具。它让我们能够查看数据,这有助于我们构建更好的 Agent。
将存储添加到 Agent、Team 或 Workflow 中,只需提供一个 Storage 驱动程序,Agno 会处理其余部分。你可以使用 Sqlite、Postgres、Mongo 或任何你想要的数据库。 下面是一个演示跨执行周期持久化的简单示例:
storage.py
首次运行此代码时,“What was my last question?” 的答案将不可用。但再次运行后,Agent 将能够正确回答。由于我们固定了会话 ID,Agent 每次运行时都将从相同的会话继续。

Storage 的优势

Storage 通常是 Agent Engineering 中一个讨论较少的环节——但我们认为它是生产环境中 Agent 应用的幕后英雄。 在生产环境中,你需要 storage 来:
  • 延续会话:检索会话历史记录并接续之前的进度。
  • 获取会话列表:要延续之前的会话,你需要维护一个可用于该 Agent 的会话列表。
  • 保存运行之间的状态:将 Agent 的状态保存到数据库或文件中,以便稍后进行检查。
但还有更多:
  • Storage 保存我们的 Agent 会话数据以供检查和评估。
  • Storage 帮助我们提取 few-shot 示例,可用于改进 Agent。
  • Storage 使我们能够构建内部监控工具和仪表板。
Storage 是 Agentic 基础设施的关键组成部分,绝不应外包给第三方。你应该几乎始终为你自己的 Agent 使用自己的存储层。

示例:使用 Postgres 进行存储

1

运行 Postgres

安装 docker desktop 并使用以下命令在端口 5532 上运行 Postgres
2

创建带有 Storage 的 Agent

创建一个名为 agent_with_storage.py 的文件,内容如下:
3

运行 Agent

安装库
运行 Agent
现在 Agent 可以跨会话延续了。问一个问题:
然后输入 bye 退出,重新启动应用程序并提问:
4

开始新的运行

使用 --new 标志运行 agent_with_storage.py 文件以开始新的运行。

Schema Upgrades

在使用 AgentStorage 时,基于 SQL 的存储类具有固定的模式。随着新 Agno 功能的发布,模式可能需要更新。 升级可以手动或自动完成。

自动升级

自动升级是在存储类的构造函数中将 auto_upgrade_schema 参数设置为 True 时完成的。 你只需要为 Agent 运行设置一次,模式就会被升级。

手动升级

可以通过在存储类上调用 upgrade_schema 方法来手动升级模式。

Params

开发者资源