Agent Development Kit エージェントを Cloud Storage に接続する

Agent Development Kit(ADK)エージェントを Cloud Storage に接続すると、エージェント ワークロードが保存されたデータと組み込みの ADK ツールセットにアクセスできるようになります。この統合により、長時間実行されるタスクの状態、メモリ、チェックポイントを保持し、Agentic Workflows 間で中間ファイルを共有できます。

設定手順とコード例については、ADK 統合ガイドをご覧ください。

Cloud Storage と ADK の統合のメリット

Cloud Storage をエージェントと統合すると、エージェントは大きなファイルを処理し、会話履歴を維持して、既存のストレージ インフラストラクチャを再利用できます。

  • 動的なコンテキスト拡張: LLM が一度に読み取れる量の上限に達することなく、エージェントが大規模なデータセット、マニュアル、メディア ファイルにアクセスできるようにします。
  • アーティファクトの永続性: 一時ファイル、ログ、生成されたアイテム(レポートや画像など)を会話履歴の外部に確実に保存します。
  • あらゆるアーティファクト タイプのサポート: Cloud Storage を共有ストレージとして使用して、テキスト、画像、音声、動画など、さまざまな形式を処理して生成します。
  • きめ細かいアクセス制御: IAM ロールを使用して、エージェントの Cloud Storage へのアクセスをきめ細かく制御します。ADK は標準の Cloud de Confiance by S3NS 認証を使用して、エージェントがデータへのアクセスやタスクの実行に必要な最小限の権限のみを持つようにします。

ユースケース

エージェントに Cloud Storage 機能を搭載することで、次のユースケースに対応できます。

  • 動的コンテキスト検索(検索拡張生成(RAG)とも呼ばれます)
  • アーティファクトの永続性とアーカイブ
  • 大きなペイロードの処理
  • 自動化されたリソース管理

RAG による動的なコンテキスト取得

エージェントは、Cloud Storage 内のドキュメントを検索して読み取り、リアルタイムで質問に回答するリサーチャーとして機能できます。このアプローチは、社内ナレッジベースやサポートボットに役立ちます。

  • ポリシーの検索: エージェントに compliance-docs バケット内の最新の PDF マニュアルを一覧表示して読み取らせ、会社のポリシーに関するユーザーのクエリに回答させることができます。
  • マルチオブジェクト合成: 複数のストレージ オブジェクトから情報を取得して結合し、統合された要約を合成するエージェントを構築できます。

アーティファクトの永続性とアーカイブ

エージェントが生成した大量のデータを、人間によるレビュー、他のシステム、監査のために確実に保存します。

  • 自動レポート: データベース指標を分析し、要約レポートを生成して、reports-archive バケットにアップロードするエージェントを作成できます。
  • 生成されたメディアを保存する: 生成された画像または音声オブジェクトを Cloud Storage に保存し、ストレージ URI または署名付き URL のみを返すようにマルチエージェント システムを構成できます。

大きなペイロードの処理

ファイルの内容全体をチャットに貼り付けるのではなく、ストレージ URI(ファイルパス)を使用するようにエージェントを設計します。これにより、大規模な CSV やコードベースを LLM に送信する際の高コストと非効率性を回避できます。

  • データ パイプライン ハンドラ: 大規模な CSV を使用する代わりに、エージェントにストレージ URI を受信させることができます。その後、エージェントはチャンクを処理するか、メタデータを検査して分析を実行し、概要ダッシュボードを返すことができます。
  • 分離されたワークフロー: Cloud Storage の接頭辞、フォルダ、バケットのストレージ URI を受け取るスーパーバイザーとして機能するようにエージェントを設計できます。エージェントは、この URI をバックエンド ワーカーに渡してオブジェクトを処理し、最終結果をストレージに書き戻すことができます。このパターンは、Cloud Run functions や Cloud Run などのイベント ドリブン サービスと互換性があり、データを非同期で処理できます。

自動化されたリソース管理

エージェントは、ストレージ使用量の最適化、管理タスクの自動化、複数のバケットにわたるガバナンスの適用に役立ちます。これは、大規模なストレージ インフラストラクチャを管理するチームにとって特に有用です。

  • インフラストラクチャの監査: バケット構成(ロケーションやストレージ クラスなど)をスキャンし、最適化を提案したり、コンプライアンスに準拠していない設定を特定したりするエージェントを作成できます。
  • リソースのクリーンアップ: 空のバケットや古いバケットを特定し、保持ポリシーに基づいてクリーンアップ プロセスを自動化するエージェントを構築できます。

