Saya Membina Pengimbas Keselamatan AI — Kemudian Menemui Pepijat dalam Pengesan Saya Sendiri
Suntikan prompt (prompt injection) adalah risiko keselamatan utama bagi aplikasi LLM. Anda memberikan teks kepada model yang menyuruhnya mengabaikan arahan asalnya. Kadangkala, model tersebut menurut.
Saya membina AgentProbe untuk menguji perkara ini. Ia melancarkan 49 prompt serangan merentasi 8 kategori seperti jailbreak dan pengekstrakan data. Ia melaporkan kekerapan model gagal.
Pengajaran sebenar bukanlah tentang pengimbas tersebut. Ia adalah pepijat dalam kod pengesanan saya.
Bahagian yang sukar bukanlah serangan tersebut. Bahagian yang sukar adalah pengesanan.
Bagaimanakah anda tahu jika model benar-benar mematuhi serangan? Padanan kata kunci (keyword matching) adalah cara yang mudah. Anda mencari frasa penolakan seperti "I cannot help" atau frasa pematuhan seperti "developer mode."
Tetapi model menggunakan corak "hedge-then-comply". Mereka berkata "I cannot help with that," tetapi kemudian mereka tetap memberikan maklumat yang disekat itu. Padanan kata kunci gagal di sini kerana frasa penolakan tersebut ada dalam teks.
Untuk membaiki perkara ini, saya menggunakan sistem "LLM-as-judge". Saya menghantar pertukaran teks tersebut kepada model yang lebih kuat untuk menentukan sama ada sasaran benar-benar patuh. Rancangan saya adalah untuk menggunakan semakan kata kunci yang murah terlebih dahulu dan hanya menggunakan judge yang mahal apabila semakan kata kunci tidak pasti.
Kemudian saya menemui pepijat saya.
Pengesan kata kunci saya mengembalikan skor keyakinan 1 apabila ia menemui corak "hedge-then-comply". Walau bagaimanapun, kod saya hanya mempercayai peringkat kata kunci jika keyakinan adalah 2 atau lebih tinggi.
Ini bermakna pengesan "murah" saya tidak pernah benar-benar membuat keputusan. Setiap kes diserahkan kepada judge yang mahal. Saya membayar untuk judge bagi setiap kes, walaupun alat percuma saya sepatutnya boleh mengendalikannya.
Kesilapan ini mengajar saya tiga pengajaran tentang penggunaan LLM untuk menilai LLM yang lain:
- Judge mestilah lebih pintar daripada sasaran. Jika judge mempunyai saiz yang sama dengan sasaran, ia akan berkongsi titik buta (blind spots) yang sama.
- Ketepatan boleh menipu. Jika kebanyakan model menolak, judge yang sentiasa berkata "refused" kelihatan tepat tetapi tidak mempelajari apa-apa. Gunakan metrik seperti Cohen's kappa untuk mengambil kira faktor nasib.
- Judge mestilah stabil. Jalankan ujian yang sama sebanyak lima kali. Jika judge berubah fikiran, keputusannya adalah kabur dan memerlukan penelitian manusia.
Jika anda membina menggunakan LLM, ingatlah perkara-perkara ini:
- Mengesan pematuhan adalah lebih sukar daripada menyebabkannya.
- Berwaspada dengan model yang menolak pada ayat pertama tetapi patuh pada ayat kedua.
- Jangan percaya judge LLM secara membuta tuli. Ukur kebolehpercayaannya.
- Kongsikan pepijat anda. Menemui kelemahan saya sendiri mengajar saya lebih banyak daripada pelancaran yang sempurna.
Sumber: https://dev.to/nar1frames/i-built-an-ai-security-scanner-then-found-a-bug-in-my-own-detector-140a
Komuniti pembelajaran pilihan: https://t.me/GyaanSetuAi
