Jednotka 6 / 11

Řízení přístupu, šablona výzvy a správa konverzace

zisky:

  • Nastavte řízení přístupu (ACL), které filtruje vyhledávání na základě oprávnění uživatele
  • Psaní solidní šablony výzvy, která správně umístí kontext a uživatelskou otázku
  • Procvičování nezávislosti na otázkách a řízení historie ve vícekolových konverzacích

Založili jsme architekturu; Nyní to udělejme bezpečným, konzistentním a konverzačním. V této jednotce jsou tři kritická témata: (1) řízení přístupu, které filtruje vyhledávání na základě oprávnění uživatele, (2) robustní šablona výzvy, která umísťuje kontext a otázku správně, (3) nezávislost otázek a správa historie konverzace ve vícekolovém chatu. Bez těchto tří asistent buď unikne data, poskytne nekonzistentní odpovědi nebo se rozpadne na následné otázky.

Řízení přístupu: Neautorizovaná data by nikdy neměla dorazit

Největší riziko podniku: Dokument, který by uživatel neměl vidět, uniká do odpovědi. Velmi častou začátečnickou chybou je „řeknout modelu, aby na výzvu ‚ukázal skryté dokumenty‘“. To není bezpečné. Model může zapomenout pokyn nebo se mu může vyhnout rychlá injekce. Správným místem je fáze vyzvednutí: nepovolený kus by se vůbec neměl vnášet.

Způsob, jak toho dosáhnout, je použít metadata oprávnění (oddělení, role, úroveň soukromí), která jste vložili na každou část jako filtr během vyhledávání. Bezpečně určíte, kdo je uživatel (identita a role) na aplikační vrstvě, a do volání přidáte filtr ACL (Access Control List).

# Filtrováno podle získání oprávnění (koncepční)uživatel = autentizovat (relace) # ověřeno z důvěryhodného zdroje = uživatel.role + ["všichni"] # např. ["HR", "admin"]výsledek = vektor_db.search( vektor=embed(otázka), top_k=20, filter={"skupina oprávnění": {"in": povoleno}, # pouze povolené části "privacy": {"lte": user.level}} # pod úrovní)

Upozornění: Nikdy nežádejte model o oprávnění ani se nespoléhejte na výzvu. Identita a oprávnění jsou určeny na důvěryhodné vrstvě aplikace; Filtr vyhledávání je povinný, instrukce výzvy je pouze další vrstvou. "Napsal jsem to do výzvy" není zabezpečení.

Solid Prompt Template

Šablona výzvy je kostra, která spojuje kontext, uživatelskou otázku a pokyny k chování z vyhledávání. Části dobré šablony: popis role/úkolu, pravidla chování (uzemnění, povolení nevím, požadavek na zdroj, tón), kontext, otázka.

Jste firemní HR asistent. Vaším úkolem je odpovídat na otázky zaměstnanců POUZE na základě následujícího KONTEXTU. Pravidla:- Pokud odpověď není jasně v kontextu, napište "Nenašel jsem o tom informace v dokumentaci, obraťte se na personální tým". Nehádejte, nevymýšlejte.- Pokud jsou zdroje v kontextu v rozporu, vezměte za základ oficiální politiku a uveďte rozpor.- Přidejte zdroj, o který se opíráte, jako [Zdroj: soubor, sekce] na konec každého tvrzení.- Odpovězte krátkým, jasným a odborným jazykem. KONTEXT:{numbered_parts}OTÁZKA: {user_question}

Číslování částí kontextu ([1], [2], ...) usnadňuje citování modelu. Na začátek každého dílu také napište zdroj, aby jej model mohl správně citovat.

Tip: Udržujte šablonu výzvy konstantní a vždy umístěte proměnné (kontext, otázka) na stejná místa. Pevná šablona zvyšuje testovatelnost a snižuje náklady díky rychlému ukládání do mezipaměti v některých systémech.

KONTEXT:[1] (Zdroj: ik_el_kitabi.pdf, oddíl 5.2) Roční placená dovolená je 14 dní...[2] (Zdroj: ik_el_kitabi.pdf, oddíl 5.4) Dovolená je 20 dní pro osoby s více než 5 lety služby...

Slabá výzva / Silná výzva

Slabé (žádné uzemnění, žádný zdroj, smíšená identita):

Použijte tyto dokumenty a odpovězte na otázku: {parts}Uživatel: {question}# Problém: model vybočuje z kontextu, vymýšlí si, necituje zdroje, # se chová svévolně v rozporu.

Silné (role + pravidla + očíslovaný kontext + povinný zdroj):

