使用 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_insights 或 ask_data_agent 工具時,即使 ADK 維護了更廣泛的會期環境,每個呼叫在 API 層級仍是獨立無狀態。ADK 串流示範說明瞭這項互動的建議模式:資料子代理程式會將剖析的回應資料寫入 temp: 狀態,下游代理程式隨後會在同一次呼叫中讀取這些資料。
後續步驟
- 比較架構整合模式,找出最適合應用程式的方法。
- 瞭解 Conversational Analytics API 架構和重要概念。
- 瞭解如何驗證及連結資料來源。
- 瞭解如何使用 HTTP 建立及設定代理程式。
- 瞭解如何使用 Python 建立及設定代理程式。
- 進一步瞭解如何使用撰寫的背景資訊引導代理程式的行為。
- 瞭解如何使用 IAM 控管 Conversational Analytics API 的存取權。
- 瞭解如何使用 CMEK 保護資料代理程式和對話。
- 瞭解如何為 Looker 資料來源算繪代理程式回覆。