Saya menjalankan kembar digital (digital twin) di laman web saya. Ia menjawab soalan tentang kehidupan dan kemahiran saya. Saya memberikan satu peraturan ketat: jangan sesekali mereka-reka sesuatu. Jika seseorang bertanya tentang kemahiran yang tidak saya miliki, ia mesti mengaku bahawa ia tidak tahu. Selama berbulan-bulan, saya percaya sistem tersebut berfungsi dengan baik. Saya mengujinya secara manual di sana sini, dan jawapannya kelihatan meyakinkan. Kemudian, saya membina kerangka penilaian (evaluation harness) yang betul. Angkanya sangat mengejutkan. Daripada 35 soalan, sembilan mengandungi penipuan terang-terangan. Daripada lapan soalan yang direka untuk tidak boleh dijawab, model tersebut hanya menolak empat. Prompt anti-halusinasi saya gagal kira-kira satu perempat daripada masa yang diuji. Saya sedang melancarkan produk yang menipu penggunanya.
Persediaan Retrieval yang Sangat Mudah
Saya tidak menggunakan Pinecone atau mana-mana pangkalan data vektor yang berat. Keseluruhan persediaan ini hanya bergantung pada satu fail JSON biasa. Kod saya membahagikan profil saya kepada bahagian-bahagian yang berasingan. Apabila soalan diterima, sistem akan mengira kesamaan kosinus (cosine similarity) antara pertanyaan dan setiap cebisan teks, memilih padanan yang paling dekat, dan memasukkannya ke dalam prompt sebagai konteks. Model tersebut kemudian menjana jawapan berdasarkan apa yang dilihatnya dalam tetingkap tersebut secara khusus.
Untuk laman web peribadi kecil yang menyediakan set fakta yang terhad, pendekatan ini adalah pantas dan hampir tidak memerlukan kos. Tiada perjalanan rangkaian (network round-trip) ke stor vektor jauh, tiada beban kerja pengindeksan, dan tiada orkestrasi yang kompleks. Anda baca fail tersebut, beri skor pada cebisan teks, bina prompt, dan selesai. Tetapi kesederhanaan pada bahagian belakang (backend) tidak menjamin kejujuran pada output. Saluran paip (pipeline) yang ringan masih boleh menghasilkan masalah serius apabila model memutuskan untuk berimprovisasi. Jurang antara "ini adalah konteksnya" dan "ini adalah apa yang akan saya katakan mengenainya" adalah tempat berlakunya halusinasi. Anda boleh memberikan perenggan tentang sejarah kerja anda kepada model tersebut, namun tetap menerima rekaan yang meyakinkan tentang bahasa pengaturcaraan yang tidak pernah anda sentuh.
Angka yang Meruntuhkan Keyakinan Saya
Selama berbulan-bulan, saya menganggap pemeriksaan rawak secara manual sudah memadai. Saya akan membuka sembang, bertanya soalan yang saya sudah tahu jawapannya, dan mengangguk apabila respons kelihatan betul. Itulah strategi pengujian saya. Ia terasa menyeluruh kerana saya sendiri yang menggunakan antara muka tersebut. Hakikatnya tidak.
Apabila saya akhirnya menulis kerangka penilaian yang boleh dijalankan secara sistematik, gambaran sebenar mula kelihatan. Set ujian tersebut melontarkan 35 soalan kepada kembar digital itu. Sembilan jawapan mengandungi penipuan. Saya juga menyertakan lapan soalan yang tidak mempunyai jawapan di mana-mana dalam profil saya. Model tersebut sepatutnya menolak kesemuanya. Ia hanya menolak empat. Prompt anti-halusinasi saya yang dirangka dengan teliti, yang merangkumi bahasa mutlak tentang tidak sesekali mereka-reka sesuatu, gagal kira-kira 25 peratus daripada masa yang diuji. Satu daripada empat. Itu bukan ralat pembundaran. Itu adalah produk yang rosak.
Berhenti Menguji dengan Soalan yang "Mesra"
Anda tidak boleh mencari pepijat (bugs) hanya dengan menggunakan produk anda sendiri. Anda menemuinya dengan cuba merosakkannya. Ujian manual saya terlalu "mesra". Saya hanya bertanya soalan yang saya tahu jawapan tepatnya, yang bermaksud saya secara tidak sedar membimbing model ke arah kawasan yang selamat. Saya tidak pernah menguji sempadan (edges). Saya tidak pernah bertanya tentang kemahiran yang saya inginkan, atau tentang pengalaman yang tidak pernah berlaku.
Pengujian sebenar memerlukan niat adversarial (lawan). Anda perlu merangka soalan yang direka untuk membuatkan AI gagal. Anda mahu ia tersilap di dalam makmal supaya ia tidak tersilap di hadapan pelawat. Set ujian yang hanya mengesahkan apa yang anda sudah percaya hanyalah sebuah demo yang berselindung. Jika anda tidak secara aktif menghasilkan kes-kes ekstrem (edge cases) dan soalan perangkap, anda tidak sedang menguji. Anda hanya berharap.
Dua Kesilapan yang Memberi Kesan
Prompting bukan satu jaminan. Arahan yang panjang dan terperinci yang memberitahu AI supaya tidak berhalusinasi hanyalah sekadar cadangan yang berpura-pura menjadi arahan. Model tersebut mungkin mengikutinya kebanyakan masa, tetapi ia akan mengabaikan arahan tersebut sebaik sahaja tekanan statistik mendorongnya ke arah lain. Temperature, kebarangkalian token, dan bentuk data latihan semuanya mempunyai pengaruh yang lebih besar daripada satu ayat dalam prompt sistem anda. Anda mesti mengukur kepatuhan dengan data, bukan dengan harapan. Arahan yang kuat bukanlah fakta yang disahkan. Ia adalah satu permintaan, dan permintaan boleh ditolak. Jika keseluruhan strategi keselamatan anda hanya bergantung pada penggunaan kata-kata yang tegas dalam prompt, anda telah membina penghadang daripada kertas tisu. Anda memerlukan kerangka penilaian (eval harness) yang mengira kekerapan model patuh, di bawah keadaan apa, dan mengapa ia gagal apabila ia gagal. Angka tidak peduli tentang nada suara anda.
Gelung penilaian itu cacat. Berikut adalah satu perangkap halus yang hampir memerangkap saya. Alat pengujian asal saya menjalankan proses pengambilan (retrieval) sebanyak dua kali. Larian pertama mengambil konteks untuk disemak berbanding kebenaran asas (ground truth). Larian kedua mengambil konteks untuk penjanaan jawapan yang sebenar. Dalam praktiknya, ini bermakna cebisan (chunks) yang dilihat oleh hakim mungkin berbeza daripada cebisan yang dilihat oleh model. Hakim sedang menilai jawapan berdasarkan data yang mungkin tidak pernah diterima oleh AI tersebut. Penilaian yang menilai input yang salah adalah lebih buruk daripada tiada penilaian langsung. Ia memberikan anda rasa selamat yang palsu. Anda melihat skor, melihat kadar kelulusan yang tinggi, dan berasa tenang. Sementara itu, pengguna anda sedang
