How I Made AI Stop Hallucinating on Our 3-Year-Old Fintech Codebase
Alat bantu coding AI gagal pada proyek produksi yang nyata. Mereka bekerja pada kode baru, tetapi berantakan pada codebase lama yang memiliki riwayat.
Saya mempelajari hal ini dengan cara yang sulit melalui proyek fintech kami. Kami memiliki dua frontend React, sebuah panel admin, dan backend FastAPI. Database kami kompleks. Ia menyimpan data keuangan dan pengguna yang sensitif.
Kami mencoba menggunakan AI agar bisa bergerak lebih cepat. Hal itu langsung gagal.
Saya meminta AI untuk membuat tabel kontak. Ia membuat kolom baru untuk nama dan email. Kolom-kolom ini sudah ada di tabel pengguna kami. AI tersebut menduplikasi data alih-alih menggunakan foreign key. Ia tidak tahu bahwa tabel pengguna kami ada.
Saya berhenti bertanya bagaimana cara membuat AI menulis kode yang lebih baik. Saya mulai bertanya apa yang perlu diketahui AI agar dapat membuat keputusan yang tepat.
AI hanya akan sebagus konteks yang Anda berikan. Kami membuat konteks kami eksplisit dan otoritatif. Berikut adalah sistem yang kami bangun:
• ADR Files: Kami membuat folder docs/adrs/. File-file ini mencatat alasan mengapa kami membuat keputusan arsitektural. Satu file (ADR-001) memberi tahu AI: "Periksa tabel yang ada terlebih dahulu. Gunakan foreign key. Jangan pernah menduplikasi data pengguna."
• context.md: File ini menjelaskan istilah-istilah spesifik kami. Ia memberi tahu AI bagaimana berbagai konsep saling berhubungan dalam sistem kami.
• plot.md: Ini adalah peta tingkat tinggi. Ia menunjukkan bagaimana berbagai bagian dari proyek kami terhubung.
• Strict Rules: Kami memberi tahu AI bahwa direktori docs adalah otoritas tertinggi. Ia harus mengikuti aturan-aturan ini secara berurutan.
• Mandatory Tests: Setiap rute API baru harus memiliki test case.
Sistem ini membuat AI menjadi dapat diprediksi.
Pernah suatu kali, AI mengubah fungsi bersama yang merusak delapan bagian lain dari aplikasi. Karena kami memiliki tes, AI tersebut melihat kegagalan tersebut. Ia memperbaiki kesalahannya sendiri dengan membuat versi baru dari fungsi tersebut yang menangani persyaratan lama maupun baru. Tanpa tes, bug tersebut akan sampai ke tahap produksi.
Berhentilah menyalahkan AI karena tidak mengetahui codebase Anda. Perlakukan ia seperti karyawan baru. Anda tidak menyalahkan karyawan baru karena tidak mengetahui aturan Anda. Anda memberi mereka dokumentasi dan onboarding.
Struktur kami terlihat seperti ini:
docs/
- context.md (Istilah dan koneksi)
- plot.md (Peta tingkat tinggi)
- adr/ (Aturan spesifik seperti pembuatan tabel atau struktur API)
Tiga tips untuk alur kerja Anda:
- Jadilah spesifik dalam ADR Anda. Gunakan instruksi yang jelas alih-alih saran yang samar.
- Buat dokumentasi bersifat otoritatif. Beritahu AI bahwa aturan-aturan ini harus diutamakan.
- Ubah kesalahan menjadi aturan. Setiap kali AI gagal, buat ADR baru untuk mencegahnya.
Ini tidak membuat AI menjadi sempurna. Ini membuatnya konsisten.
Optional learning community: https://t.me/GyaanSetuAi
