Firestore Studio で QueryData をテストする

このドキュメントでは、QueryData をテストしてコンテキスト セット ファイルを更新する方法について説明します。QueryData の、自然言語による質問から MongoDB 互換のクエリ言語(MQL)クエリを生成する能力をテストできます。生成されたクエリが正確でない場合は、コンテキスト セット ファイルを更新できます。

コンテキスト セットの詳細については、コンテキスト セットの概要をご覧ください。

始める前に

コンテキスト セットがすでに作成され、コンテキスト セット ファイルが QueryData エージェントにアップロードされていることを確認します。詳細については、Firestore Studio でコンテキスト セットを管理するをご覧ください。

コンテキスト セット ファイルをダウンロード、更新、アップロードするには、IAM ユーザーにプロジェクトに対する Dataplex Catalog 編集者(roles/dataplex.catalogEditor)または Dataplex Catalog 管理者(roles/dataplex.catalogAdmin)ロールが付与されていることを確認します。詳細については、コンテキストセットの権限をご覧ください。

QueryData をテストする

QueryData をテストする手順は次のとおりです。

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

    [Firestore に移動]

  2. コンテキスト セットを追加したデータベースを選択します。MongoDB 互換の Firestore のみがサポートされています。

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

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

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

  6. クエリエディタで、[クエリを生成] をクリックして [コーディング サポート] パネルを開きます。

  7. エディタに自然言語による質問を入力して MQL クエリを生成し、[生成] をクリックします。

  8. MQL クエリの正確性を確認します。

コンテキスト セットをダウンロードして更新する

自然言語による質問に対して生成された MQL クエリにご納得いただけない場合は、既存のコンテキスト セット ファイルをダウンロードします。次に、クエリ テンプレートを確認して更新し、更新したコンテキスト ファイルをエージェントに再アップロードできます。

コンテキスト セットをダウンロードして更新する手順は次のとおりです。

  1. [**エクスプローラ**] ペインで、[**アクションを表示**] をクリックします。
  2. [コンテキスト ファイルをダウンロード] をクリックします。
  3. コンテキスト エンジニアリング エージェントを使用してコンテキスト セットを構築するの手順に沿ってクエリのペアを追加し、コンテキストを更新します。
  4. [エクスプローラ] ペインで、使用しているコンテキスト セットの横にある [アクションを表示] をクリックします。
  5. [コンテキスト セットを編集] をクリックします。
  6. [コンテキスト セット ファイルのアップロード] セクションで [参照] をクリックし、更新したコンテキスト セット ファイルを選択します。
  7. [保存] をクリックして、コンテキスト セットを更新します。

レスポンスの精度が納得できるものになったら、QueryData エンドポイントを使用してアプリケーションをコンテキスト セットに接続できます。

コンテキスト セット ID を確認する

データ アプリケーションを QueryData エージェントに接続するには、コンテキスト セットの ID が必要です。

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

    [Firestore に移動]

  2. コンテキスト セットを追加したデータベースを選択します。

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

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

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

  6. [コンテキスト セット ID] に示されているコンテキスト ID をメモします。コンテキスト セット ID の形式は projects/data-agents-project/locations/us-central1/contextSets/bdf_pg_all_templates のようになります。

QueryData をアプリケーションに接続する

QueryData メソッド呼び出しでコンテキスト セット ID を設定して、AlloyDB、Spanner、Cloud SQL、Cloud SQL for PostgreSQL、Firestore などのデータベース データソースの作成済みコンテキストを提示します。詳細については、データベース データソースのデータ エージェント コンテキストを定義するをご覧ください。

コンテキスト セットをテストしたら、QueryData 呼び出しでデータベースのデータソースを参照できます。

作成されたコンテキストを含む QueryData リクエストの例

次の例は、firestore_reference(MongoDB 互換の Firestore)データソースを使用する QueryData リクエストを示しています。データベースに保存されている事前作成済みのコンテキストにリンクするために、agent_context_reference.context_set_id フィールドを使用しています。

{
  "parent": "projects/context-set-project/locations/us-central1",
  "prompt": "How many accounts in the Prague region are eligible for loans?",
  "context": {
    "datasource_references": [
      {
        "firestore_reference": {
          "database_reference": {
            "project_id": "context-set-project",
            "region": "us-central1",
            "database_id": "financial"
          },
          "agent_context_reference": {
            "context_set_id": "projects/context-set-project/locations/us-central1/contextSets/bdf_pg_all_templates"
          }
        }
      }
    ]
  },
  "generation_options": {
    "generate_query_result": true,
    "generate_natural_language_answer": true,
    "generate_disambiguation_question": true,
    "generate_explanation": true
  }
}

リクエスト本文には次のフィールドが含まれます。

  • prompt: エンドユーザーからの自然言語による質問。
  • context: データソースに関する情報を入力します。
    • datasource_references: データソースのタイプを指定します。
      • firestore_reference: データベースのクエリを実行する際に必須となります。このフィールドは、クエリの実行対象とするデータベースによって異なります。
        • database_reference: データベース インスタンスに関する情報を指定します。
          • project_id: データベースのプロジェクト ID。
          • region: データベースのリージョン。
          • database_id: データベースの ID。
        • agent_context_reference: データベースに保存されている作成済みコンテキストへのリンク。
          • context_set_id: データベースに保存されているコンテキストの完全なコンテキスト セット ID。例: projects/context-set-project/locations/us-central1/contextSets/bdf_gsql_gemini_all_templates
  • generationOptions: 生成する出力のタイプを構成します。
    • generate_query_result: クエリ結果を生成して取得する場合は true に設定します。
    • generate_natural_language_answer: 省略可。true に設定すると、自然言語による回答が生成されます。
    • generate_explanation: 省略可。true に設定すると、MQL クエリの説明が生成されます。
    • generate_disambiguation_question: 省略可。true に設定すると、クエリがあいまいな場合は曖昧性除去の質問が生成されます。

QueryData レスポンスの例

以下は、QueryData 呼び出しによる回答の成功例です。

{
  "generated_query": "// Count the number of accounts in Prague that are eligible for loans\ndb.loans.aggregate([\n  // 1. Filter loans in the Prague region\n  { \n    $match: { \"district.name\": \"Prague\" } \n  },\n  // 2. Group by account_id to get distinct values, and count them\n  { \n    $group: { \n      _id: null, \n      uniqueAccounts: { $addToSet: \"$account_id\" } \n    } \n  },\n  // 3. Project the size of the unique accounts array\n  { \n    $project: { \n      _id: 0,\n      distinct_account_count: { $size: \"$uniqueAccounts\" } \n    } \n  }\n]);",
  "intent_explanation": "The question asks for the number of accounts eligible for loans in the Prague region. I need to filter the documents in the loans collection to only give me those in the Prague region. Then I need to group the loans by account ID to get distinct values and count them. Finally, I need to project the size of the array of unique accounts.",
  "query_result": {
    "columns": [
      {
        "name": "distinct_account_count"
      }
    ],
    "rows": [
      {
        "values": [
          {
            "value": "2"
          }
        ]
      }
    ],
    "total_row_count": 1
  },
  "natural_language_answer": "There are 2 accounts in Prague that are eligible for loans."
}

次のステップ