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
QueryDatadi Conversational Analytics API.
Langkah berikutnya
- Pelajari cara membuat atau menghapus agen data di Spanner Studio.