QueryData をアプリケーションと統合する

このチュートリアルでは、 Google Cloud コンソールを使用して MongoDB 互換の Firestore で QueryData を設定して使用し、アプリケーションと統合する方法について説明します。コンテキスト セット ファイルを作成し、コンテキスト セット ファイルを使用するコンテキスト セットを作成します。MCP Toolbox を使用して Conversational Analytics API の QueryData メソッドを呼び出し、自然言語の質問に対して MongoDB 互換のクエリ言語(MQL)クエリを生成して、アプリケーションに統合する方法を学習します。

詳細については、QueryData の概要をご覧ください。

目標

  • データベースを作成してデータを入力する。
  • コンテキスト エンジニアリング エージェントを使用してコンテキスト セット ファイルをビルドします。
  • コンテキスト セットを作成し、コンテキスト セット ファイルをアップロードします。
  • MongoDB 互換の Firestore Studio で QueryData をテストし、MQL クエリを生成します。
  • MCP ツールボックスの Gemini データ分析 QueryData ツールを使用して、QueryData をアプリケーションと統合します。
  • 値検索クエリを使用して、LLM レスポンスにグラウンディングを追加します。

費用

このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを算出できます。

新規の Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

このドキュメントのタスクを完了したら、作成したリソースを削除して、それ以上の請求が発生しないようにします。詳細については、クリーンアップをご覧ください。

始める前に

コンテキスト セットを作成する前に、次の前提条件を満たす必要があります。

必要なサービスを有効にする

プロジェクトで次のサービスを有効にします。

Firestore データベースを準備する

MongoDB 互換の Firestore Enterprise エディションのデータベースがあることを確認します。

このページの例を試す場合は、この目的のために新しいデータベースを作成することをおすすめします。詳細については、データベースの作成と管理をご覧ください。

必要なロールと権限

flights コレクションと airports コレクションにデータを入力する

このセクションでは、提供されている MQL スクリプトを使用して、flights コレクションと airports コレクションにデータを入力します。

  1. Google Cloud コンソールで、[Firestore] ページに移動します。

    Firestore に移動

  2. リストからデータベースを選択します。たとえば、以前に新しいデータベースを作成した場合は、そのデータベースを選択します。データベースは、MongoDB 互換の Enterprise エディションのデータベースである必要があります。

  3. ナビゲーション メニューで [Firestore Studio] をクリックします。

  4. [新しい MQL エディタタブ] または [新しいタブ] をクリックして、新しいタブを開きます。

  5. 次のスクリプトを実行して、airports コレクションにデータを入力します。[読み取り専用] オプションが選択されていないことを確認します。

  6. 次のスクリプトを実行して、flights コレクションにデータを入力します。[読み取り専用] オプションが選択されていないことを確認します。

Firestore Studio でコンテキスト セットを作成する

このセクションでは、flights-assistant という名前のコンテキスト セットを作成します。このコンテキスト セットには、アップロードされたコンテキスト セット ファイルが含まれていません。

  1. Google Cloud コンソールで、[Firestore] ページに移動します。

    Firestore に移動

  2. リストからデータベースを選択します。データベースは、MongoDB 互換モードの Enterprise エディションのデータベースである必要があります。

  3. ナビゲーション メニューで [Firestore Studio] をクリックします。

  4. [エクスプローラ] ペインで、[コンテキスト セット] の横にある [その他のアクション()] をクリックします。

  5. [コンテキスト セットを作成] をクリックします。

  6. [コンテキスト セット名] に「flights-assistant」と入力します。

  7. [作成] をクリックします。

Studio で QueryData をテストする

