Skip to main content
状态 是 Agent 在运行期间需要维护的任何类型的数据。
Agent 一个简洁但常见的用例是为用户管理列表、项目和其他“信息”。例如,购物列表、待办事项列表、愿望清单等。可以使用 session_state 轻松管理。Agent 在工具调用中更新 session_state,并在 descriptioninstructions 中将其暴露给模型。
Agno 提供了一个强大而优雅的状态管理系统,其工作原理如下:
  • Agent 具有 session_state 参数。
  • 我们将状态变量添加到此 session_state 字典中。
  • 我们在工具调用或其他函数中更新 session_state 字典。
  • 我们在 descriptioninstructions 中与模型共享当前的 session_state
  • session_state 与 Agent 会话一起存储,并持久化到数据库中。这意味着它在执行周期之间可用。
以下 Agent 管理购物列表的示例:
session_state.py
这是状态管理所能达到的最佳状态了。

在多个运行中维护状态

会话的一个巨大优势是能够跨多次运行维护状态。例如,假设 Agent 正在帮助用户跟踪他们的购物列表。
通过设置 add_state_in_messages=Truesession_state 字典的键可以在 descriptioninstructions 中作为变量使用。使用此模式将 shopping_list 直接添加到指令中。
shopping_list.py
我们很喜欢能在多个运行中如此优雅地维护和传递状态。

在指令中使用状态

通过设置 add_state_in_messages=True,您可以在指令中使用来自会话状态的变量。
不要在指令中使用 f-string 语法。直接使用 {key} 语法,Agno 会为您替换值。
state_in_instructions.py

在数据库中持久化状态

session_state 是 Agent 会话的一部分,如果提供了 storage 驱动程序,它会在每次运行后保存到数据库中。 以下 Agent 维护购物列表并将其状态持久化到数据库的示例。多次运行此脚本以查看状态的持久化。
session_state_storage.py