Antigravity CLI を使用してデータ コンテキストをテストする

Knowledge Catalog(旧称: Dataplex Universal Catalog)のメタデータ拡充により、構造化データのコンテキストを提供できるため、AI エージェントは信頼できる認定ソースに基づいて回答をグラウンディングできます。このチュートリアルでは、サンプルの BigQuery テーブルにカスタムアスペクトをアタッチし、Antigravity CLI を使用して、AI エージェントがガバナンス ルールをどのように適用するかをテストします。

目標

  • テスト用に、BigQuery に現実的な多層データレイクをデプロイする。
  • Knowledge Catalog でカスタム メタデータ テンプレート(アスペクト タイプ)を設計して登録し、公式のデータ プロダクトと未加工のサンドボックス テーブルを区別します。
  • Antigravity CLI(agy)を使用して、データ ガバナンス ルールと AI エージェントのグラウンディングを確認します。

始める前に

始める前に、次の操作を行ってください。

このチュートリアルを完了するには、BigQuery と Knowledge Catalog の基本的な知識も必要です。

環境を準備する

このチュートリアルでは、クラウドで動作するコマンドライン環境である Google Cloud Shell を使用します。Antigravity CLI(agy)は Google Cloud Shell にプリインストールされています。

  1. Google Cloud コンソールで、右上のツールバーにある [Cloud Shell をアクティブにする] をクリックします。環境がプロビジョニングされ、接続されるまでしばらく待ちます。

  2. Cloud Shell で、PROJECT_ID 変数と REGION 変数を設定して、今後のすべてのコマンドが特定の Google Cloud プロジェクトをターゲットにするようにします。

    export PROJECT_ID=$(gcloud config get-value project)
    gcloud config set project $PROJECT_ID
    export REGION="us-central1"
    
  3. 必要な Google Cloud サービスを有効にします。

    gcloud services enable \
      artifactregistry.googleapis.com \
      bigquery.googleapis.com \
      dataplex.googleapis.com \
      aiplatform.googleapis.com \
      run.googleapis.com \
      cloudbuild.googleapis.com \
      iam.googleapis.com
    
  4. Google Cloud DevRel Demos リポジトリのクローンを作成します。

    GitHub からインフラストラクチャ コードとスクリプトをダウンロードします。スパース チェックアウトを使用して、このチュートリアルに必要な特定のフォルダのみを pull します。

    # Perform a shallow clone to get only the latest repository structure without the full history
    git clone --depth 1 --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/devrel-demos.git
    cd devrel-demos
    
    # Specify and download only the folder you need for this tutorial
    git sparse-checkout set data-analytics/governance-context
    cd data-analytics/governance-context
    

BigQuery にサンプル データレイクをデプロイする

現実世界のデータ環境がクリーンであることはめったにありません。AI エージェントは推論できますが、特定の企業に関する知識はゼロから始まります。エージェントに「第 1 四半期の収益は?」と質問したとします。ガイダンスがない場合、エージェントは、公式レポートから未加工のテストデータまで、データベース内の「revenue」という名前の数十のテーブルから選択する可能性があります。エージェントが最も近い名前のテーブルを選択すると、未検証のソースに基づいて、説得力のある誤った回答が返される可能性があります。

このシナリオをシミュレートするには、「公式」データマートと信頼できない「サンドボックス」テーブルを組み合わせる必要があります。設定スクリプトを使用して、BigQuery のデータセットとテーブルをデプロイします。

設定スクリプトを実行可能にして、実行します。これにより、3 つの BigQuery データセット(finance_mart、marketing_prod、analyst_sandbox)が作成され、テーブルにサンプルデータが入力されます。

chmod +x ./setup_bq_tables.sh
./setup_bq_tables.sh

これで、データが完全に格納されたデータレイクが作成されましたが、ガバナンスは適用されていません。AI エージェントにとって、すべてのテーブルはまったく同じように見えます。

Knowledge Catalog でカスタム アスペクト タイプを定義する

次に、データ ガバナンスのルールを定義します。Knowledge Catalog でこれを行うには、再利用可能な、厳密に型指定されたメタデータ テンプレートであるアスペクト タイプを作成します。

このセクションでは、gcloud CLI を使用してこのテンプレートを登録し、定義方法を確認します。

アスペクト テンプレートのスキーマを調べる

aspect_template.json の内容を出力して、スキーマ定義を確認します。

cat aspect_template.json

次の JSON 構造が表示されます。

{
  "name": "OfficialDataProductSpec",
  "type": "record",
  "recordFields": [
    {
      "name": "product_tier",
      "type": "enum",
      "enumValues": [
        { "name": "GOLD_CRITICAL", "index": 1 },
        { "name": "SILVER_STANDARD", "index": 2 },
        { "name": "BRONZE_ADHOC", "index": 3 }
      ],
      ...
    },
    {
      "name": "is_certified",
      "type": "bool",
      "...": "..."
    }
  ]
}

