Ringkasan agen data

Agen data memungkinkan Anda berinteraksi dengan data di database menggunakan bahasa percakapan. Anda dapat membuat agen data dengan menentukan konteks untuk sekumpulan tabel di database Anda yang memungkinkan agen data menerjemahkan pertanyaan bahasa alami menjadi kueri yang akurat untuk kasus penggunaan target Anda.

Konteks adalah informasi khusus database yang memungkinkan LLM menghasilkan kueri dengan akurasi tinggi. Konteks mencakup template dan aspek (fragmen) yang membantu agen memahami skema database dan logika bisnis aplikasi Anda.

Database berikut didukung:

  • AlloyDB untuk PostgreSQL
  • Cloud SQL untuk MySQL
  • Cloud SQL untuk PostgreSQL
  • Spanner

Kapan harus menggunakan agen data

Anda dapat menggunakan Agen Data untuk membuat Aplikasi Data Percakapan yang ideal untuk kasus penggunaan seperti:

  • Otomatisasi layanan pelanggan: Menangani pertanyaan dalam jumlah besar seperti "Di mana pesanan saya?" atau "Berapa saldo saya saat ini?".
  • Asisten belanja e-commerce: Membantu pengguna menavigasi katalog produk besar dengan kueri bahasa alami seperti "Tampilkan sepatu lari di bawah Rp1.000.000".
  • Sistem pemesanan dan reservasi: Memungkinkan pengguna memeriksa ketersediaan dan memesan janji temu, tiket pesawat, atau layanan restoran melalui antarmuka chat.
  • Alat operasi lapangan: Memungkinkan karyawan seluler untuk membuat kueri tingkat inventaris, ketersediaan suku cadang, atau detail tiket servis secara real-time.

Cara kerja agen data

Untuk membangun aplikasi yang efektif, agen harus memahami organisasi data dan logika bisnis Anda. Anda memberikan informasi ini dalam bentuk konteks agen.

Anda menentukan konteks agen dalam file yang berisi objek JSON untuk template dan aspek. Anda membuat file konteks ini dengan bantuan Gemini CLI. Kemudian, upload file konteks ke agen data yang Anda buat di konsol Google Cloud. Proses ini memungkinkan agen mempelajari skema spesifik database dan logika bisnis aplikasi.

File konteks agen terlihat mirip dengan berikut ini:

{
  "templates": [
    {
      "nl_query": "Count prague loan accounts",
      "sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" = \"Prague\"",
      "intent": "How many accounts associated with loans are located in the Prague region?",
      "manifest": "How many accounts associated with loans are located in a given city?",
      "parameterized": {
        "parameterized_intent": "How many accounts associated with loans are located in $1",
        "parameterized_sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" = $1"
      }
    }
  ],
  "fragments": [
    {
      "fragment": "T.\"A11\" BETWEEN 6000 AND 10000",
      "intent": "Average salary between 6000 and 10000",
      "manifest": "Average salary between a given number and a given number",
      "parameterized": {
         "parameterized_intent": "Average salary between $1 and $2",
         "parameterized_fragment": "T.\"A11\" BETWEEN $1 AND $2"
      }
    }
  ]
}

Saat pengguna akhir mengajukan pertanyaan dalam bahasa alami, agen akan memprioritaskan pencocokan pertanyaan dengan template dan aspek yang telah diaudit oleh developer yang menyeleksi konteks. Setelah agen mengidentifikasi kecocokan, agen akan menggunakan template kueri dan faset yang dipilih untuk menyintesis kueri database. Kemudian, agen menjalankan kueri tersebut terhadap database untuk menampilkan hasil yang akurat.

Endpoint QueryData di Conversational Analytics API adalah alat berbasis agen yang memungkinkan integrasi terprogram dengan aplikasi Anda untuk mengaktifkan pembuatan kueri SQL dari pertanyaan bahasa alami. Dalam aplikasi percakapan, endpoint QueryData harus digunakan dalam framework yang mengelola histori dan konteks percakapan.

Konteks agen

Konteks agen terdiri dari serangkaian template dan aspek yang dikurasi dalam format JSON yang memandu agen dalam menerjemahkan pertanyaan bahasa alami menjadi kueri untuk database tertentu. Menentukan konteks memastikan pembuatan SQL dengan akurasi tinggi untuk pola kueri umum.

Pastikan konteks agen akurat dan komprehensif dalam cakupan kueri aplikasi yang diharapkan untuk memaksimalkan akurasi.

Template kueri

Template kueri adalah sekumpulan pertanyaan bahasa alami representatif yang dikurasi dengan kueri SQL yang sesuai. Respons ini juga menyertakan penjelasan untuk memberikan alasan deklaratif bagi pembuatan SQL dari bahasa alami.

Objek template kueri akan terlihat seperti berikut:

{
  "templates": [
    {
      "nl_query": "Count prague loan accounts",
      "sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" = \"Prague\"",
      "intent": "How many accounts associated with loans are located in the Prague region?",
      "manifest": "How many accounts associated with loans are located in a given city?",
      "parameterized": {
        "parameterized_intent": "How many accounts associated with loans are located in $1",
        "parameterized_sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" = $1"
      }
    }
  ]
},
...

Komponen utama objek JSON template kueri adalah sebagai berikut:

  • nl_query: Contoh kueri bahasa alami yang ditangani agen data.
  • sql: Kueri SQL untuk kueri bahasa alami.
  • intent: Sasaran atau tujuan kueri bahasa alami. Jika tidak ditetapkan, nilai ini secara default adalah kueri bahasa alami.
  • manifest: Bentuk intent yang digeneralisasi dan dihasilkan otomatis.
  • parameterized_intent: Bentuk intent yang dibuat otomatis dan menggunakan template, dengan nilai entity diganti dengan parameter.
  • parameterized_sql: Bentuk kueri SQL yang dibuat otomatis dan menggunakan template yang sesuai dengan intent berparameter.

Facet kueri

Faset kueri adalah kumpulan kondisi bahasa alami representatif yang dikurasi dengan predikat SQL yang sesuai. Faset mengelola pemfilteran dan kondisi, yang memungkinkan template kueri melakukan penelusuran berfaset.

Objek aspek (fragmen) kueri terlihat mirip dengan berikut ini:

{
...
"fragments": [
    {
      "fragment": "T.\"A11\" BETWEEN 6000 AND 10000",
      "intent": "Average salary between 6000 and 10000",
      "manifest": "Average salary between a given number and a given number",
      "parameterized": {
         "parameterized_intent": "Average salary between $1 and $2",
         "parameterized_fragment": "T.\"A11\" BETWEEN $1 AND $2"
      }
    }
  ]
}

Komponen utama objek JSON fragmen adalah sebagai berikut:

  • fragment: Predikat SQL.
  • intent: Penjelasan predikat SQL.
  • manifest: Bentuk intent yang digeneralisasi dan dihasilkan otomatis.
  • parameterized_intent: Bentuk intent yang dibuat otomatis dan menggunakan template, dengan nilai entity diganti dengan parameter.
  • parameterized_fragment: Bentuk fragmen yang dibuat otomatis dan menggunakan template yang sesuai dengan intent berparameter.

Batasan

Agen data memiliki batasan berikut:

  • Konteks agen untuk database hanya mendukung template dan aspek.
  • Konteks agen untuk database hanya digunakan oleh endpoint QueryData di Conversational Analytics API.

Langkah berikutnya