Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Praktik terbaik untuk menghindari serangan injeksi yang cepat
Pagar pembatas dan praktik terbaik berikut diuji pada aplikasi RAG yang didukung oleh Anthropic Claude sebagai model demonstratif. Saran ini sangat berlaku untuk keluarga model Claude tetapi juga dapat ditransfer ke LLM non-Claude lainnya, menunggu modifikasi khusus model (seperti penghapusan tag XHTML dan menggunakan tag atribusi dialog yang berbeda).
Gunakan <thinking>dan <answer>tag
Tambahan yang berguna untuk template RAG dasar adalah <thinking>
dan <answer>
tag. <thinking>
tag memungkinkan model untuk menunjukkan karyanya dan menyajikan kutipan yang relevan. <answer>
tag berisi respons yang akan dikembalikan ke pengguna. Secara empiris, menggunakan dua tag ini menghasilkan peningkatan akurasi ketika model menjawab pertanyaan kompleks dan bernuansa yang memerlukan penyatuan beberapa sumber informasi.
Gunakan pagar pembatas
Mengamankan aplikasi yang didukung LLM membutuhkan pagar pembatas khusus untuk mengakui dan membantu mempertahankan diri dari serangan umum yang dijelaskan sebelumnya. Ketika kami merancang pagar pembatas keamanan dalam panduan ini, pendekatan kami adalah menghasilkan manfaat paling banyak dengan jumlah token paling sedikit yang diperkenalkan ke templat. Karena mayoritas vendor model mengenakan biaya dengan token input, pagar pembatas yang memiliki token lebih sedikit hemat biaya. Selain itu, template yang direkayasa berlebihan telah terbukti mengurangi akurasi.
Bungkus instruksi dalam sepasang tag urutan asin
Beberapa LLM mengikuti struktur template di mana informasi dibungkus dalam tag XHTML<tagname-abcde12345>
Instruksi tambahan memerintahkan LLM untuk hanya mempertimbangkan instruksi yang ada dalam tag ini.
Satu masalah dengan pendekatan ini adalah bahwa jika model menggunakan tag dalam jawabannya, baik secara diharapkan atau tidak terduga, urutan asin juga ditambahkan ke tag yang dikembalikan. Sekarang setelah pengguna mengetahui urutan khusus sesi ini, mereka dapat menyelesaikan tag spoofing—mungkin dengan kemanjuran yang lebih tinggi karena instruksi yang memerintahkan LLM untuk mempertimbangkan instruksi yang diberi tag garam. Untuk melewati risiko ini, kami membungkus semua instruksi dalam satu bagian yang ditandai dalam templat, dan menggunakan tag yang hanya terdiri dari urutan asin (misalnya,<abcde12345>
). Kami kemudian dapat menginstruksikan model untuk hanya mempertimbangkan instruksi dalam sesi yang ditandai ini. Kami menemukan bahwa pendekatan ini menghentikan model dari mengungkapkan urutan asinnya dan membantu mempertahankan diri terhadap spoofing tag dan serangan lain yang memperkenalkan atau mencoba menambah instruksi template.
Ajarkan LLM untuk mendeteksi serangan dengan memberikan instruksi khusus
Kami juga menyertakan serangkaian instruksi yang menjelaskan pola serangan umum, untuk mengajarkan LLM cara mendeteksi serangan. Instruksi fokus pada permintaan input pengguna. Mereka menginstruksikan LLM untuk mengidentifikasi keberadaan pola serangan kunci dan mengembalikan “Serangan Prompt Terdeteksi” jika menemukan pola. Kehadiran instruksi ini memungkinkan kita untuk memberikan LLM jalan pintas untuk menangani serangan umum. Pintasan ini relevan ketika template menggunakan <thinking>
dan memberi <answer>
tag, karena LLM biasanya mem-parsing instruksi berbahaya secara berulang-ulang dan dalam detail yang berlebihan, yang pada akhirnya dapat mengarah pada kepatuhan (seperti yang ditunjukkan dalam perbandingan di bagian berikutnya).