このスキーマでは、重要度ティア(GOLD_CRITICAL、SILVER_STANDARD、BRONZE_ADHOC)の enum や is_certified の bool など、厳格なデータ型が適用されます。これにより、メタデータが構造化され、機械で読み取り可能な状態が維持されます。

Knowledge Catalog にアスペクト タイプを登録する

次の gcloud コマンドを実行して、このテンプレートをナレッジ カタログ レジストリに登録します。

gcloud dataplex aspect-types create official-data-product-spec \
    --location="${REGION}" \
    --project="${PROJECT_ID}" \
    --description="Defines the comprehensive profile of a data product for data governance agents." \
    --display-name="Official Data Product Spec" \
    --metadata-template-file-name="aspect_template.json"

データレイク テーブルにガバナンス アスペクトを適用する

これは重要なエンジニアリング ステップです。現時点では、テーブル finance_mart.fin_monthly_closing_internal と analyst_sandbox.tmp_data_dump_v2_final_real は AI エージェントにとって同じように見えます。これらは列を持つオブジェクトにすぎません。

これらを区別するために、アスペクトを適用します。アスペクトは、認定されたメタデータ ラベルをこれらのテーブルにアタッチして区別します。実際の企業では、CI/CD パイプラインを使用してこれを自動化します。このチュートリアルでは、スクリプトを使用してその自動化をシミュレートします。

アスペクト メタデータ ペイロードを生成する

Knowledge Catalog のアスペクトキーは、グローバルに一意である必要があります(プロジェクト ID が接頭辞として付加されます)。./generate_payloads.sh スクリプトは、YAML メタデータ ファイルを動的に生成します。

chmod +x ./generate_payloads.sh
./generate_payloads.sh

これにより、さまざまなデータ ガバナンス シナリオ(fin_internal.yaml、fin_public.yaml、mkt_realtime.yaml、sandbox.yaml)を定義する 4 つの YAML ファイルを含む aspect_payloads/ ディレクトリが作成されます。

BigQuery テーブルにアスペクトを適用する

  1. スクリプトを実行する前に、テーブルにアタッチするデータを確認します。次のコマンドを実行して、内部財務データのメタデータを表示します。

    cat aspect_payloads/fin_internal.yaml
    

    YAML ファイルは、テーブルのビジネス コンテキストを定義します。

    your-project-id.us-central1.official-data-product-spec:
      data:
        product_tier: GOLD_CRITICAL
        data_domain: FINANCE
        usage_scope: INTERNAL_ONLY
        update_frequency: DAILY_BATCH
        is_certified: true
    

    このプロンプトでは、is_certified: true の設定や GOLD_CRITICAL ティアの割り当てなど、ビジネス コンテキストが明示的に定義されています。これにより、AI エージェントはテーブル名に基づいて推測するのではなく、明確で構造化されたルールを評価できます。

  2. アプリケーション スクリプトを実行します。このスクリプトは、BigQuery テーブルを反復処理し、gcloud dataplex entries update コマンドを使用してメタデータ ペイロードを各テーブルにアタッチします。

    chmod +x ./apply_governance.sh
    ./apply_governance.sh
    

Google Cloud コンソールで適用されたアスペクトを確認する

次に進む前に、スクリプトが Google Cloud コンソールでアスペクトを正しく適用したことを確認します。

  1. Google Cloud コンソールで [ナレッジカタログ] ページを開きます。上部にある検索バーを使って拡張機能を探すことができます。
  2. fin_monthly_closing_internal を検索します。結果で BigQuery テーブル名を選択して、詳細ページを開きます。
  3. 下部の [オプションのタグとアスペクト] セクションで、official-data-product-spec アスペクトを見つけます。値が、適用した「ゴールド内部」シナリオと一致していることを確認します。

これで、技術的に同一の BigQuery テーブル(fin_monthly_closing_internal と tmp_data_dump_v2_final_real)が、機械で読み取り可能なメタデータによって論理的に区別されていることを確認できました。

Antigravity CLI でデータ コンテキストをテストする

アプリケーションをビルドする前に、Antigravity CLI を使用してデータ ガバナンス ロジックをローカルで検証できます。これを行うには、Knowledge Catalog プラグインをインストールし、エージェント スキルを構成します。

Knowledge Catalog プラグインをインストールする

Cloud Shell で、サービス プラグインをインストールします。

export DATAPLEX_PROJECT="${PROJECT_ID}"

