🧠 Membangun Agen Text-to-SQL yang “Sadar Diri” dan Terus Belajar


Tanggal Berita: 15 Desember 2025

Sebuah panduan teknis tentang cara mengatasi kelemahan terbesar agen AI database saat ini. Alih-alih melatih ulang model (fine-tuning) yang mahal, pendekatan ini menggunakan "Poor Man's Continuous Learning" dan konteks dinamis untuk membuat agen semakin pintar seiring berjalannya waktu.

🚧 Problem Statement: Amnesia pada Agen AI
Sebagian besar agen Text-to-SQL gagal di lingkungan produksi karena satu alasan fatal: mereka memulai dari nol setiap kali bekerja.

📉 Menebak, Bukan Mengingat:

Tidak seperti senior data analyst yang menggunakan pengalaman masa lalu ("tribal knowledge"), agen AI standar mencoba menebak nama kolom, kunci join, dan logika bisnis setiap kali ada pertanyaan baru. Akibatnya, mereka sering salah mendefinisikan metrik bisnis (misalnya: definisi "user aktif") atau mengabaikan aturan khusus database (gotchas).

🧩 Re-inventing the Wheel:

Agen sering menulis ulang query yang sebenarnya sudah pernah dibuat dan divalidasi sebelumnya, meningkatkan risiko kesalahan sintaksis atau logika yang tidak perlu.

🛠️ Solusi: Dynamic Context & Knowledge Base
Kunci keberhasilan bukan pada model yang lebih pintar, tetapi pada konteks yang lebih lengkap. Sistem ini dibagi menjadi dua jalur:

🔄 Jalur Online (Dynamic Context):

Saat runtime, agen tidak bekerja dengan tangan kosong. Ia mengambil skema relevan, pola query yang sudah terbukti, dan aturan bisnis dari Knowledge Base (KB). Ini adalah penerapan RAG (Retrieval-Augmented Generation) khusus untuk SQL.

📚 Jalur Offline (Continuous Learning):

Ini adalah konsep "Poor Man's Continuous Learning". Kita tidak mengubah bobot model (model weights). Sebaliknya, setiap kali agen berhasil menghasilkan query yang valid dan disetujui pengguna, query tersebut disimpan kembali ke KB. Kesalahan hari ini menjadi aturan pencegahan di masa depan; keberhasilan hari ini menjadi templat untuk esok.

🏗️ Arsitektur & Desain Knowledge Base
Agar sistem ini berjalan efektif, basis pengetahuan (Knowledge Base) harus terstruktur dengan ketat, bukan sekadar tumpukan dokumen teks.

🗃️ Tiga Pilar KB:

Informasi Tabel: Skema, metadata kolom, dan aturan khusus (misal: "Gunakan fungsi TO_DATE untuk kolom ini"). Sampel Query: Query yang sudah divalidasi untuk kasus penggunaan umum (KPI, metrik standar). Semantik Bisnis: Lapisan pemetaan istilah bisnis ke struktur database.

⚙️ Alur Kerja Agen:

Pengguna bertanya ➡️ Agen mencari konteks di KB (skema + query mirip) ➡️ Agen menghasilkan SQL berdasarkan konteks ➡️ Eksekusi & Validasi ➡️ Jika sukses, tawarkan untuk menyimpan ke KB ➡️ Loop belajar tertutup.

💻 How to Use: Implementasi Teknis
Artikel ini menyertakan repositori produksi siap pakai menggunakan FastAPI dan Postgres.

📦 Langkah Instalasi:

Clone Repo: Gunakan git clone https://github.com/agno-agi/agentos-railway.git.

Konfigurasi: Setel OPENAI_API_KEY dan kunci lain di .env.

Docker: Jalankan docker compose up --build -d untuk menyalakan FastAPI dan Postgres lokal.

Populasi Data: Jalankan skrip load_sql_knowledge untuk mengisi KB awal.

UI: Sambungkan ke AgentOS UI untuk antarmuka obrolan visual.

🚀 Deployment:

Tersedia skrip ./scripts/railway_up.sh untuk menyebarkan (deploy) seluruh stack (termasuk PgVector) ke layanan cloud Railway dalam satu perintah.

🗝️ Key Takeaways
🧠 Konteks > Model:

Kegagalan Text-to-SQL biasanya bukan karena "model bodoh", tapi karena "model kurang konteks". Memberikan query historis yang valid jauh lebih efektif daripada prompt engineering yang rumit.

🛡️ Belajar Tanpa Risiko:

Memperbarui KB (menambah contoh query) jauh lebih aman dan terkontrol daripada fine-tuning model yang bisa merusak pengetahuan umum model (catastrophic forgetting).

💬 Interaksi Pembaca
Berapa kali Anda harus membenarkan query SQL yang dihasilkan ChatGPT karena salah nama kolom atau salah logika join? Apakah sistem self-improving ini bisa menjadi solusi permanen di tim data Anda?

Sumber:
https://www.ashpreetbedi.com/articles/sql-agent

#TextToSQL #AIAgents #DataEngineering #RAG #MachineLearning #FastAPI #PostgreSQL #LLMOps #ContinuousLearning #TechTutorial

Leave a Comment