このセクションでは、自然言語の質問をして設定した flights-assistant コンテキストを使用して、MQL クエリを生成します。コンテキスト セットにはコンテキスト セット ファイルがアップロードされていないため、nighttime traffic などのコンテキストを含む質問をしても、QueryData は最適ではないクエリを生成します。

  1. [エクスプローラ] ペインで、コンテキスト セットの横にある [その他の操作()] をクリックします。
  2. [コンテキスト セットをテスト] をクリックします。
  3. クエリエディタで、[Generate MQL using QueryData with: flights-assistant] をクリックします。
  4. 次の自然言語の質問を入力して MQL クエリを生成し、[生成] をクリックします。

    Find flights from SFO to JFK.
    

    MQL クエリを確認します。QueryData が、この明確な質問に対して正しい MQL を生成していることがわかります。

      db.flights.find({"departure_airport": "SFO", "arrival_airport": "JFK"})
    
  5. [Generate MQL using QueryData with: flights-assistant] ウィンドウで、[Edit] をクリックします。

  6. 次の自然言語の質問を入力して MQL クエリを生成し、[更新] をクリックします。

    Tell me flights that can help me beat nighttime traffic if traveling from New York
    

    データベースは nighttime トラフィックという用語を理解できません。これにより、MQL クエリが生成されないか、次のクエリに示すように、用語を無視するクエリが生成される可能性があります。

    // The database schema does not contain information about traffic.
    // Returning all flights departing from New York airports.
    db.flights.find({
      $and: [
        {
          "departure_airport": {"$regex": "New York", "$options": "i"}
        },
        {
          "$or": [
            {"departure_time": {"$exists": true}},
            {"arrival_time": {"$exists": true}}
          ]
        }
      ]
    })
    

コンテキスト セットのコンテキストを生成する

このセクションでは、環境を準備し、コンテキスト セットのクエリ機能を改善するコンテキスト ファイルを作成します。

環境の設定

コンテキストの生成を開始する前に、環境を準備する必要があります。

環境を設定するには、次の操作を行います。

  1. Antigravity CLI をインストールします。詳細については、Antigravity CLI を使ってみるをご覧ください。
  2. Google Cloud CLI をインストールします。
  3. アプリケーションのデフォルト認証情報(ADC)を設定します。ターミナルで次のコマンドを実行して、認証を行い、プロジェクトを選択します。

    gcloud auth application-default login
  4. コンテキスト エンジニアリング エージェントの前提条件である Python のパッケージおよびプロジェクト マネージャー uv をインストールします。システムに Python がまだインストールされていない場合は、uv でインストールできます。

  5. コンテキスト エンジニアリング エージェントをインストールする:

    agy plugin install https://github.com/GoogleCloudPlatform/db-context-enrichment/tree/main/plugin
  6. ターミナルで Antigravity CLI を起動します。

    agy
  7. MCP ツールボックスを使用して、コンテキスト生成用のデータベース接続を設定します。接続は tools.yaml 構成ファイルで定義されます。

    現在のディレクトリに tools.yaml 構成ファイルを作成するには、次のようなプロンプトを入力します。

    Help me set up context generation for a Firestore database with MongoDB compatibility.
    

    スキルから提供される手順に沿って操作します。tools.yaml ファイルの詳細については、MCP ツールボックスのドキュメントをご覧ください。

  8. tools.yaml ファイルの作成後に構成を再読み込みするには、Antigravity CLI で次のコマンドを実行し、手順に沿ってツールボックス MCP サーバーを再読み込みします。

    /mcp
    1. [db-context-engineering_toolbox] を選択します。

    2. [Restart] を選択します。

  9. MCP ツールボックスとコンテキスト エンジニアリング エージェント プラグインが接続され、使用可能な状態であることを確認します。

    /mcp

テンプレート コンテキストを生成する

このセクションでは、前のセクションで QueryData が nighttime traffic という用語を認識しなかった問題に対処するため、コンテキスト セットファイルで 5:00 PM と 7:00 PM の間で発生するトラフィックとして用語を定義します。

