Keuntungan:
- Sediakan kawalan akses (ACL) yang menapis perolehan semula berdasarkan kuasa pengguna
- Menulis templat gesaan pepejal yang meletakkan konteks dan soalan pengguna dengan betul
- Mempraktikkan soal kemerdekaan dan pengurusan sejarah dalam perbualan pelbagai pusingan
Kami menubuhkan seni bina; Sekarang mari kita jadikan ia selamat, konsisten dan berbual. Terdapat tiga topik kritikal dalam unit ini: (1) kawalan akses yang menapis perolehan semula berdasarkan kuasa pengguna, (2) templat gesaan teguh yang meletakkan konteks dan soalan dengan betul, (3) kebebasan soal dan pengurusan sejarah perbualan dalam sembang berbilang pusingan. Tanpa ketiga-tiga ini, pembantu sama ada akan membocorkan data, memberikan jawapan yang tidak konsisten, atau berpecah pada soalan susulan.
Kawalan Capaian: Data Tanpa Kebenaran Jangan Sekali-kali Tiba
Risiko terbesar perusahaan: Dokumen yang pengguna tidak sepatutnya melihat kebocoran ke dalam respons. Kesilapan pemula yang sangat biasa ialah "memberitahu model untuk 'menunjukkan dokumen tersembunyi' dengan segera." Ini tidak selamat. Model mungkin terlupa arahan atau suntikan segera mungkin mengelaknya. Tempat yang betul ialah fasa pengambilan: sekeping yang tidak dibenarkan tidak boleh dibawa masuk sama sekali.
Cara untuk melakukan ini ialah menggunakan metadata pihak berkuasa (jabatan, peranan, tahap privasi) yang anda letakkan pada setiap bahagian sebagai penapis semasa carian. Anda dengan selamat menentukan siapa pengguna (identiti dan peranan) pada lapisan aplikasi dan menambah penapis ACL (Senarai Kawalan Akses) pada panggilan.
# Ditapis mengikut pengambilan kuasa (konseptual)pengguna = pengesahan(sesi) # disahkan daripada sumber yang dipercayai = pengguna.peranan + ["semua orang"] # cth. ["HR", "admin"]result = vektor_db.search( vektor=embed(question), top_k=20, filter={"permission_group": {"in": allowed}, # only allowed parts "privacy": {"lte": user.level}} # below the level)
Awas: Jangan sekali-kali meminta model untuk mendapatkan kuasa atau bergantung pada gesaan. Identiti dan kuasa ditentukan pada lapisan yang dipercayai permohonan; Penapis pengambilan adalah wajib, arahan segera hanyalah lapisan tambahan. "Saya menulisnya dalam gesaan" bukan keselamatan.
Templat Gesaan Pepejal
Templat segera ialah rangka yang menyatukan konteks, soalan pengguna dan arahan tingkah laku daripada perolehan semula. Bahagian templat yang baik: huraian peranan/tugas, peraturan kelakuan (asas, saya tidak tahu kebenaran, permintaan sumber, nada), konteks, soalan.
Anda seorang pembantu HR korporat. Tugas anda ialah menjawab soalan pekerja SAHAJA berdasarkan KONTEKS berikut. Peraturan:- Jika jawapan tidak jelas dalam konteks tulis "Saya tidak dapat mencari maklumat mengenai perkara ini dalam dokumentasi, semak dengan pasukan HR". Jangan meneka, jangan mengada-ada.- Jika sumber dalam konteks bercanggah, ambil dasar rasmi sebagai asas dan nyatakan percanggahan.- Tambahkan sumber yang anda harapkan sebagai [Sumber: fail, bahagian] pada akhir setiap tuntutan.- Jawab dalam bahasa yang pendek, jelas dan profesional. KONTEKS:{numbered_parts}SOALAN: {user_question}
Penomboran bahagian konteks ([1], [2], ...) memudahkan untuk memetik model. Juga, tulis sumber pada permulaan setiap bahagian supaya model boleh memetiknya dengan betul.
Petua: Pastikan templat gesaan tetap dan sentiasa letakkan pembolehubah (konteks, soalan) di tempat yang sama. Templat tetap kedua-duanya meningkatkan kebolehujian dan mengurangkan kos berkat caching segera dalam sesetengah sistem.
KONTEKS:[1] (Sumber: ik_el_kitabi.pdf, Seksyen 5.2) Cuti bergaji tahunan ialah 14 hari...[2] (Sumber: ik_el_kitabi.pdf, Seksyen 5.4) Cuti adalah 20 hari untuk orang yang berkhidmat lebih daripada 5 tahun...
Gesaan Lemah / Gesaan Kuat
Lemah (tiada asas, tiada sumber, identiti bercampur):
Gunakan dokumen ini dan jawab soalan: {parts}Pengguna: {question}# Masalah: model terkeluar dari konteks, dibuat-buat, tidak memetik sumber, # berkelakuan sewenang-wenangnya bercanggah.
Kuat (peranan + peraturan + konteks bernombor + sumber wajib):
Anda... Hanya bergantung pada KONTEKS. Jika tidak, katakan "Saya tidak tahu". Dalam konflik, pilih dasar rasmi. Tambahkan [Sumber: ...] pada setiap tuntutan.KONTEKS: [1]... [2]... SOALAN: {soalan}# Keputusan: jawapan yang sesuai dengan konteks, bersumber dan mengurus percanggahan dengan betul.
Pengurusan Perbualan Pelbagai Lawatan
Pengguna sebenar tidak bertanya satu soalan dan membiarkannya sahaja; bercakap. "Berapa hari cuti tahunan saya?" → “Bagaimana dengan pekerja 6 tahun itu?” → “Bagaimana cara saya memohonnya?” Soalan kedua dan ketiga sahaja tidak bermakna; bergantung pada konteks sebelumnya.
Anda perlu menyelesaikan dua masalah. Yang pertama adalah untuk mendapatkan semula: jadikan soalan susulan bebas (penulisan semula soalan). "Bagaimana dengan pekerja 6 tahun?" → "Berapa hari cuti tahunan layak untuk pekerja 6 tahun?" Anda mencari dengan soalan bebas ini. Yang kedua adalah untuk pengeluaran: anda juga memberikan sejarah perbualan kepada model supaya ia berterusan secara konsisten.
# Dua langkah: bebaskan → cari → jana dengan sejarah (konseptual) bebas = model.uret( "Gunakan sejarah perbualan untuk menjadikan soalan itu boleh difahami dengan sendirinya:\nSejarah: {sejarah}\nSoalan: {follow_question}") context = retrieval(independent) # search with independent questionanswer = model.uret(prompt(context), sejarah
Apabila sejarah berkembang (perbualan panjang), menghantar semuanya pada satu masa menjadi mahal dan memenuhi tetingkap konteks. Penyelesaian: ringkaskan pusingan sebelumnya atau simpan pusingan N terakhir dan kurangkan pusingan sebelumnya kepada ringkasan. Oleh itu, kos kekal terkawal dan konsistensi dikekalkan.
Status
masalah
Penyelesaian
Soalan susulan tidak mempunyai konteks
Carian dapat semula tidak bermakna
Jadikan soalan bebas (tulis semula)
berbual panjang
Kos dan tingkap membengkak
Ringkasan lawatan lepas
Pengguna menukar topik
Konteks lama dijangkiti
Kurangkan pengaruh masa lalu pada topik baru
Pihak berkuasa mungkin berbeza antara lawatan
Risiko kebocoran
Gunakan semula penapis ACL setiap pusingan
Tiga Kes Mini
Kes 1 — Kekeliruan "Keselamatan" dengan segera. Sebuah syarikat meletakkan dokumen gaji sulit pada pembantu yang boleh ditanya oleh sesiapa sahaja, tetapi hanya menulis "jangan beri maklumat gaji" pada gesaan. Model itu membocorkan julat gaji apabila pengguna bertanya soalan secara bulat-bulat. Apabila penapis ACL ditambahkan pada pengambilan (bahagian gaji hanya untuk peranan HR), kebocoran telah ditutup sepenuhnya; kerana bahagian itu tidak pernah dibawa lagi.
Kes 2 — Mengintai tanpa konteks. Dalam pembantu sokongan, pengguna bertanya "tempoh pulangan?" → “bagaimana dengan produk yang rosak?” Sistem ini membawa bahagian yang tidak berkaitan untuk "produk rosak". Apabila kebebasan soalan ditambah ("Berapa lama tempoh pemulangan untuk produk yang rosak?"), kadar jawapan yang betul meningkat daripada 44% kepada 90%.
Kes 3 - Masa lalu yang bengkak. Dalam 30 pusingan sembang dengan pembantu, setiap panggilan menghantar keseluruhan sejarah; Kos meningkat 3 kali ganda setiap pusingan, dan respons semakin perlahan. Apabila kami beralih kepada struktur yang mengekalkan 6 pusingan terakhir dan meringkaskan yang sebelumnya, kos token menurun sebanyak 62% dan konsistensi dikekalkan.
Kesilapan biasa
- Membiarkan kuasa kepada gesaan: Model terlupa/memintas; Penapis ACL adalah wajib apabila diambil semula.
- Tidak menyenaraikan konteks: Model tidak boleh memetik sumber yang betul.
- Tidak membebaskan soalan susulan: Pencarian carian sia-sia.
- Menghantar semua buta sejarah: Meletup dalam kos dan kelewatan; meringkaskan.
- Tidak menulis peraturan percanggahan: Model mungkin mengemukakan sumber yang tidak boleh dipercayai sebagai rasmi.
Secara ringkasnya
- Kawalan capaian dilaksanakan dengan penapis metadata semasa fasa mendapatkan semula; Bahagian yang tidak dibenarkan tidak boleh dibawa.
- Identiti dan kuasa ditentukan pada lapisan aplikasi yang dipercayai; Arahan segera hanyalah lapisan pertahanan tambahan.
- Templat gesaan teguh termasuk peranan, peraturan kelakuan (asas, kebenaran tidak tahu, sumber, konflik), konteks bernombor dan soalan.
- Dalam perbualan berbilang pusingan, soalan susulan dipisahkan dan model menghasilkan jawapan yang konsisten dengan sejarah.
- Dengan meringkaskan sejarah yang panjang, tetingkap kos dan konteks disimpan di bawah kawalan; ACL digunakan semula setiap pusingan.
Tugasan permohonan
(1) Tentukan sekurang-kurangnya tiga kumpulan kebenaran untuk pembantu anda sendiri (cth. semua orang, jabatan, pengurus) dan tulis dalam jadual jenis dokumen yang terbuka kepada kumpulan mana. (2) Sesuaikan dan tulis templat segera di atas mengikut peranan dan nada anda sendiri; Jadikan konteks bernombor dan bersumber. (3) Tulis senario perbualan realistik tiga pusingan (soalan → susulan → susulan) dan jana versi bebas bagi setiap soalan susulan secara manual. (4) Terangkan dalam satu ayat mengapa penapis ACL perlu digunakan semula setiap pusingan dalam senario ini.
senarai semak
- [ ] Saya melaksanakan kawalan akses dengan penapis dapatkan semula, saya hanya tidak bergantung pada gesaan.
- [ ] Saya menambah asas, saya tidak tahu kebenaran, sumber dan peraturan konflik pada templat segera saya.
- [ ] Saya memberikan bahagian konteks bernombor dan dirujuk.
- [ ] Saya membuat soalan susulan bebas sebelum diambil semula.
- [ ] Saya menguruskan kos dan tetingkap dengan meringkaskan sejarah perbualan yang panjang.