数据智能体的状态管理

使用 Conversational Analytics API 进行构建时,状态管理是一项重要的架构考虑因素。您需要管理 API 的对话状态,对于使用 智能体开发套件 (ADK) 的应用,您还需要管理框架的会话状态。

API 状态模式

Conversational Analytics API 中的 chat 方法支持互斥的上下文参数,这些参数决定了对话状态的处理方式。

使用下表比较这些模式:

模式 状态 对话记录 智能体 参数 说明
使用对话引用进行对话 有状态 由 API 管理 ConversationReference 通过引用现有对话及其关联智能体来继续进行有状态对话。 Google Cloud 存储和管理对话记录。您只需在每轮中发送新消息。
使用数据智能体引用进行对话 无状态 由应用管理 DataAgentContext 发送引用已保存的数据智能体以获取上下文的无状态消息。您的应用必须管理对话记录,并在每次请求中提供完整的对话记录。
使用内嵌上下文进行对话 无状态 由应用管理 InlineContext 发送直接在请求中提供所有上下文的无状态消息。此模式不使用已保存的数据智能体。您的应用必须管理对话记录,并提供完整的对话记录。

ADK 会话状态

如果您使用 ADK 框架进行编排,ADK 会提供一个独立于 Conversational Analytics API 状态运行的状态管理层。了解这两个层对于构建正常运行的多智能体系统至关重要。

ADK 使用键前缀惯例来控制状态变量的范围和生命周期。使用下表评估这些范围:

键前缀 范围 从始至终 公开范围 示例
(无前缀) 会话 仅限当前会话 会话中的所有智能体 当前对话主题或上次查询的结果
user: 用户 在同一用户的所有会话中 指定用户的所有智能体和会话 用户偏好设置、已保存的数据智能体 ID 或语言设置
app: 应用 在所有用户的所有会话中 所有智能体和所有用户 全局应用配置、共享数据智能体 ID 或功能标志
temp: 调用 仅限当前调用 活跃调用中的当前智能体 中间响应数据,例如流式传输块或正在进行的计算

如需详细了解如何在多智能体系统中共享状态,请参阅ADK 文档

API 状态和 ADK 状态的互动方式

将 Conversational Analytics API 与 ADK 框架搭配使用时,状态层会独立运行:

  • API 状态:如果您的应用使用对话引用(有状态模式),则 API 会管理对话记录。如果您的应用使用数据智能体上下文或内嵌上下文(无状态模式),则 API 在每次调用时都保持无状态。
  • ADK 会话状态:无论 Conversational Analytics API 使用哪种模式,ADK 框架都会维护自己的会话、事件和状态变量。

例如,当您在 ADK 中使用 ask_data_insightsask_data_agent 工具时,即使 ADK 维护了更广泛的会话上下文,每个调用在 API 级别也是独立无状态的。ADK 流式传输演示说明了此互动的推荐模式:数据子智能体会将解析后的响应数据写入 temp: 状态,下游智能体随后会在同一调用中读取这些数据。

后续步骤