テンプレート コンテキストを生成する手順は次のとおりです。

  1. Antigravity CLI に次のプロンプトを入力します。

    Generate a template for the question: "Tell me flights that can help me beat nighttime traffic if traveling from New York" with the following MQL query:
    
    db.flights.aggregate([
      {
        "$lookup": {
          "from": "airports",
          "localField": "departure_airport",
          "foreignField": "iata",
          "as": "departure_airport_info",
          "pipeline": [{ "$project": { "_id": 0, "name": 1, "city": 1 } }]
        }
      },
      { "$unwind": { "path": "$departure_airport_info" } },
      {
        "$match": {
          "$expr": {
            "$and": [
              { "$eq": ["$departure_airport_info.city", "New York"] },
              {
                "$or": [
                  { "$lte": [{ "$hour": "$departure_time" }, 17] },
                  { "$gte": [{ "$hour": "$departure_time" }, 19] }
                ]
              }
            ]
          }
        }
      },
    ])
    
  2. エージェントは、入力を特定の形式に変換し、幅広いユーザー クエリにわたってコンテキスト セットのパフォーマンスを向上させます。詳細については、コンテキスト セットの概要をご覧ください。

  3. 生成されたクエリ テンプレートを確認します。クエリ テンプレートは、新しいエージェント コンテキスト ファイルとして保存することも、既存のエージェント コンテキスト ファイルに追加することもできます。

  4. エージェントにテンプレートを保存するよう指示します。

    Save it to context_set.json.
    

    エージェントは、同じディレクトリに次の内容のファイルを作成します。

    {
      "templates": [
        {
          "nl_query": "Tell me flights that can help me beat nighttime traffic if traveling from New York",
          "sql": "db.flights.aggregate([\n  {\n    \"$lookup\": {\n      \"from\": \"airports\",\n      \"localField\": \"departure_airport\",\n      \"foreignField\": \"iata\",\n      \"as\": \"departure_airport_info\",\n      \"pipeline\": [{ \"$project\": { \"_id\": 0, \"name\": 1, \"city\": 1 } }]\n    }\n  },\n  { \"$unwind\": { \"path\": \"$departure_airport_info\" } },\n  {\n    \"$match\": {\n      \"$expr\": {\n        \"$and\": [\n          { \"$eq\": [\"$departure_airport_info.city\", \"New York\"] },\n          {\n            \"$or\": [\n              { \"$lte\": [{ \"$hour\": \"$departure_time\" }, 17] },\n              { \"$gte\": [{ \"$hour\": \"$departure_time\" }, 19] }\n            ]\n          }\n        ]\n      }\n    }\n  }\n])",
          "intent": "Tell me flights that can help me beat nighttime traffic if traveling from New York",
          "manifest": "Tell me flights that can help me beat nighttime traffic if traveling from a given city",
          "parameterized": {
            "parameterized_sql": "db.flights.aggregate([\n  {\n    \"$lookup\": {\n      \"from\": \"airports\",\n      \"localField\": \"departure_airport\",\n      \"foreignField\": \"iata\",\n      \"as\": \"departure_airport_info\",\n      \"pipeline\": [{ \"$project\": { \"_id\": 0, \"name\": 1, \"city\": 1 } }]\n    }\n  },\n  { \"$unwind\": { \"path\": \"$departure_airport_info\" } },\n  {\n    \"$match\": {\n      \"$expr\": {\n        \"$and\": [\n          { \"$eq\": [\"$departure_airport_info.city\", \"$1\"] },\n          {\n            \"$or\": [\n              { \"$lte\": [{ \"$hour\": \"$departure_time\" }, 17] },\n              { \"$gte\": [{ \"$hour\": \"$departure_time\" }, 19] }\n            ]\n          }\n        ]\n      }\n    }\n  }\n])",
            "parameterized_intent": "Tell me flights that can help me beat nighttime traffic if traveling from $1"
          }
        }
      ]
    }
    

コンテキスト セット ファイルを QueryData にアップロードする

このセクションでは、コンテキスト セット ファイルを QueryData にアップロードして、データベースに対する QueryData の MQL 生成機能を向上させます。

コンテキストをアップロードする手順は次のとおりです。

  1. Google Cloud コンソールで、[Firestore] ページに移動します。

    Firestore に移動

  2. リストからデータベースを選択します。データベースは、MongoDB 互換モードの Enterprise エディションのデータベースである必要があります。

  3. ナビゲーション メニューで [Firestore Studio] をクリックします。

  4. [エクスプローラ] ペインで、[コンテキスト セット] の横にある [アクション]()アイコンをクリックします。

  5. [コンテキスト セットを編集] をクリックします。

  6. [コンテキスト セット ファイルのアップロード] セクションで [参照] をクリックし、前に生成したコンテキスト セット ファイルを選択します。

  7. [保存] をクリックします。

QueryData を使用して MQL クエリを生成する

このセクションでは、アップロードしたコンテキスト セット ファイルを使用して、自然言語で質問します。これにより、QueryData が nighttime traffic などの用語や関連するフレーズの定義を正しく理解して適用していることを確認できます。

