zisky:
- Nastavte riadenie prístupu (ACL), ktoré filtruje vyhľadávanie na základe oprávnenia užívateľa
- Napísanie solídnej šablóny výzvy, ktorá správne umiestni kontext a otázku používateľa
- Precvičovanie nezávislosti otázok a správy histórie vo viackolových rozhovoroch
Založili sme architektúru; Teraz to urobme bezpečným, konzistentným a konverzačným. V tejto jednotke sú tri kritické témy: (1) riadenie prístupu, ktoré filtruje vyhľadávanie na základe oprávnenia používateľa, (2) robustná šablóna výzvy, ktorá správne umiestňuje kontext a otázku, (3) nezávislosť otázok a správa histórie konverzácií vo viackolovom chate. Bez týchto troch asistent buď unikne údaje, poskytne nekonzistentné odpovede alebo sa rozpadne na doplňujúce otázky.
Kontrola prístupu: Neautorizované údaje by nikdy nemali prísť
Najväčšie riziko podniku: Dokument, ktorý by používateľ nemal vidieť, preniká do odpovede. Veľmi častou chybou začiatočníkov je „povedzte modelke, aby na výzvu „zobrazila skryté dokumenty“. Toto nie je bezpečné. Model môže zabudnúť na pokyn alebo sa mu môže vyhnúť rýchle vstreknutie. Správnym miestom je fáza získavania: nepovolený kus by sa nemal vôbec vnášať.
Spôsob, ako to urobiť, je použiť metaúdaje autorít (oddelenie, rola, úroveň súkromia), ktoré ste vložili na každú časť ako filter počas vyhľadávania. Bezpečne určíte, kto je používateľ (identita a roly) na aplikačnej vrstve a do hovoru pridáte filter ACL (Access Control List).
# Filtrované podľa získavania oprávnení (koncepčné)používateľ = autentizovať(relácia) # overené z dôveryhodného zdroja = používateľ.role + ["každý"] # napr. ["HR", "admin"]výsledok = vektor_db.search( vektor=vložiť(otázka), top_k=20, filter={"skupina_povolení": {"in": povolené}, # iba povolené časti "privacy": {"lte": user.level}} # pod úrovňou)
Upozornenie: Nikdy nežiadajte model o oprávnenie ani sa nespoliehajte na výzvu. Identita a oprávnenie sú určené na dôveryhodnej vrstve aplikácie; Filter na vyhľadávanie je povinný, inštrukcia výzvy je len ďalšou vrstvou. „Napísal som to do výzvy“ nie je bezpečnosť.
Pevná výzva šablóna
Šablóna výzvy je kostra, ktorá spája kontext, otázku používateľa a pokyny na správanie z vyhľadávania. Časti dobrej šablóny: popis roly/úlohy, pravidlá správania (uzemnenie, povolenie neviem, požiadavka na zdroj, tón), kontext, otázka.
Ste korporátny HR asistent. Vašou úlohou je odpovedať na otázky zamestnancov LEN na základe nasledujúceho KONTEXTU. Pravidlá:- Ak odpoveď nie je jasne v kontexte, napíšte „Nenašiel som o tom informácie v dokumentácii, obráťte sa na tím HR“. Nehádajte, nevymýšľajte si.- Ak sú zdroje v kontexte v rozpore, berte oficiálnu politiku ako základ a uveďte rozpor.- Pridajte zdroj, na ktorý sa spoliehate, ako [Zdroj: súbor, sekcia] na koniec každého tvrdenia.- Odpovedzte krátkym, jasným a odborným jazykom. KONTEXT:{numbered_parts}OTÁZKA: {user_question}
Číslovanie častí kontextu ([1], [2], ...) uľahčuje citovanie modelu. Na začiatok každého dielu napíšte aj zdroj, aby ho model mohol správne citovať.
Tip: Udržujte šablónu výzvy konštantnú a vždy umiestňujte premenné (kontext, otázka) na rovnaké miesta. Pevná šablóna zvyšuje testovateľnosť a zároveň znižuje náklady vďaka rýchlemu ukladaniu do vyrovnávacej pamäte v niektorých systémoch.
KONTEXT:[1] (Zdroj: ik_el_kitabi.pdf, časť 5.2) Ročná platená dovolenka je 14 dní...[2] (Zdroj: ik_el_kitabi.pdf, časť 5.4) Dovolenka je 20 dní pre ľudí s odpracovanými viac ako 5 rokmi...
Slabá výzva / silná výzva
Slabé (žiadne uzemnenie, žiadny zdroj, zmiešaná identita):
Použite tieto dokumenty a odpovedzte na otázku: {parts}Používateľ: {question}# Problém: model vychádza z kontextu, vymýšľa si, necituje zdroje, # sa správa svojvoľne v rozpore.
Silné (rola + pravidlá + očíslovaný kontext + povinný zdroj):
Si... Stačí sa spoľahnúť na KONTEXT. V opačnom prípade povedzte „neviem“. V konflikte zvoľte oficiálnu politiku. Ku každému tvrdeniu pridajte [Zdroj: ...]. KONTEXT: [1]... [2]... OTÁZKA: {question# Výsledok: odpoveď, ktorá je verná kontextu, pochádza zo zdroja a správne rieši rozpor.
Správa konverzácie s viacerými prehliadkami
Skutočný používateľ nepoloží jedinú otázku a nechá ju tak; hovorí. "Koľko dní ročnej dovolenky mám?" → "A čo 6-ročný zamestnanec?" → "Ako o to požiadam?" Samotná druhá a tretia otázka sú nezmyselné; závisí od predchádzajúceho kontextu.
Musíte vyriešiť dva problémy. Prvá je na vyhľadávanie: urobte nasledujúcu otázku nezávislou (prepísanie otázky). "A čo ten 6-ročný zamestnanec?" → "Na koľko dní ročnej dovolenky má nárok zamestnanec vo veku 6 rokov?" Hľadáte pomocou tejto nezávislej otázky. Druhá je pre produkciu: modelu tiež dáte históriu konverzácie, aby pokračovala konzistentne.
# Dva kroky: nezávislé → vyhľadávanie → generovanie s históriou (koncepčné) nezávislé = model.uret( "Použite históriu konverzácie, aby bola otázka pochopiteľná sama osebe:\nHistória: {história}\nOtázka: {follow_question}") kontext = vyhľadávanie (nezávislé) # vyhľadávanie s nezávislou otázkouodpoveď = model.uret(výzva(kontext, história), história, sledovať
Ako história rastie (dlhá konverzácia), posielanie všetkých naraz sa stáva drahé a vypĺňa kontextové okno. Riešenie: zhrňte predchádzajúce kolá alebo si ponechajte posledných N kôl a predchádzajúce zredukujte na sumár. Náklady tak zostávajú pod kontrolou a zachováva sa konzistentnosť.
Stav
problém
Riešenie
Následná otázka nemá žiadny kontext
Vyhľadávanie nemá zmysel
Urobte otázku nezávislou (prepíšte)
dlhý rozhovor
Náklady a opuchy okien
Zhrnutie minulých túr
Používateľ zmenil tému
Starý kontext sa nakazí
Znížte minulý vplyv na novú tému
Autorita sa môže medzi zájazdmi líšiť
Riziko úniku
Opätovne použite filter ACL každé kolo
Tri mini puzdrá
Prípad 1 – „Bezpečnostný“ omyl s výzvou. Spoločnosť umiestnila na asistenta dôverné platové dokumenty, ktoré mohol požiadať ktokoľvek, ale na výzvu napísala iba „neposkytujte informácie o plate“. Model unikol platové rozpätie, keď používateľ položil otázku kruhovým objazdom. Keď sa do rešerše pridal ACL filter (platové časti len do roly HR), únik bol úplne uzavretý; pretože časť sa už nikdy nedonesie.
Prípad 2 – Bezkontextové prenasledovanie. V asistentovi podpory sa používateľ spýta "doba vrátenia?" → „A čo pokazený produkt?“ Systém priniesol nepodstatné časti pre „rozbitý produkt“. Keď bola pridaná nezávislosť otázky („Aká dlhá je lehota na vrátenie nefunkčného produktu?“), miera správnych odpovedí sa zvýšila zo 44 % na 90 %.
Prípad 3 – opuchnutá minulosť. V 30 kolách rozhovorov s asistentom každý hovor odoslal celú históriu; Náklady sa zvyšovali 3-krát za kolo a odpovede sa spomaľovali. Keď sme prešli na štruktúru, ktorá zachovala posledných 6 kôl a zhrnula predchádzajúce, cena tokenu klesla o 62 % a konzistencia bola zachovaná.
Časté chyby
- Ponechanie oprávnenia na výzvu: Model zabudne/vynechá; Filter ACL je povinný pri načítaní.
- Neuvádzanie kontextu: Model nemôže citovať správny zdroj.
- Nesamostatnosť nadväzujúcej otázky: Vyhľadávanie nezmyselne hľadá.
- Posielanie celej histórie naslepo: Exploduje v nákladoch a oneskorení; zhrnúť.
- Nepísanie pravidla protirečenia: Modelka môže prezentovať nedôveryhodný zdroj ako oficiálny.
V súhrne
- Kontrola prístupu je implementovaná pomocou filtra metadát počas fázy vyhľadávania; Nikdy neprinášajte nepovolené diely.
- Identita a oprávnenie sú určené na dôveryhodnej aplikačnej vrstve; Pohotový pokyn je len ďalšou vrstvou obrany.
- Robustná šablóna výzvy obsahuje rolu, pravidlá správania (uzemnenie, povolenie neviem, zdroj, konflikt), očíslovaný kontext a otázku.
- Vo viackolovej konverzácii sú doplňujúce otázky oddelené a model vytvára konzistentné odpovede s históriou.
- Zhrnutím dlhej histórie sa náklady a kontextové okno udržia pod kontrolou; ACL sa znovu aplikuje každé kolo.
Aplikačná úloha
(1) Definujte aspoň tri skupiny oprávnení pre svojho vlastného asistenta (napr. každý, oddelenie, manažér) a do tabuľky napíšte, ktorý typ dokumentu je pre ktorú skupinu otvorený. (2) Upravte a napíšte vyššie uvedenú šablónu výzvy podľa svojej vlastnej úlohy a tónu; Očíslujte kontext a vytvorte zdroj. (3) Napíšte trojkolový realistický scenár konverzácie (otázka → pokračovanie → sledovanie) a manuálne vytvorte nezávislé verzie každej doplňujúcej otázky. (4) Jednou vetou vysvetlite, prečo by sa v tomto scenári mal v každom kole znova použiť filter ACL.
kontrolný zoznam
- [ ] Implementujem riadenie prístupu pomocou filtra na vyhľadávanie, len sa nespolieham na výzvu.
- [ ] Do svojej promptnej šablóny pridávam uzemnenie, povolenie, zdroj a pravidlo konfliktu.
- [ ] Kontextové časti uvádzam očíslované a odkazované.
- [ ] Pred vyhľadaním robím doplňujúce otázky nezávislými.
- [ ] Spravujem náklady a okno zhrnutím dlhej histórie konverzácií.