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

会話型分析 API を使用して構築する場合、状態管理は重要なアーキテクチャ上の考慮事項です。API の会話状態を管理し、Agent Development Kit(ADK)を使用するアプリケーションの場合は、フレームワークのセッション状態を管理します。

API の状態モード

Conversational Analytics API の chat メソッドは、会話状態の処理方法を決定する相互に排他的なコンテキスト パラメータをサポートしています。

次の表を使用して、これらのモードを比較します。

モード 状態 会話の履歴 エージェント パラメータ 説明
会話を参照してチャットする ステートフル API によって管理 はい ConversationReference 既存の会話とその関連するエージェントを参照して、ステートフルな会話を継続します。 Google Cloud 会話履歴を保存して管理します。各ターンで新しいメッセージのみを送信します。
データ エージェントを参照してチャットする ステートレス アプリケーションによって管理 はい DataAgentContext コンテキストの保存済みデータ エージェントを参照するステートレス メッセージを送信します。アプリケーションは、各リクエストで完全な会話履歴を管理して提供する必要があります。
インライン コンテキストを使用してチャットする ステートレス アプリケーションによって管理 いいえ InlineContext リクエストでコンテキストを直接提供するステートレス メッセージを送信します。このモードでは、保存されたデータ エージェントは使用されません。アプリケーションは、完全な会話履歴を管理して提供する必要があります。

ADK セッションの状態

オーケストレーションに ADK フレームワークを使用する場合、ADK は 会話型分析 API の状態とは独立して動作する状態管理レイヤを提供します。両方のレイヤを理解することは、正しく機能するマルチエージェント システムを構築するために不可欠です。

ADK は、キーの接頭辞の規則を使用して、状態変数のスコープと有効期間を制御します。次の表を使用して、これらのスコープを評価します。

キーの接頭辞 範囲 全期間 閲覧できるユーザー
(接頭辞なし) セッション 現在のセッションのみ セッション内のすべてのエージェント 現在の会話トピックまたは最後のクエリの結果
user: ユーザー 同じユーザーのすべてのセッション 指定したユーザーのすべてのエージェントとセッション ユーザー設定、保存されたデータ エージェント ID、言語設定
app: アプリケーション すべてのユーザーのすべてのセッション すべてのエージェントとすべてのユーザー グローバル アプリケーション構成、共有データ エージェント ID、フィーチャー フラグ
temp: 呼び出し 現在の呼び出しのみ アクティブな呼び出し内の現在のエージェント ストリーミング チャンクや進行中の計算などの中間レスポンス データ

マルチエージェント システムでの状態の共有について詳しくは、ADK のドキュメントをご覧ください。

API の状態と ADK の状態の相互作用

ADK フレームワークで会話型分析 API を使用する場合、状態レイヤは独立して機能します。

  • API の状態: アプリケーションが会話参照(ステートフル モード)を使用する場合、API は会話履歴を管理します。アプリケーションがデータ エージェント コンテキストまたはインライン コンテキスト(ステートレス モード)を使用する場合、API は呼び出しごとにステートレスのままになります。
  • ADK セッションの状態: ADK フレームワークは、会話型分析 API が使用するモードに関係なく、独自のセッション、イベント、状態変数を維持します。

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

次のステップ