MQL クエリを生成する手順は次のとおりです。

  1. [エクスプローラ] ペインで、コンテキスト セットの横にある [その他のアクション()] をクリックします。
  2. [テスト コンテキスト セット] をクリックします。
  3. クエリエディタで、[Generate MQL using QueryData with: flights-assistant] をクリックします。
  4. 次の自然言語の質問を入力して MQL クエリを生成し、[生成] をクリックします。

    Tell me flights that can help me beat nighttime traffic if traveling from New York
    

    生成された MQL クエリは次のようになります。

    // Tell me flights that can help me beat nighttime traffic if traveling from New York
    db.flights.aggregate([
      {
        "$lookup": {
          "from": "airports",
          "localField": "departure_airport",
          "foreignField": "iata",
          "as": "departure_airport_info",
          "pipeline": [{ "$project": { "_id": 0, "name": 1, "city": 1 } }]
        }
      },
      { "$unwind": { "path": "$departure_airport_info" } },
      {
        "$match": {
          "$expr": {
            "$and": [
              { "$eq": ["$departure_airport_info.city", "New York"] },
              {
                "$or": [
                  { "$lte": [{ "$hour": "$departure_time" }, 17] },
                  { "$gte": [{ "$hour": "$departure_time" }, 19] }
                ]
              }
            ]
          }
        }
      }
    ])
    

    これは、QueryData のコンテキストに追加した質問と同じです。QueryData が nighttime traffic という用語を正確に解釈できるようになりました。

    コンテキストは特定の質問から生成されますが、QueryData はそれを使用して、さまざまな類似の質問に対する MQL の生成を強化します。

  5. [Generate MQL using QueryData with: flights-assistant] ウィンドウで、[Edit] をクリックします。

  6. 次のような質問を入力して MQL クエリを生成し、[更新] をクリックします。

    What are the flights that can help me avoid evening traffic if departing from Boston
    

    この質問では、nighttime traffic という用語が類似の用語 evening traffic に置き換えられているため、QueryData は同じ解釈を適用して、この質問に対して一貫した回答を提供します。

    生成された MQL クエリは次のようになります。

    // What are the flights that can help me avoid evening traffic if departing from Boston
    db.flights.aggregate([
      {
        "$lookup": {
          "from": "airports",
          "localField": "departure_airport",
          "foreignField": "iata",
          "as": "departure_airport_info",
          "pipeline": [{ "$project": { "_id": 0, "name": 1, "city": 1 } }]
        }
      },
      { "$unwind": { "path": "$departure_airport_info" } },
      {
        "$match": {
          "$expr": {
            "$and": [
              { "$eq": ["$departure_airport_info.city", "Boston"] },
              {
                "$or": [
                  { "$lte": [{ "$hour": "$departure_time" }, 17] },
                  { "$gte": [{ "$hour": "$departure_time" }, 19] }
                ]
              }
            ]
          }
        }
      }
    ])
    

QueryData をアプリケーションと統合する

