Cara Saya Membuat AI Berhenti Berhalusinasi pada Codebase Kami
Alat bantu coding AI gagal pada proyek produksi yang nyata. Mereka bekerja dengan baik pada kode baru. Namun, mereka berantakan pada kode lama yang memiliki riwayat.
Proyek fintech kami memiliki riwayat selama tiga tahun. Proyek ini memiliki dua frontend React, sebuah panel admin, dan backend FastAPI. Databasenya kompleks dengan banyak tabel dan join yang berat.
Kami mencoba menggunakan AI agar bisa bergerak lebih cepat. Itu gagal.
Saya meminta AI untuk membuat tabel kontak. Ia membuat kolom baru untuk nama dan email. Ia tidak menyadari bahwa kami sudah memiliki data tersebut di tabel users kami. Ia menduplikasi data alih-alih menggunakan foreign key.
AI tersebut tidak bodoh. Ia tidak memiliki konteks. Ia membuat keputusan dengan informasi yang tidak lengkap.
Saya berhenti bertanya bagaimana cara mendapatkan kode yang lebih baik. Saya mulai bertanya konteks apa yang dibutuhkan AI untuk membuat keputusan yang tepat.
Kami membangun alur kerja yang terstruktur. AI hanya akan sebagus konteks yang Anda berikan. Kami membuat konteks tersebut menjadi eksplisit.
Berikut adalah pengaturan kami:
- ADR Directory: Kami membuat folder untuk Architecture Decision Records. File-file ini menjelaskan mengapa kami membuat pilihan tertentu. Satu file memberi tahu AI untuk memeriksa tabel yang sudah ada sebelum membuat yang baru. File tersebut melarang duplikasi data pengguna.
- context.md: File ini menjelaskan istilah-istilah spesifik kami. Ia memberi tahu AI bagaimana kata-kata unik kami saling berhubungan satu sama lain.
- plot.md: Ini menyediakan peta tingkat tinggi dari proyek dan bagaimana bagian-bagiannya terhubung.
- Mandatory Tests: Setiap rute API baru memerlukan test case.
Ini mengubah segalanya. Pernah suatu kali, AI mengubah fungsi utilitas bersama (shared utility function). Perubahan tersebut merusak delapan bagian sistem lainnya. Test suite langsung menangkapnya. AI melihat kegagalan tersebut dan memperbaiki kesalahannya sendiri dengan membuat versi yang menangani persyaratan lama maupun baru.
Tanpa tes, bug tersebut akan sampai ke tahap produksi.
Perlakukan AI seperti pengembang baru. Anda tidak menyalahkan karyawan baru karena tidak mengetahui codebase Anda. Anda memberikan dokumentasi dan proses onboarding. Kami melakukan hal yang sama untuk AI.
Struktur kami:
- docs/context.md: Istilah dan koneksi proyek.
- docs/plot.md: Peta codebase tingkat tinggi.
- docs/adr/: Aturan spesifik seperti pembuatan tabel dan struktur API.
Tiga aturan untuk tim Anda:
- Jadilah spesifik dalam ADR. Gunakan instruksi yang jelas alih-alih saran yang samar.
- Buat dokumentasi bersifat otoritatif. Beritahu AI bahwa aturan-aturan ini adalah yang utama.
- Ubah kesalahan menjadi aturan. Setiap kali AI gagal, tulis ADR baru.
Sistem ini tidak membuat AI menjadi sempurna. Sistem ini membuat AI menjadi dapat diprediksi. Kami menginginkan codebase di mana AI bersifat konsisten sehingga tim dapat bergerak lebih cepat.
