Nyereség:
- Állítsa be a hozzáférés-vezérlést (ACL), amely a felhasználói jogosultság alapján szűri a visszakeresést
- Szilárd prompt sablon írása, amely helyesen helyezi el a kontextust és a felhasználói kérdést
- Kérdésfüggetlenség és történelemkezelés gyakorlása többfordulós beszélgetésekben
Megalapítottuk az építészetet; Most tegyük biztonságossá, következetessé és beszélgetőssé. Ebben az egységben három kritikus témakör található: (1) hozzáférés-szabályozás, amely a felhasználó jogosultságai alapján szűri a visszakeresést, (2) egy robusztus prompt sablon, amely helyesen helyezi el a kontextust és a kérdést, (3) a kérdésfüggetlenség és a beszélgetési előzmények kezelése többfordulós csevegésben. E három nélkül az asszisztens vagy adatokat szivárogtat ki, ellentmondó válaszokat ad, vagy szétesik az utólagos kérdésekre.
Hozzáférés-szabályozás: Jogosulatlan adatok soha nem érkezhetnek meg
Vállalati legnagyobb kockázat: olyan dokumentum szivárog ki a válaszba, amelyet a felhasználónak nem szabad látnia. A kezdők nagyon gyakori hibája, hogy „mondja a modellnek, hogy „mutassa meg a rejtett dokumentumokat” a felszólításra. Ez nem biztonságos. A modell elfelejthet egy utasítást, vagy egy azonnali befecskendezés elkerülheti azt. A megfelelő hely a visszakeresési fázis: az illetéktelen darabot egyáltalán nem szabad bevinni.
Ennek módja az, hogy a keresés során az egyes részekre felhelyezett jogosultsági metaadatokat (részleg, szerepkör, adatvédelmi szint) szűrőként alkalmazza. Biztonságosan meghatározhatja, hogy ki a felhasználó (identitás és szerepek) az alkalmazási rétegben, és hozzáadhat egy ACL (Hozzáférés-vezérlési lista) szűrőt a híváshoz.
# Jogosultság lekérése alapján szűrve (fogalmi)felhasználó = hitelesít(session) # hitelesítve megbízható forrásból = user.roles + ["mindenki"] # pl. ["HR", "admin"]result = vektor_db.search( vektor=beágyazás(kérdés), top_k=20, filter={"permission_group": {"in": megengedett}, # csak engedélyezett részek "privacy": {"lte": user.level}} # szint alatt)
Figyelem: Soha ne kérjen felhatalmazást a modelltől, és ne hagyatkozzon a felszólításra. Az identitás és a jogosultság meghatározása az alkalmazás megbízható rétegében történik; A visszakereső szűrő kötelező, a prompt utasítás csak egy további réteg. Az "írtam a promptba" nem biztonság.
Szilárd prompt sablon
A prompt sablon az a váz, amely összegyűjti a lekérdezésből származó kontextust, felhasználói kérdést és viselkedési utasításokat. A jó sablon részei: szerep/feladat leírása, magatartási szabályok (földelés, nem tudom, engedély, forráskérés, hangnem), kontextus, kérdés.
Ön vállalati HR-asszisztens. Az Ön feladata, hogy az alkalmazottak kérdéseire CSAK az alábbi KONTEXTUS alapján válaszoljon. Szabályok:- Ha a válasz nem egyértelmű a szövegkörnyezetben, írja be: "Nem találtam erről információt a dokumentációban, kérdezze meg a HR csapatot". Ne találgass, ne találj ki.- Ha a kontextusban szereplő források ütköznek, vedd alapul a hivatalos irányelvet, és mondd ki az ellentmondást.- Minden állítás végén add meg a forrást, amelyre támaszkodsz, mint [Forrás: akta, szakasz].- Válaszolj röviden, világosan és szakszerű nyelven. CONTEXT:{numbered_parts}KÉRDÉS: {user_question}
A kontextus részek számozása ([1], [2], ...) megkönnyíti a modell idézését. Minden egyes darab elejére írja be a forrást is, hogy a modell helyesen tudja azt idézni.
Tipp: Tartsa állandóan a prompt sablont, és mindig tegye a változókat (kontextus, kérdés) ugyanazokra a helyekre. A rögzített sablon növeli a tesztelhetőséget és csökkenti a költségeket egyes rendszerekben az azonnali gyorsítótárazásnak köszönhetően.
KONTEXTUS:[1] (Forrás: ik_el_kitabi.pdf, 5.2. szakasz) Az éves fizetett szabadság 14 nap...[2] (Forrás: ik_el_kitabi.pdf, 5.4. pont) A szabadság 20 nap az 5 év feletti szolgálati idővel...
Gyenge felszólítás / Erős felszólítás
Gyenge (nincs alapozás, nincs forrás, az azonosság vegyes):
Használja ezeket a dokumentumokat, és válaszoljon a kérdésre: {parts}Felhasználó: {kérdés}# Probléma: a modell kilóg a kontextusból, kitalálja, nem hivatkozik forrásokra, # önkényesen, ellentmondásosan viselkedik.
Erős (szerep + szabályok + számozott kontextus + forrás kötelező):
Ön... Csak hagyatkozzon a KONTEXTUSRA. Ellenkező esetben mondja azt, hogy „nem tudom”. Konfliktus esetén válassza a hivatalos szabályzatot. Adja hozzá minden állításhoz [Forrás: ...].KONTEXTUS: [1]... [2]... KÉRDÉS: {kérdés}# Eredmény: a kontextushoz hű, forrásból származó és az ellentmondást helyesen kezelő válasz.
Többkörű beszélgetéskezelés
Egy valódi felhasználó egyetlen kérdést sem tesz fel, és nem hagyja békén; beszél. – Hány napos éves szabadságom van? → „Mi a helyzet a 6 éves alkalmazottal?” → „Hogyan jelentkezhetek rá?” A második és a harmadik kérdés önmagában értelmetlen; az előző kontextustól függ.
Két problémát kell megoldania. Az első a visszakereséshez: tegye függetlenné az utókérdést (kérdés átírása). – Mi a helyzet a 6 éves alkalmazottal? → "Hány nap éves szabadság jár egy 6 éves munkavállalónak?" Ezzel a független kérdéssel keresel. A második a gyártásé: a beszélgetés történetét is megadja a modellnek, hogy az következetesen folytatódjon.
# Kétlépéses: függetlenítés → keresés → előzményekkel generálás (fogalmi) független = model.uret( "Használja a beszélgetési előzményeket, hogy önmagában is érthető legyen a kérdés:\nElőzmények: {előzmények}\nKérdés: {follow_question}") context = retrieval(független) # keresés független kérdésválaszsal előzmények = model.uret(prompt, follow)
Az előzmények növekedésével (hosszú beszélgetés) az összes elküldése költségessé válik, és kitölti a kontextusablakot. Megoldás: foglalja össze az előző köröket, vagy tartsa meg az utolsó N kört, és csökkentse az előzőeket az összesítésre. Így a költségek ellenőrzés alatt maradnak, és a következetesség megmarad.
Állapot
probléma
Megoldás
A követési kérdésnek nincs összefüggése
A visszakeresés értelmetlen
Tedd függetlenné a kérdést (írd át)
hosszú csevegés
Költség és ablak megduzzad
Összefoglaló az elmúlt túrákról
A felhasználó témát váltott
A régi kontextus megfertőződik
Csökkentse a múltbeli befolyást az új témára
A jogosultság túránként változhat
Szivárgásveszély
Alkalmazza újra az ACL szűrőt minden körben
Három mini tok
1. eset – „Biztonsági” tévedés a felszólítással. Egy cég bizalmas fizetési dokumentumokat helyezett el egy asszisztensre, amit bárki megkérdezhetett, de csak azt írta a promptra, hogy "ne adjon fizetési információkat". A modell kiszivárogtatta a fizetési tartományt, amikor egy felhasználó körkörösen tette fel a kérdést. Amikor az ACL szűrőt hozzáadták a visszakereséshez (csak a HR szerepkörhöz a fizetési részek), a szivárgás teljesen lezárult; mert az alkatrészt soha többé nem hozzák.
2. eset – Kontextus nélküli követés. A támogatási asszisztensben a felhasználó megkérdezi, hogy "visszatérési időszak?" → „mi a helyzet a törött termékkel?” A rendszer irreleváns részeket hozott a "törött termékhez". A kérdésfüggetlenség hozzáadásával ("Mennyi a hibás termék visszaküldési ideje?"), a helyes válaszok aránya 44%-ról 90%-ra nőtt.
3. eset – Duzzadt múlt. Az asszisztenssel folytatott 30 csevegés során minden hívás elküldte a teljes előzményt; A költségek körönként háromszorosára nőttek, és a válaszok lelassultak. Amikor áttértünk az utolsó 6 kört megtartó struktúrára, és összesítettük az előzőeket, a token költsége 62%-kal csökkent és a konzisztencia megmaradt.
Gyakori hibák
- Hatóság meghagyása a promptnak: A modell elfelejti/megkerüli; Az ACL szűrő kötelező a visszakereséskor.
- Nem sorolja fel a kontextust: A modell nem hivatkozhat a megfelelő forrásra.
- Nem függetlenítve az utókérdést: A visszakeresés értelmetlenül keres.
- Az összes előzmény elküldése vakon: Felrobban a költségek és a késedelem miatt; összefoglalni.
- Az ellentmondási szabály megírása: A modell a megbízhatatlan forrást hivatalosnak tüntetheti fel.
Összefoglalva
- A hozzáférés-szabályozás metaadatszűrővel valósul meg a visszakeresési szakaszban; Jogosulatlan alkatrészeket soha ne vigyen magával.
- Az identitást és a jogosultságot a megbízható alkalmazási réteg határozza meg; A gyors utasítás csak egy további védelmi réteg.
- A robusztus prompt sablon szerepkört, magatartási szabályokat (földelés, nem tudom az engedélyt, forrás, ütközés), számozott kontextust és kérdést tartalmaz.
- A többfordulós beszélgetés során az utókérdések szétválnak, és a modell következetes válaszokat ad a történelemmel.
- A hosszú történelem összegzésével a költség- és kontextusablak ellenőrzés alatt tartható; Az ACL-t minden körben újra alkalmazzák.
Pályázati feladat
(1) Határozzon meg legalább három jogosultsági csoportot a saját asszisztensének (pl. mindenki, osztály, vezető), és írja be egy táblázatba, hogy melyik dokumentumtípus melyik csoport számára nyitott. (2) Igazítsa és írja le a fenti felszólító sablont saját szerepének és hangnemének megfelelően; A szövegkörnyezet számozása és forrása legyen. (3) Írjon egy háromfordulós reális beszélgetési forgatókönyvet (kérdés → követés → nyomon követés), és manuálisan állítsa elő az egyes utókérdések független verzióit. (4) Magyarázza el egy mondatban, hogy ebben a forgatókönyvben miért kell az ACL szűrőt minden körben újra alkalmazni.
ellenőrző lista
- [ ] A hozzáférés-vezérlést visszakereső szűrővel valósítom meg, csak nem hagyatkozom a promptra.
- [ ] Földelést, nem ismerek engedélyt, forrást és ütközési szabályt adok hozzá a prompt sablonhoz.
- [ ] A szövegkörnyezeti részeket számozva és hivatkozva adom meg.
- [ ] Az utókérdéseket önállóvá teszem a visszakeresés előtt.
- [ ] A költséget és az ablakot a hosszú beszélgetéstörténet összegzésével kezelem.