このセクションでは、フライト検索アプリケーションのデータ エージェントを作成します。このデータ エージェントは、先ほど作成した flights テーブルと airports テーブルへの会話型インターフェースを提供します。また、Agent Development Kit(ADK)、Gemini Data Analytics QueryData MCP ツール、回答の品質を向上させるコンテキスト セットを使用して、このデータ エージェントを作成し、アプリケーションに統合する方法についても説明します。

  1. MCP ツールボックス バージョン 1.14.0 以降をダウンロードします。MCP ツールボックスは、アプリケーションが接続するためのツールとしてデータ エージェントを公開します。MCP ツールボックスは、コンテキストを生成する前にインストールしたコンテキスト エンジニアリング エージェントとは異なります。

  2. アプリケーションのデフォルト認証情報(ADC)を設定します。

    gcloud auth application-default login
  3. 先ほど作成したコンテキスト セットの ID を確認します。コンテキスト セット ID を確認する方法については、コンテキスト セット ID を確認するをご覧ください。

  4. tools.yaml 構成に次の行を追加して、MCP ツールボックスを使用してデータ エージェントに接続します。詳細については、Gemini Data Analytics Source と Gemini Data Analytics QueryData ツールをご覧ください。

    kind: source
    name: gda-api-source
    type: cloud-gemini-data-analytics
    projectId: "PROJECT_ID"
    ---
    kind: tool
    name: cloud_gda_query_tool
    type: cloud-gemini-data-analytics-query
    source: gda-api-source
    description: Use this tool to send natural language queries to the Gemini Data Analytics API and receive MongoDB-compatible query language (MQL), natural language answers, and explanations.
    location: "REGION_ID"
    context:
      datasourceReferences:
        firestoreReference:
          databaseReference:
            projectId: "PROJECT_ID"
            databaseId: "DATABASE_ID"
          agentContextReference:
            contextSetId: "CONTEXT_SET_ID"
    generationOptions:
      generateQueryResult: true
      generateNaturalLanguageAnswer: true
      generateExplanation: true
      generateDisambiguationQuestion: true
    

    次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • DATABASE_ID: 接続先のデータベースの名前。
    • REGION_ID: データベースのリージョン(例: us-central1)。
    • CONTEXT_SET_ID: コンテキスト セット ID。コンテキスト セット ID を確認する方法については、コンテキスト セット ID を確認するをご覧ください。
  5. tools.yaml ファイルを使用して MCP ツールボックス サーバーを実行します。

    ./toolbox --config autoctx/tools.yaml
  6. MCP ツールボックスの Python SDK を使用して Gemini Data Analytics QueryData ツールを呼び出す ADK アプリケーションを作成します。MCP ツールボックスの Python SDK の使用方法について詳しくは、ツールボックスのクイックスタートをご覧ください。Python ADK については、ADK のクイックスタートをご覧ください。

    1. アプリケーションを保存するディレクトリ(flight-assistant-app など)を作成します。
    2. ディレクトリを flight-assistant-app ディレクトリに変更します。

      mkdir flight-assistant-app
      cd flight-assistant-app
    3. flight-assistant-app ディレクトリで次のコマンドを実行して、仮想環境を作成し、必要なコンポーネントをインストールします。

      uv init
      uv add google-adk toolbox-core google-genai
    4. ADK エージェントを設定する。

      1. ADK エージェントを作成します。

        uv run adk create my_agent
      2. gemini-3.8-flash モデル以降を選択します。

      3. [Google AI] を選択し、Gemini API キーを入力します。API キーを確認する方法の詳細については、Gemini API キーを使用するをご覧ください。(無料トライアルが不要な場合は、[Vertex AI] を選択して、課金が有効になっている Google Cloud プロジェクトを指定することもできます)。

    5. agent.py ファイルの内容を、次の Flight Data Assistant サンプル アプリケーション コードに置き換えます。

      from typing import cast
      
      from google.adk.agents.llm_agent import Agent
      from google.adk.agents.llm_agent import ToolUnion
      
      from toolbox_core import ToolboxSyncClient
      
      TOOLBOX_URL = "http://127.0.0.1:5000"
      
      INSTRUCTION = """
      # ROLE
      You are a friendly and factual flight data assistant. Your goal is to help users find the best flights for their needs by providing accurate information with a helpful, professional tone.
      - use the Query Data Tool to answer the user's question, if the tool fails to generate a valid query, ask the user to clarify their question.
      
      # OPERATIONAL CONSTRAINTS
      - TOOL LIMITATION: You only have access to the Query Data Tool. Do not claim to have capabilities beyond what this tool provides.
      - TRANSPARENCY POLICY: Maintain a seamless user experience. Never mention that you are using a tool, querying a database, or generating MQL. Frame all responses as your own direct assistance.
      - SCOPE MANAGEMENT: If a user asks for something beyond your capabilities, politely state that you cannot perform that specific task. Guide the user towards what you can help with.
      
      # COMMUNICATION STYLE
      - Be concise and scannable when listing answers.
      - Maintain a helpful, professional persona.
      
      =====
      
      # QUERY DATA TOOL
      
      Inputs:
      1. query: A natural language formulation of a database query.
      
      Outputs: (all optional)
      1. disambiguation_question: Clarification questions or comments where the tool needs the users' input.
      2. generated_query: The generated query for the user query.
      3. intent_explanation: An explanation for why the tool produced `generated_query`.
      4. query_result: The result of executing `generated_query`.
      5. natural_language_answer: The natural language answer that summarizes the `query` and `query_result`.
      
      Usage guidance:
      1. If `disambiguation_question` is produced, then solicit the needed inputs from the user and try the tool with a new `query` that has the needed clarification.
      2. If `natural_language_answer` is produced, use `intent_explanation` and `generated_query` to see if you need to clarify any assumptions for the user.
      3. If the tool output indicates failure or empty results, explain that clearly using the provided reasoning.
      """
      
      client = ToolboxSyncClient(TOOLBOX_URL)
      
      mcp_tool = client.load_tool("cloud_gda_query_tool")
      
      root_agent = Agent(
          model="gemini-3.8-flash",  # Or newer.
          name="root_agent",
          instruction=INSTRUCTION,
          tools=cast(list[ToolUnion], [mcp_tool]),
      )
      
  7. flight-assistant-app ディレクトリで次のコマンドを実行してアプリケーションを起動し、http://127.0.0.1:8000 で ADK ウェブサーバーにアクセスします。

    uv run adk web --port 8000
  8. hello などのテキストを入力して、エージェントとのやり取りを開始します。

    ADK エージェントは、一般的な質問に回答し、必要な MCP ツールを呼び出します。

  9. フライトに関する次の質問を入力します。

    How many flights depart from the west side?
    

    この質問に答えるために、MCP ツールが呼び出されます。ただし、the west という用語はあいまいであり、空港が指定されていないため、MCP ツールは曖昧さ回避の質問を返します。エージェントはこの質問を使用して回答を作成します。

    I cannot determine how many flights depart from the 'west side' as the database does not contain information about which airports are considered to be on the 'west side'. However, I can help you with questions like:
    
    1. How many flights depart from a specific airport?
    
    2. What are the departure airports for all flights?
    
    3. How many flights depart from each airport? Would you like to rephrase your question based on these options?
    
  10. エージェント用に生成されたクエリ テンプレートに類似した質問を入力します。

    Help me find flights from San Francisco that avoid the evening rush hour.
    

    先ほど追加した QueryData コンテキストに基づいて、MCP ツールは evening traffic が午後 5 時から午後 7 時の間に発生することを認識します。MCP ツールは、エージェントがレスポンスの作成に使用する関連データを返します。

    Here are the flights departing from San Francisco that avoid the evening rush hour (defined as 5 PM to 7 PM):
    
    * UA 1532 departing at 05:50:00
    * UA 1158 departing at 05:57:00
    * CY 922 departing at 06:38:00
    * OO 5441 departing at 07:08:00
    * UA 616 departing at 07:14:00
    * AA 24 departing at 07:14:00
    * B6 434 departing at 08:00:00
    * AA 242 departing at 08:18:00
    * UA 1739 departing at 08:22:00
    * OO 6336 departing at 08:32:00
    * US 1784 departing at 08:47:00
    * DL 1631 departing at 09:00:00
    * DL 1106 departing at 09:06:00
    * OO 5427 departing at 09:06:00
    * CY 352 departing at 09:25:00
    

