資料代理程式的狀態管理

使用 Conversational Analytics API 建構應用程式時,狀態管理是重要的架構考量。您要管理 API 的對話狀態,以及使用 Agent Development Kit (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 狀態的互動方式

搭配 ADK 架構使用 Conversational Analytics API 時,狀態層會獨立運作:

  • API 狀態:如果應用程式使用對話參照 (有狀態模式),API 會管理對話記錄。如果應用程式使用資料代理程式環境或內嵌環境 (無狀態模式),則 API 在每次呼叫時都會保持無狀態。
  • ADK 工作階段狀態:無論 Conversational Analytics API 使用哪種模式,ADK 框架都會維護自己的工作階段、事件和狀態變數。

舉例來說,當您使用 ADK 內的 ask_data_insightsask_data_agent 工具時,即使 ADK 維護了更廣泛的會期環境,每個呼叫在 API 層級仍是獨立無狀態。ADK 串流示範說明瞭這項互動的建議模式:資料子代理程式會將剖析的回應資料寫入 temp: 狀態,下游代理程式隨後會在同一次呼叫中讀取這些資料。

後續步驟