Jste... Stačí se spolehnout na KONTEXT. Jinak řekněte „nevím“. V konfliktu zvolte oficiální politiku. Ke každému tvrzení přidejte [Zdroj: ...]. KONTEXT: [1]... [2]... OTÁZKA: {question# Výsledek: odpověď, která je věrná kontextu, pochází ze zdroje a správně řeší rozpor.

Správa konverzace na více turné

Skutečný uživatel nepoloží jedinou otázku a nechá ji být; mluví. "Kolik dní dovolené za kalendářní rok mám?" → "A co ten 6letý zaměstnanec?" → "Jak o to mohu požádat?" Samotná druhá a třetí otázka jsou nesmyslné; závisí na předchozím kontextu.

Musíte vyřešit dva problémy. První je k vyhledání: udělejte z následné otázky nezávislou (přepisování otázky). "A co ten 6letý zaměstnanec?" → "Na kolik dní dovolené za kalendářní rok má zaměstnanec 6 let nárok?" Hledejte pomocí této nezávislé otázky. Druhý je pro produkci: modelu také předáte historii konverzace, aby pokračovala konzistentně.

# Dva kroky: nezávislé → hledání → generování s historií (koncepční) nezávislé = model.uret( "Použijte historii konverzace, aby byla otázka srozumitelná sama o sobě:\nHistorie: {historie}\nOtázka: {follow_question}") kontext = načtení(nezávislé) # hledání s nezávislou otázkouodpověď = model.uret(výzva(kontext, historie)

Jak historie roste (dlouhá konverzace), odesílání všech najednou se prodražuje a zaplňuje kontextové okno. Řešení: shrňte předchozí kola nebo si ponechte posledních N kol a předchozí zredukujte na souhrn. Náklady tak zůstávají pod kontrolou a je zachována konzistence.

Stav

problém

Řešení

Následná otázka nemá žádný kontext

Vyhledávání nemá smysl

Udělejte otázku nezávislou (přepište)

dlouhý chat

Náklady a bobtnání oken

Shrnutí minulých zájezdů

Uživatel změnil téma

Starý kontext se nakazí

Snížit minulý vliv na nové téma

Autorita se může u jednotlivých zájezdů lišit

Nebezpečí úniku

Znovu aplikujte ACL filtr každé kolo

Tři mini pouzdra

Případ 1 – „Bezpečnostní“ omyl s výzvou. Společnost umístila na asistenta důvěrné platové dokumenty, na které se mohl kdokoli zeptat, ale na výzvu pouze napsala „neposkytujte informace o platu“. Model prozradil rozsah platů, když uživatel položil otázku kruhovým objezdem. Když byl do vyhledávání přidán filtr ACL (platové části pouze do role HR), únik byl zcela uzavřen; protože díl už nikdy nepřinese.

Případ 2 – Bezkontextové pronásledování. V asistentovi podpory se uživatel zeptá "doba vrácení?" → "A co rozbitý produkt?" Systém přinesl nepodstatné díly pro „rozbitý produkt“. Když byla přidána nezávislost na otázce („Jak dlouhá je lhůta pro vrácení rozbitého produktu?“), zvýšila se míra správných odpovědí ze 44 % na 90 %.

Případ 3 – Oteklá minulost. Ve 30 kolech chatů s asistentem poslal každý hovor celou historii; Cena se zvyšovala třikrát za kolo a odezvy se zpomalovaly. Když jsme přešli na strukturu, která zachovala posledních 6 kol a shrnula ta předchozí, cena tokenu klesla o 62 % a konzistence zůstala zachována.

Časté chyby

  • Ponechání oprávnění na výzvu: Model zapomíná/obchází; Filtr ACL je při načítání povinný.
  • Neuvádí se kontext: Model nemůže citovat správný zdroj.
  • Nesamostatnost navazující otázky: Vyhledávání hledá nesmyslně.
  • Odeslání celé historie naslepo: Exploduje v nákladech a zpoždění; shrnout.
  • Nepsání pravidla rozporu: Modelka může prezentovat nespolehlivý zdroj jako oficiální.

V souhrnu

  • Řízení přístupu je implementováno pomocí filtru metadat během fáze vyhledávání; Nikdy nepřinášejte neautorizované díly.
  • Identita a oprávnění jsou určeny na úrovni důvěryhodné aplikace; Pohotový pokyn je jen další vrstvou obrany.
  • Robustní šablona výzvy obsahuje roli, pravidla chování (uzemnění, povolení nevím, zdroj, konflikt), očíslovaný kontext a otázku.
  • Ve vícekolové konverzaci jsou následné otázky odděleny a model vytváří konzistentní odpovědi s historií.
  • Shrnutím dlouhé historie je nákladové a kontextové okno udržováno pod kontrolou; ACL se znovu aplikuje každé kolo.

Aplikační úkol

(1) Definujte alespoň tři skupiny oprávnění pro svého vlastního asistenta (např. všichni, oddělení, vedoucí) a zapište si do tabulky, který typ dokumentu je pro kterou skupinu otevřen. (2) Upravte a napište výše uvedenou šablonu výzvy podle své vlastní role a tónu; Očíslujte kontext a vytvořte zdroj. (3) Napište tříkolový realistický scénář konverzace (otázka → sledování → sledování) a ručně vygenerujte nezávislé verze každé následné otázky. (4) Jednou větou vysvětlete, proč by měl být v tomto scénáři v každém kole znovu použit filtr ACL.

kontrolní seznam

  • [ ] Implementuji řízení přístupu s filtrem vyhledávání, jen se nespoléhám na výzvu.
  • [ ] Do své promptní šablony přidávám uzemnění, povolení, zdroj a konfliktní pravidlo.
  • [ ] Kontextové části uvádím očíslované a odkazované.
  • [ ] Následné otázky před vyhledáním osamostatním.
  • [ ] Náklady a okno spravuji shrnutím dlouhé historie konverzace.