エージェントのパフォーマンスを反復処理する

ADK ウェブ UI では、Gemini Data Analytics QueryData MCP ツールからのリクエストとレスポンスを検査できます。このレスポンスを使用して、生成された MQL クエリ、結果セット、インテントの説明、曖昧さ回避の質問、自然言語の回答などのツール レスポンスを観察し、エージェントのレスポンスの正確性を確認できます。

たとえば、先ほど入力したテキスト How many flights depart from the west side? の場合は、エージェントのバブルをクリックします。左側のナビゲーションの [イベント] タブで、functionResponse を開いて次のレスポンスを確認します。

"{"disambiguationQuestion": ["[NOT_ENOUGH_INFO] The database schema does not
contain information about which airports are on the 'west side'. Therefore, I
cannot determine how many flights depart from the west side.Possible alternative
questions: 1. How many flights depart from a specific airport? 2. What are the
departure airports for all flights? 3. How many flights depart from each
airport?"]}"

回答の精度を高める

追加のコンテキストを追加することで、Gemini データ分析 QueryData ツールからの回答の精度を継続的に向上させることができます。コンテキスト エンジニアリング エージェントを使用してコンテキストを生成し、更新されたコンテキスト セット ファイルを既存の flights-assistant データ エージェントにアップロードします。詳細については、Firestore Studio でコンテキスト セットを管理するをご覧ください。アップロードした新しいコンテキストは、コンソールにすぐに取り込まれます。これにより、アプリケーションのダウンタイムなしでエージェントの精度を向上させることができます。

