Halusinasi AI adalah jawaban yang terdengar pasti tapi salah: fakta yang dikarang, kutipan dari paper yang tidak ada, fungsi yang tidak pernah dimiliki sebuah library. Setiap model chat melakukannya, termasuk ChatGPT, Claude, dan Gemini. Ini bukan bug yang akan hilang lewat sebuah patch; ini akibat dari cara model bahasa menghasilkan teks. Prompt bisa membuat halusinasi lebih jarang terjadi, dan hanya pengecekan yang bisa menangkap yang tersisa.
Kenapa model bahasa berhalusinasi
Model bahasa menulis satu token dalam satu waktu, dan setiap token dipilih karena kemungkinan besar mengikuti teks sejauh ini. Kemungkinan besar menurut semua yang dilihat model saat pelatihan. Tidak ada bagian dari proses itu yang mencari fakta. Ketika jawabannya umum di data pelatihan, kelanjutan yang paling mungkin biasanya adalah yang benar. Ketika jawabannya jarang, baru, atau sama sekali tidak ada, model tetap menghasilkan kelanjutan yang paling masuk akal, dan teks masuk akal tentang fakta yang tidak dimilikinya itulah halusinasi.
Beberapa jenis pertanyaan lebih rentan daripada yang lain:
- Detail spesifik: angka yang persis, tanggal, nama, nomor versi, rujukan halaman. Bentuk jawabannya mudah diprediksi; detailnya tidak.
- Kutipan dan link. Sebuah referensi punya format yang bisa diprediksi (penulis, tahun, judul, jurnal), jadi model bisa menghasilkan referensi yang formatnya rapi untuk paper yang tidak pernah ditulis.
- Topik yang jarang atau baru: library kecil, peraturan lokal, apa pun setelah data pelatihan model berakhir.
- Pertanyaan dengan premis yang salah. Tanyakan apa yang dilakukan sebuah fungsi, dan model cenderung menjawab seolah-olah fungsi itu ada.
Kelancaran bukan tanda akurasi. Jawaban hasil halusinasi punya nada yakin yang sama, format yang sama, dan tingkat detail yang sama dengan jawaban yang benar, dan itulah kenapa mudah terlewat.
Jebakan premis yang salah
Tab-tab di bawah ini menanyakan DataFrame.smart_merge() di pandas. Method itu tidak ada. Pertanyaan pertama mengasumsikan method itu ada; pertanyaan kedua mengizinkan model mengatakan sebaliknya.
DataFrame.smart_merge() menggabungkan dua DataFrame dan mendeteksi join key untukmu dengan membandingkan nama kolom dan tipe datanya. Pakai method ini ketika DataFrame-mu punya kolom key yang sama tapi namanya sedikit berbeda, misalnya user_id dan userId, karena method ini bisa mencocokkannya secara otomatis.
Untuk kendali penuh atas key dan jenis join-nya, merge() tetap pilihan yang lebih baik.
Balasan pertama adalah halusinasi yang dibangun dari bagian-bagian yang nyata: pandas memang menggabungkan DataFrame, dan pencocokan key adalah hal yang wajar diinginkan. Pertanyaannya yang menyediakan premis, dan model menyediakan fungsi masuk akal yang cocok dengan premis itu. Model saat ini lebih sering menangkap premis yang salah daripada model lama, tapi pertanyaan yang dirumuskan sebagai asumsi tetap mendorong jawabannya ke arah setuju.
Prompt kedua melakukan dua hal. Prompt itu bertanya apakah method-nya ada sebelum bertanya apa yang dilakukannya, dan memberikan izin eksplisit untuk ragu. Balasannya juga mengembalikan cara untuk memverifikasi, dan itulah kebiasaan yang perlu dijaga: hasattr mengecek library yang sebenarnya dalam satu baris.
Jawab dari sumber, dengan kutipan
Cara terkuat untuk mengurangi halusinasi adalah menaruh faktanya di dalam prompt. Ketika jawabannya ada di teks yang bisa dilihat model, model tidak perlu mengingat apa pun, dan kamu bisa mengecek setiap klaim terhadap teks itu. Meminta kutipan pendukung untuk setiap klaim membuat pengecekannya cepat, dan memberi tahu model apa yang harus dikatakan ketika dokumennya tidak menyebutkan sesuatu membuatnya lebih jarang mengisi celah dengan tebakan.
Berapa lama backup production disimpan: 30 hari. Dokumen itu menyebut 30 hari untuk backup secara umum dan 7 hari hanya untuk staging. "Backup berjalan setiap malam pukul 02.00 UTC dan disimpan selama 30 hari."
Bisakah aku me-restore sendiri: Tidak ada di dokumen. Dokumen itu hanya menyebutkan cara mengajukan restore: "Permintaan restore diajukan di channel #ops dan biasanya selesai dalam empat jam." Itu menyiratkan bahwa tim lain yang melakukannya, tapi dokumen itu tidak menyebutkan apakah restore mandiri tersedia.
Lihat bagaimana balasan itu memperlakukan pertanyaan kedua. Model yang menjawab dari pengetahuan umum mungkin akan menggambarkan sebuah perintah restore. Karena dibatasi pada dokumen, model memisahkan apa yang dikatakan teksnya dari apa yang hanya disiratkannya. Matikan bagian batasan lalu tanyakan lagi untuk melihat apakah balasannya masih memisahkan keduanya.
Tag <document> menjaga materi sumber tetap terpisah dari instruksimu; delimiter dan tag XML menjelaskan kenapa itu penting, dan context engineering membahas cara memberi model dokumen yang tepat dalam skala besar. Ide yang sama menggerakkan aplikasi chat dengan pencarian web atau unggahan file: jawabannya hanya sekuat sumber-sumber yang ada di percakapan, jadi baca sumber yang dikutip, bukan hanya ringkasannya.
Kebiasaan prompt lain yang membantu
- Bertanyalah, jangan berasumsi. "Apakah ada cara untuk X?" sebelum "Bagaimana cara X?" Premis yang salah adalah halusinasi yang paling mudah dipicu.
- Minta tanda ketidakpastian. "Tandai setiap klaim yang tidak kamu yakini" memberimu daftar tempat yang perlu dicek lebih dulu. Labelnya bukan peluang yang terkalibrasi, tapi sering menunjuk ke titik-titik lemahnya.
- Minta sumber yang bisa kamu buka. Lalu buka sumbernya. Kutipan yang belum kamu buka belum dicek, dan sebuah link bisa saja ada tapi mengatakan sesuatu yang berbeda dari klaim yang didukungnya.
- Mulai dari awal saat chat jadi panjang. Detail dari awal chat yang panjang bisa tercampur atau terbuang seiring percakapannya bertambah. Untuk fakta yang penting, buka percakapan baru dengan materi yang relevan sudah ditempel; token dan context window menjelaskan alasannya.
- Tanyakan sekali lagi, dari awal. Kalau dua jawaban independen untuk pertanyaan fakta yang sama tidak sepakat, setidaknya satu salah. Kesepakatan adalah bukti yang lebih lemah, karena model bisa mengulang kesalahan yang sama.
Verifikasi apa yang penting
Tidak ada prompt yang bisa menghilangkan halusinasi, jadi tentukan apa yang perlu dicek dari seberapa mahal akibatnya kalau salah. Hasil brainstorming atau draf pertama bisa saja berisi beberapa kesalahan. Angka di sebuah laporan, klaim hukum atau medis, kutipan yang dikaitkan dengan seseorang, atau referensi di karyamu butuh sumber primer.
Kode adalah output yang paling mudah diverifikasi, karena menjalankannya berarti mengujinya. Method karangan gagal dengan AttributeError atau yang setara begitu baris yang memanggilnya berjalan, jadi pastikan tesmu mencapai baris itu. Kasus yang berisiko adalah nama package karangan. Kalau model menyuruhmu menginstal package yang belum pernah kamu dengar, cek bahwa package itu ada, bahwa itu memang proyek yang kamu kira, dan bahwa package itu banyak dipakai, sebelum kamu menginstalnya. Peneliti keamanan sudah menunjukkan bahwa model sering mengarang nama package palsu yang sama berulang-ulang, dan penyerang yang memublikasikan package dengan salah satu nama itu akan membuat kodenya terinstal oleh siapa pun yang mengikuti saran tersebut. Pengecekan untuk kode yang ditulis AI dibahas di prompt untuk menulis kode.
Pertanyaan yang sering diajukan
Apa itu halusinasi AI?
Halusinasi AI adalah jawaban dari model bahasa yang terdengar yakin dan lancar tapi salah atau tidak berdasar: fakta yang dikarang, kutipan dari paper yang tidak ada, fungsi yang tidak pernah dimiliki sebuah library. Model tidak sengaja berbohong. Model menghasilkan teks yang terlihat paling mungkin, dan paling mungkin tidak sama dengan benar.
Kenapa ChatGPT mengarang jawaban?
Model chat menghasilkan teks dengan memprediksi token berikutnya, satu demi satu, berdasarkan pola yang dipelajari saat pelatihan. Kecuali ada tool seperti pencarian web atau dokumen di dalam percakapan, tidak ada yang mencari jawabannya. Ketika jawaban yang benar jarang muncul di data pelatihan, atau tidak pernah ada, model tetap menghasilkan kelanjutan yang paling masuk akal, dan jawaban salah yang masuk akal terbaca persis seperti jawaban yang benar.
Bisakah AI dihentikan dari halusinasi sepenuhnya?
Tidak. Model saat ini lebih jarang berhalusinasi daripada model sebelumnya, dan menjawab dari dokumen yang kamu berikan atau dari hasil pencarian menguranginya lebih jauh lagi, tapi tidak ada prompt yang bisa menghilangkannya. Perlakukan setiap fakta, angka, kutipan, referensi, atau API yang penting sebagai klaim yang perlu dicek terhadap sumber primer.
Prompt apa yang bisa mengurangi halusinasi AI?
Ada tiga yang paling membantu. Berikan izin eksplisit untuk berkata "aku tidak tahu". Sediakan materi sumbernya dan minta model menjawab hanya dari materi itu. Minta kutipan langsung yang mendukung setiap klaim, supaya kamu bisa mengecek klaim itu terhadap teksnya. Hindari pertanyaan yang mengasumsikan sesuatu itu benar, karena model cenderung ikut dengan asumsinya.
Apa contoh halusinasi AI dalam coding?
Memanggil method yang tidak dimiliki sebuah library, memberikan opsi yang tidak ada, meng-import package yang tidak pernah dipublikasikan siapa pun, dan menggambarkan perilaku dari versi lama sebuah library seolah-olah masih berlaku. Kode membuat banyak dari kesalahan ini mudah ditangkap, karena method karangan langsung gagal begitu baris yang memanggilnya berjalan. Nama package karangan adalah kasus yang berbahaya: pastikan sebuah package itu nyata dan dikenal luas sebelum kamu menginstalnya.