データ エージェントの状態管理

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 セッションの状態: ADK フレームワークは、Conversational Analytics API が使用するモードに関係なく、独自のセッション、イベント、状態変数を維持します。

たとえば、ADK 内で ask_data_insights ツールまたは ask_data_agent ツールを使用する場合、ADK がより広範なセッション コンテキストを維持していても、各呼び出しは API レベルで独立してステートレスになります。ADK ストリーミング デモは、このインタラクションの推奨パターンを示しています。データ サブエージェントが解析されたレスポンス データを temp: 状態に書き込み、ダウンストリーム エージェントが同じ呼び出し内でそれを読み取ります。

次のステップ