複数のエージェント

開発環境では、tools.yaml ファイル内のツールに異なる名前を割り当てることで、複数のデータ エージェント コンテキストで A/B テストを実行できます。たとえば、cloud_gda_query_tool_v1 や cloud_gda_query_tool_v2 など、異なる名前の 2 つの cloud-gemini-data-analytics-query ツールを定義することで、一意の tools.yaml 構成を作成できます。この設定により、対応するツール名を選択して、必要なコンテキスト バージョンをプログラムで選択するアプリケーション ロジックを実装できます。

次の例 tools.yaml は、データベース ソースに複数のデータ エージェントを設定する方法を示しています。

kind: source
name: gda-api-source
type: cloud-gemini-data-analytics
projectId: PROJECT_ID
---
kind: tool
name: cloud_gda_query_tool_v1
type: cloud-gemini-data-analytics-query
source: gda-api-source
context:
  datasourceReferences:
    DB_SOURCE:
      databaseReference: ...
      agentContextReference:
        contextSetId: "V1_YOUR_CONTEXT_SET_ID"
generationOptions: ...
---
kind: tool
name: cloud_gda_query_tool_v2
type: cloud-gemini-data-analytics-query
source: gda-api-source
context:
  datasourceReferences:
    DB_SOURCE:
      databaseReference: ...
      agentContextReference:
        contextSetId: "V2_YOUR_CONTEXT_SET_ID"
generationOptions: ...

次のように置き換えます。

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • V1_YOUR_CONTEXT_SET_ID: バージョン 1 のコンテキスト セット ID。
  • V2_YOUR_CONTEXT_SET_ID: バージョン 2 のコンテキスト セット ID。

アクセス制御とセキュリティに関する考慮事項

プレビュー版のリリースでは、MongoDB 互換の Firestore の QueryData はきめ細かいアクセス制御をサポートしていません。QueryData をアプリケーションに統合する場合は、データアクセスがどのように制御されるかを検討してください。

  • データベース レベルの粒度: データベース レベルで IAM 条件を使用して、アクセス粒度を制御できます。ただし、コレクション、ドキュメント、フィールド レベルでのきめ細かいアクセス制御はありません。
  • データベースへの完全な読み取りアクセス権: データ エージェントは、データベース全体に対する読み取りアクセス権を持っています。エージェントによって生成されたクエリは、そのデータベース内のすべてのコレクション、ドキュメント、フィールドから読み取ることができます。データ エージェントは Firebase セキュリティ ルールによって制限されません。
  • アプリケーション ユーザーのスコープ設定: きめ細かいアクセス制御はサポートされていないため、アプリケーション ユーザー ID に基づいて特定のコレクション、ドキュメント、フィールドへのデータアクセスを制限することはできません。QueryData によって生成されたクエリは、アプリケーションで使用されるデータベース ユーザーまたはサービス アカウントの完全な読み取り権限で実行されます。

クリーンアップ

このチュートリアルを完了したら、作成したリソースを削除して、継続的な費用が発生しないようにする必要があります。以降のセクションでは、このようなリソースを削除する方法を説明します。

コンテキスト セットを削除する

データベースを削除する前に、作成したコンテキスト セットを削除します。

  1. Google Cloud コンソールで、[Firestore] ページに移動します。

    Firestore に移動

  2. リストからデータベースを選択します。データベースは、MongoDB 互換モードの Enterprise エディションのデータベースである必要があります。

  3. ナビゲーション メニューで [Firestore Studio] をクリックします。

  4. [エクスプローラ] ペインで、コンテキスト セットの横にある [その他のアクション()] をクリックします。

  5. [コンテキスト セットを削除] ウィンドウで、確認ボックスに「flight-assistant」と入力します。

  6. [確認] をクリックします。

データベースの削除

始める前にセクションで作成したデータベースを削除すると、作成したすべてのオブジェクトも削除されます。

  1. Google Cloud コンソールで、[Firestore] ページに移動します。

    Firestore に移動

  2. 削除するデータベースの名前の行を見つけます。

  3. [アクション]()アイコンをクリックし、[削除] をクリックします。

  4. データベース名を入力して [削除] をクリックし、データベースの削除を確定します。

次のステップ