agy plugin install https://github.com/gemini-cli-extensions/dataplex

エージェント スキルの定義を検査する

エージェント スキルは、.agents/skills/knowledge-catalog-governance/SKILL.md にある静的で再利用可能な定義ファイルです。これには、「安全なデータが必要」などの抽象的な人間のルールを構造化された技術的なルックアップに変換するロジックが含まれています。

スキルの設定を確認し、データ コンテキストの仕組みを理解するには、SKILL.md ファイルを調べます。

cat .agents/skills/knowledge-catalog-governance/SKILL.md

このプロンプトは、フェーズ 1(メタデータの検証)とフェーズ 2(クエリの実行)のループを厳密に実行するようモデルに指示しています。モデルは、SQL ステートメントを構築する前にメタデータを検出して検証する必要があります。この検索ファーストのロジックにより、エージェントがテーブル名を推測したり、未検証のソースから回答をハルシネーションしたりすることを防ぎます。

Antigravity CLI セッションを開始する

Antigravity CLI セッションを開始します。プロジェクト フォルダにいるため、CLI は .agents/skills ディレクトリからスキルを自動的に検出して読み込みます。

agy

CLI でプラグインのインストールを確認する

Antigravity CLI プロンプトで、プラグインが有効になっていることを確認します。「/mcp」と入力して、構成済みのツールとプラグインを一覧表示します。

/mcp

出力には、knowledge-catalog がアクティブなプラグインとして表示され、使用可能なツールが表示されます。

MCP Servers ... >  ✓ knowledge-catalog  Tools: search_entries, lookup_context, lookup_entry

データ コンテキスト検証シナリオを実行する

次に、データ コンテキストを実際に確認します。これらのプロンプトを Antigravity CLI セッションに 1 つずつ貼り付けます。

シナリオ 1: 認定ゴールドティア データを取得する

Antigravity CLI が、重要な取締役会のために最も信頼できるデータを見つけられるかどうかを確認します。

We are preparing the deck for an internal Board of Directors meeting next week. I need the numbers to be absolutely finalized, trustworthy, and kept strictly confidential. Which table is safe to use?

CLI は元データをスキップして fin_monthly_closing_internal を見つける必要があります。これは、以前に適用した GOLD_CRITICAL タグと INTERNAL_ONLY タグに対して「最終版」データと「機密」データのリクエストを照合することで行われます。

シナリオ 2: 外部で承認されたデータに取得を制限する

データを外部と共有したいとします。CLI で内部シークレットが漏洩しないようにする必要があります。

I need to share our quarterly financial summary with an external consulting firm. It is critical that we do not leak any raw or internal metrics. Which dataset is officially scrubbed and explicitly approved for external sharing?

内部テーブルには最も詳細な情報が含まれていますが、CLI はそれをバイパスする必要があります。EXTERNAL_READY というタグが付けられたテーブルは のみであるため、fin_quarterly_public_report が表示されます。

シナリオ 3: リアルタイム ストリーミング データを取得する

データ サイエンティストは、最新の情報を必要とすることがよくあります。Antigravity CLI が、1 日 1 回のバッチ処理とライブ配信の違いを理解しているかどうかを確認します。

My dashboard needs to show what's happening right now with our ad spend. I can't wait for the overnight load. What do you recommend?

CLI で mkt_realtime_campaign_performance が見つかるはずです。メタデータ内の REALTIME_STREAMING の更新の頻度を識別します。

シナリオ 4: 認定されていないサンドボックス データを探索する

「完璧」よりも「十分」の方が良い場合もあります。Antigravity CLI で、試験運用版の ML 作業用の未加工のサンドボックス データを見つけられるかどうかを確認します。

I'm just playing around with some new ML models and need a lot of raw data. It doesn't need to be perfect, just a sandbox environment.

CLI で tmp_data_dump_v2_final_real が見つかるはずです。この選択が正しいのは、BRONZE_ADHOC ティアと一致し、is_certified: false で明示的にマークされているためです。

テストが完了したら、CLI セッションを終了します。

/quit

クリーンアップ

定期的な請求が発生しないようにするには、次の手順を行います。

  1. Antigravity CLI セッションにいる場合は、Ctrl+C を 2 回押すか、/quit と入力してセッションを終了します。

  2. クリーンアップ スクリプトを実行して、このチュートリアルで作成した BigQuery テーブル、データセット、Knowledge Catalog のアスペクト タイプを破棄します。

    chmod +x ./cleanup_data_lake.sh
    ./cleanup_data_lake.sh
    
  3. サービス プラグインをアンインストールし、ローカルのデモファイルを削除します。

    agy plugin uninstall dataplex
    cd ~
    rm -rf ~/devrel-demos
    

次のステップ