Menguji QueryData di Firestore Studio

Dokumen ini menjelaskan cara menguji QueryData dan memperbarui file set konteks. Anda dapat menguji kemampuan QueryData untuk membuat kueri Bahasa Kueri (MQL) yang kompatibel dengan MongoDB dari pertanyaan dalam bahasa alami. Jika kueri yang dibuat tidak akurat, Anda dapat memperbarui file set konteks.

Untuk mempelajari set konteks, lihat Ringkasan set konteks.

Sebelum memulai

Pastikan set konteks sudah dibuat dan file set konteks diupload ke agen QueryData. Untuk mengetahui informasi selengkapnya, lihat Mengelola set konteks di Firestore Studio.

Untuk mendownload, memperbarui, dan mengupload file set konteks, pastikan pengguna IAM memiliki peran Editor Katalog Dataplex (roles/dataplex.catalogEditor) atau Admin Katalog Dataplex (roles/dataplex.catalogAdmin) di project. Untuk mengetahui informasi selengkapnya, lihat Izin set konteks.

Menguji QueryData

Untuk menguji QueryData, lakukan langkah-langkah berikut:

  1. Di Google Cloud konsol, buka halaman Firestore.

    Buka Firestore

  2. Pilih database yang Anda tambahkan set konteks. Hanya Firestore dengan kompatibilitas MongoDB yang didukung.

  3. Di menu navigasi, klik Firestore Studio.

  4. Di panel Explorer, klik View actions di samping set konteks yang Anda gunakan.

  5. Klik Test context set.

  6. Di editor kueri, klik Generate Query untuk membuka panel Help me code.

  7. Masukkan pertanyaan dalam bahasa alami di editor untuk membuat kueri MQL, lalu klik Generate.

  8. Tinjau kueri MQL untuk memastikan akurasinya.

Mendownload dan memperbarui set konteks

Jika Anda tidak puas dengan kueri MQL yang dibuat untuk pertanyaan dalam bahasa alami, download file set konteks yang ada. Kemudian, Anda dapat meninjau dan memperbarui template kueri, lalu mengupload ulang file konteks yang diperbarui ke agen.

Untuk mendownload dan memperbarui set konteks, lakukan langkah-langkah berikut:

  1. Di panel Explorer, klik View actions.
  2. Klik Download context file.
  3. Ikuti langkah-langkah di Membuat set konteks menggunakan agen rekayasa konteks untuk memperbarui konteks dengan pasangan kueri tambahan.
  4. Di panel Explorer, klik View actions di samping set konteks yang Anda gunakan.
  5. Klik Edit context set.
  6. Klik Browse di bagian Upload context set file, lalu pilih file set konteks yang diperbarui.
  7. Klik Save untuk memperbarui set konteks.

Setelah puas dengan akurasi respons Anda, Anda dapat menggunakan endpoint QueryData untuk menghubungkan aplikasi ke set konteks.

Menemukan ID set konteks

Untuk menghubungkan aplikasi data ke agen QueryData, Anda memerlukan ID set konteks.

  1. Di Google Cloud konsol, buka halaman Firestore.

    Buka Firestore

  2. Pilih database yang Anda tambahkan set konteks.

  3. Di menu navigasi, klik Firestore Studio.

  4. Di panel Explorer, klik View actions di samping set konteks yang Anda gunakan.

  5. Klik Edit context set.

  6. Perhatikan ID konteks di Context set ID. Format ID set konteks mirip dengan projects/data-agents-project/locations/us-central1/contextSets/bdf_pg_all_templates.

Menghubungkan QueryData ke aplikasi

Tetapkan ID set konteks dalam panggilan metode QueryData untuk memberikan konteks yang dibuat untuk sumber data database seperti AlloyDB, Spanner, Cloud SQL, Cloud SQL untuk PostgreSQL, dan Firestore. Untuk mengetahui informasi selengkapnya, lihat Menentukan konteks agen data untuk sumber data database.

Setelah menguji set konteks, Anda dapat mereferensikan sumber data database dalam panggilan QueryData.

Contoh permintaan QueryData dengan konteks yang dibuat

Contoh berikut menunjukkan permintaan QueryData menggunakan sumber data firestore_reference (Firestore dengan kompatibilitas MongoDB). Kolom agent_context_reference.context_set_id digunakan untuk menautkan ke konteks yang dibuat sebelumnya dan disimpan dalam database.

{
  "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
  }
}

Isi permintaan berisi kolom berikut:

  • prompt: Pertanyaan dalam bahasa alami dari pengguna akhir.
  • context: Berisi informasi tentang sumber data.
    • datasource_references: Menentukan jenis sumber data.
      • firestore_reference: Diperlukan saat membuat kueri database. Kolom ini berubah berdasarkan database yang Anda kueri.
        • database_reference: Menentukan informasi terkait instance database Anda.
          • project_id: Project ID database.
          • region: Region database.
          • database_id: ID database.
        • agent_context_reference: Menautkan ke konteks yang dibuat dalam database.
          • context_set_id: ID set konteks lengkap dari konteks yang disimpan dalam database. Misalnya, projects/context-set-project/locations/us-central1/contextSets/bdf_gsql_gemini_all_templates.
  • generationOptions: Mengonfigurasi jenis output yang akan dibuat.
    • generate_query_result: Tetapkan ke benar (true) untuk membuat dan menampilkan hasil kueri.
    • generate_natural_language_answer: Opsional. Jika ditetapkan ke benar (true), akan membuat jawaban dalam bahasa alami.
    • generate_explanation: Opsional. Jika ditetapkan ke benar (true), akan membuat penjelasan kueri MQL.
    • generate_disambiguation_question: Opsional. Jika ditetapkan ke benar (true), akan membuat pertanyaan disambiguasi jika kueri tidak jelas.

Contoh respons QueryData

Berikut adalah contoh respons yang berhasil dari panggilan 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."
}

Langkah berikutnya