Cloud Storage 用 ADK ツールセット

ADK には、Cloud Storage 用の Python の次のツールセットが用意されています。両方を理解することで、エージェントのロールを定義し、権限を制限できます。

GCSToolset: データ マネジメント

GCSToolset ツールセットを使用すると、エージェントは既存のバケット内のファイルを操作できます。ドキュメントの読み取り、結果のアップロード、一時オブジェクトの削除などのタスクに使用します。

  • オブジェクトを読み取る: get_object_data を使用してコンテンツを直接取得します。
  • コンテンツを検出する: list_objects を使用して、利用可能なオブジェクトを一覧表示します。
  • オブジェクトのプロパティを検査する: get_object_metadata を使用して、オブジェクトのサイズまたは Content-Type メタデータを確認します。
  • アップロードと永続化: create_object を使用して新しいオブジェクトを作成します。
  • オブジェクトを削除する: delete_objects を使用して一時オブジェクトを削除します。

インフラストラクチャ用の GCSAdminToolset

GCSAdminToolset ツールセットを使用して、バケットの作成や管理タスクの自動化など、ストレージ インフラストラクチャを管理します。

  • インフラストラクチャを検出する: list_buckets を使用して、プロジェクト内のバケットを一覧表示します。
  • ストレージをプロビジョニングする: create_bucket を使用して新しいバケットを作成します。
  • ストレージを再構成する: update_bucket を使用して構成を変更します。
  • ストレージのプロビジョニングを解除する: delete_bucket を使用してバケットを削除します。
  • バケット コンテキストを検査する: get_bucket を使用してバケット メタデータを取得し、バケットのロケーション、ストレージ クラス、アクセス制御を確認します。

ベスト プラクティス

Cloud Storage と統合する際にエージェントのパフォーマンスとセキュリティを最適化するには、次のベスト プラクティスを検討してください。

  • 大きなペイロードを会話履歴から切り離す: 大きなファイルをエージェントに直接渡さないようにします。代わりに、Cloud Storage に保存してファイル参照(URI)を送信します。これにより、トークン費用が削減され、コンテキストの上限に達するのを防ぐことができます。
  • 最小権限の原則を適用する: エージェントにタスクの実行に必要な最小限の権限のみを付与します。インフラストラクチャを管理する場合を除き、roles/storage.admin などの広範なロールは避けてください。標準的なファイル操作には、特定のバケットに制限された roles/storage.objectUser や roles/storage.objectViewer などのターゲット ロールを使用します。
  • 構成を一元管理する: エージェント ロジックでバケット名やオブジェクト名のパスをハードコードしないでください。環境変数または構成管理を使用して、開発、テスト、本番環境のストレージ環境を切り替えます。
  • 効率的な取得戦略を実装する: Cloud Storage をナレッジ取得のレイヤとして使用する場合は、大きなドキュメント全体をエージェントのコンテキストに読み込まないでください。ドキュメントを前処理してチャンク化するか、専用の検索ツールを使用して関連するセグメントのみを取得します。

制限事項

Cloud Storage を ADK と統合する場合は、次の制限事項に注意してください。

  • 不変オブジェクト: Cloud Storage オブジェクトは不変です。既存のオブジェクトにデータを追加することはできません。エージェントがイベントを 1 つのファイルに継続的にロギングする必要がある場合は、オブジェクトを完全に上書きするか、複数の小さなオブジェクトを作成して後でオブジェクトを作成する必要があります。
  • 高頻度の状態管理におけるレイテンシ: Cloud Storage は、耐久性の高いアーティファクト ストレージと大規模なペイロードに適しています。ただし、高頻度で低レイテンシの状態更新に Cloud Storage を使用すると、レイテンシが発生する可能性があります。たとえば、会話のやり取りが速い場合にすべてのターンを追跡すると、インメモリ キャッシュやデータベースを使用する場合よりも処理が遅くなる可能性があります。
  • マルチオブジェクトのアトミック性の欠如: Cloud Storage オペレーションは個々のオブジェクトに適用されます。エージェントが複数のファイルに同時にアトミック更新を行う必要がある場合は、アプリケーション内に調整ロジックを実装する必要があります。

次のステップ

  • Python アプリケーションで Cloud Storage ツールセットを初期化するための詳細なコード例、設定手順、パラメータ リファレンスについては、ADK 統合ガイドをご覧ください。
  • ADK エージェントまたは AI コーディング支援で事前構築済みのエージェント スキルを使用するには、Cloud Storage エージェント スキルをご覧ください。