Keuntungan:
- Siapkan kontrol akses (ACL) yang memfilter pengambilan berdasarkan otoritas pengguna
- Menulis template prompt solid yang menempatkan konteks dan pertanyaan pengguna dengan benar
- Mempraktikkan kemandirian pertanyaan dan manajemen sejarah dalam percakapan multi-putaran
Kami mendirikan arsitektur; Sekarang mari kita membuatnya aman, konsisten, dan komunikatif. Ada tiga topik penting dalam unit ini: (1) kontrol akses yang memfilter pengambilan berdasarkan otoritas pengguna, (2) templat cepat yang kuat yang menempatkan konteks dan pertanyaan dengan benar, (3) independensi pertanyaan dan manajemen riwayat percakapan dalam obrolan multi-putaran. Tanpa ketiga hal ini, seorang asisten akan membocorkan data, memberikan jawaban yang tidak konsisten, atau gagal menjawab pertanyaan lanjutan.
Kontrol Akses: Data Tidak Sah Tidak Boleh Tiba
Risiko terbesar perusahaan: Dokumen yang tidak boleh dilihat oleh pengguna membocorkan responsnya. Kesalahan pemula yang sangat umum adalah "memberi tahu model untuk 'menampilkan dokumen tersembunyi' saat diminta". Ini tidak aman. Model mungkin lupa instruksi atau injeksi yang cepat mungkin menghindarinya. Tempat yang benar adalah tahap pengambilan: barang yang tidak sah tidak boleh dibawa masuk sama sekali.
Cara melakukannya adalah dengan menerapkan metadata otoritas (departemen, peran, tingkat privasi) yang Anda masukkan ke setiap bagian sebagai filter selama pencarian. Anda dengan aman menentukan siapa pengguna (identitas dan peran) di lapisan aplikasi dan menambahkan filter ACL (Access Control List) ke panggilan.
# Difilter berdasarkan pengambilan otoritas (konseptual)pengguna = autentikasi(sesi) # diautentikasi dari sumber tepercaya = pengguna.peran + ["semua orang"] # mis. ["HR", "admin"]hasil = vektor_db.search( vektor=embed(pertanyaan), top_k=20, filter={"permission_group": {"in": diperbolehkan}, # hanya bagian "privasi" yang diperbolehkan: {"lte": user.level}} # di bawah level)
Perhatian: Jangan pernah meminta otoritas dari model atau mengandalkan perintahnya. Identitas dan otoritas ditentukan pada lapisan aplikasi yang tepercaya; Filter pengambilan adalah wajib, instruksi cepat hanyalah lapisan tambahan. "Saya menulisnya di prompt" bukan keamanan.
Templat Prompt Padat
Templat prompt adalah kerangka yang menyatukan konteks, pertanyaan pengguna, dan instruksi perilaku dari pengambilan. Bagian dari templat yang baik: deskripsi peran/tugas, aturan perilaku (landasan, saya tidak tahu izin, permintaan sumber daya, nada), konteks, pertanyaan.
Anda adalah asisten SDM perusahaan. Tugas Anda adalah menjawab pertanyaan karyawan HANYA berdasarkan KONTEKS berikut. Aturan: - Jika jawabannya tidak jelas dalam konteksnya, tulis "Saya tidak dapat menemukan informasi mengenai ini di dokumentasi, tanyakan kepada tim HR". Jangan menebak-nebak, jangan mengada-ada.- Jika sumber dalam konteks bertentangan, ambil kebijakan resmi sebagai dasar dan nyatakan kontradiksi tersebut.- Tambahkan sumber yang Anda andalkan sebagai [Sumber: file, bagian] di akhir setiap klaim.- Jawab dengan bahasa yang singkat, jelas, dan profesional. KONTEKS:{numbered_parts}PERTANYAAN: {user_question}
Memberi nomor pada bagian konteks ([1], [2], ...) memudahkan pengutipan model. Tuliskan juga sumbernya di awal setiap karya agar model dapat mengutipnya dengan benar.
Tip: Jaga agar template prompt tetap konstan dan selalu tempatkan variabel (konteks, pertanyaan) di tempat yang sama. Templat tetap meningkatkan kemampuan pengujian dan mengurangi biaya berkat caching yang cepat di beberapa sistem.
KONTEKS:[1] (Sumber: ik_el_kitabi.pdf, Bagian 5.2) Cuti tahunan yang dibayar adalah 14 hari...[2] (Sumber: ik_el_kitabi.pdf, Bagian 5.4) Cuti selama 20 hari bagi yang masa kerja lebih dari 5 tahun...
Prompt Lemah / Prompt Kuat
Lemah (tidak ada landasan, tidak ada sumber, identitas tercampur):
Gunakan dokumen-dokumen ini dan jawab pertanyaan: {parts}Pengguna: {question}# Masalah: model keluar dari konteks, dibuat-buat, tidak mengutip sumber, # berperilaku sewenang-wenang dan bertentangan.
Kuat (peran + aturan + konteks bernomor + sumber wajib):
Anda... Hanya mengandalkan KONTEKS. Jika tidak, katakan "Saya tidak tahu". Jika terjadi konflik, pilih kebijakan resmi. Tambahkan [Sumber: ...] pada setiap klaim. KONTEKS: [1]... [2]... PERTANYAAN: {question}# Hasil: jawaban yang sesuai dengan konteks, bersumber, dan mengelola kontradiksi dengan benar.
Manajemen Percakapan Multi-Tur
Pengguna sebenarnya tidak menanyakan satu pertanyaan pun dan membiarkannya; berbicara. “Berapa hari cuti tahunan yang saya punya?” → “Bagaimana dengan karyawan 6 tahun?” → “Bagaimana cara saya mengajukan permohonan?” Pertanyaan kedua dan ketiga saja tidak ada artinya; tergantung pada konteks sebelumnya.
Anda perlu menyelesaikan dua masalah. Yang pertama adalah untuk pengambilan: jadikan pertanyaan lanjutannya independen (penulisan ulang pertanyaan). “Bagaimana dengan karyawan 6 tahun itu?” → “Berapa hari cuti tahunan yang berhak diterima oleh karyawan 6 tahun?” Anda mencari dengan pertanyaan independen ini. Yang kedua adalah untuk produksi: Anda juga memberikan riwayat percakapan kepada model agar terus berlanjut secara konsisten.
# Dua langkah: mandiri → cari → buat dengan riwayat (konseptual) independen = model.uret( "Gunakan riwayat percakapan untuk membuat pertanyaan dapat dimengerti sendiri:\nHistori: {history}\nPertanyaan: {follow_question}") konteks = pengambilan(independen) # cari dengan jawaban pertanyaan independen = model.uret(prompt(konteks, riwayat, ikuti_pertanyaan))
Seiring berkembangnya sejarah (percakapan panjang), mengirimkan semuanya sekaligus menjadi mahal dan memenuhi jendela konteks. Solusi: rangkum putaran sebelumnya atau pertahankan N putaran terakhir dan kurangi putaran sebelumnya menjadi ringkasan. Dengan demikian, biaya tetap terkendali dan konsistensi tetap terjaga.
Status
masalah
Solusi
Pertanyaan lanjutan tidak memiliki konteks
Pencarian pengambilan tidak ada artinya
Jadikan pertanyaannya independen (tulis ulang)
obrolan panjang
Biaya dan jendela membengkak
Ringkasan tur sebelumnya
Pengguna mengubah topik
Konteks lama terinfeksi
Kurangi pengaruh masa lalu pada topik baru
Otoritas mungkin berbeda antar tur
Risiko kebocoran
Terapkan kembali filter ACL setiap putaran
Tiga Kasus Mini
Kasus 1 - Kekeliruan “Keamanan” dengan prompt. Sebuah perusahaan menaruh dokumen gaji rahasia pada asistennya yang dapat ditanyakan siapa pun, tetapi hanya menulis "jangan berikan informasi gaji" saat diminta. Model tersebut membocorkan kisaran gaji ketika pengguna mengajukan pertanyaan secara tidak langsung. Ketika filter ACL ditambahkan ke pengambilan (bagian gaji hanya untuk peran HR), kebocoran ditutup sepenuhnya; karena bagian tersebut tidak pernah dibawa lagi.
Kasus 2 - Penguntitan tanpa konteks. Di asisten dukungan, pengguna menanyakan "periode pengembalian?" → “bagaimana dengan produk yang rusak?” Sistem membawa bagian yang tidak relevan untuk "produk rusak". Ketika independensi pertanyaan ditambahkan ("Berapa lama periode pengembalian produk rusak?"), tingkat jawaban benar meningkat dari 44% menjadi 90%.
Kasus 3 — Masa lalu yang membengkak. Dalam 30 putaran obrolan dengan asisten, setiap panggilan mengirimkan seluruh riwayat; Biayanya meningkat 3 kali lipat per putaran, dan responsnya melambat. Ketika kami beralih ke struktur yang mempertahankan 6 putaran terakhir dan merangkum putaran sebelumnya, biaya token turun sebesar 62% dan konsistensi tetap terjaga.
Kesalahan umum
- Membiarkan otoritas pada prompt: Model lupa/melewati; Filter ACL wajib digunakan saat pengambilan.
- Tidak menyebutkan konteksnya: Model tidak dapat mengutip sumber yang benar.
- Tidak mengindependenkan pertanyaan lanjutan: Pencarian pengambilan tidak ada gunanya.
- Mengirimkan semua sejarah secara buta: Meledak dalam biaya dan penundaan; meringkaskan.
- Tidak menulis aturan kontradiksi: Model mungkin menampilkan sumber yang tidak dapat diandalkan sebagai sumber resmi.
Singkatnya
- Kontrol akses diimplementasikan dengan filter metadata selama fase pengambilan; Bagian yang tidak sah tidak boleh dibawa.
- Identitas dan otoritas ditentukan pada lapisan aplikasi tepercaya; Instruksi yang cepat hanyalah lapisan pertahanan tambahan.
- Templat prompt yang kuat mencakup peran, aturan perilaku (landasan, tidak mengetahui izin, sumber, konflik), konteks bernomor, dan pertanyaan.
- Dalam percakapan multi-putaran, pertanyaan lanjutan dipisahkan dan model menghasilkan jawaban yang konsisten dengan riwayat.
- Dengan merangkum sejarah yang panjang, biaya dan jendela konteks tetap terkendali; ACL diterapkan kembali setiap putaran.
Tugas aplikasi
(1) Tetapkan setidaknya tiga kelompok otorisasi untuk asisten Anda (misalnya setiap orang, departemen, manajer) dan tulis dalam tabel jenis dokumen mana yang terbuka untuk kelompok mana. (2) Sesuaikan dan tulis templat prompt di atas sesuai dengan peran dan nada Anda; Buatlah konteksnya diberi nomor dan sumbernya. (3) Tulis skenario percakapan realistis tiga putaran (pertanyaan → tindak lanjut → tindak lanjut) dan secara manual buat versi independen dari setiap pertanyaan tindak lanjut. (4) Jelaskan dalam satu kalimat mengapa filter ACL harus diterapkan kembali setiap putaran dalam skenario ini.
daftar periksa
- [] Saya menerapkan kontrol akses dengan filter pengambilan, saya hanya tidak bergantung pada prompt.
- [] Saya menambahkan landasan, saya tidak tahu izin, sumber, dan aturan konflik ke template prompt saya.
- [ ] Saya memberikan bagian konteks yang diberi nomor dan referensi.
- [ ] Saya membuat pertanyaan lanjutan secara independen sebelum pengambilan.
- [ ] Saya mengelola biaya dan jendela dengan merangkum riwayat percakapan yang panjang.