Yunit 6 / 11

Access Control, Prompt Template at Pamamahala ng Pag-uusap

Mga nadagdag:

  • I-set up ang access control (ACL) na nagpi-filter ng pagkuha batay sa awtoridad ng user
  • Pagsusulat ng solidong template ng prompt na naglalagay ng konteksto at tanong ng user nang tama
  • Pagsasanay sa pagsasarili ng tanong at pamamahala sa kasaysayan sa maraming pag-uusap

Itinatag namin ang arkitektura; Ngayon gawin natin itong ligtas, pare-pareho at mapag-usapan. May tatlong kritikal na paksa sa unit na ito: (1) access control na nagpi-filter ng pagkuha batay sa awtoridad ng user, (2) isang matatag na prompt na template na naglalagay ng konteksto at tanong nang tama, (3) tanong ng pagsasarili at pamamahala ng kasaysayan ng pag-uusap sa multi-round chat. Kung wala ang tatlong ito, ang isang katulong ay maaaring mag-leak ng data, magbibigay ng hindi pantay-pantay na mga sagot, o magkakahiwalay sa mga follow-up na tanong.

Access Control: Hindi Dapat Dumating ang Hindi Pinahihintulutang Data

Pinakamalaking panganib sa negosyo: Ang isang dokumento na hindi dapat makita ng isang user ay tumutulo sa tugon. Ang isang napakakaraniwang pagkakamali ng baguhan ay ang "sabihin sa modelo na 'ipakita ang mga nakatagong dokumento' sa prompt." Ito ay hindi ligtas. Maaaring makalimutan ng modelo ang isang pagtuturo o maaaring maiwasan ito ng isang maagang pag-iniksyon. Ang tamang lugar ay ang retrieval phase: ang hindi awtorisadong piraso ay hindi dapat dalhin sa lahat.

Ang paraan para gawin ito ay ilapat ang metadata ng awtoridad (kagawaran, tungkulin, antas ng privacy) na inilagay mo sa bawat bahagi bilang filter sa panahon ng paghahanap. Ligtas mong matukoy kung sino ang user (pagkakakilanlan at mga tungkulin) sa layer ng application at magdagdag ng filter ng ACL (Access Control List) sa tawag.

# Na-filter ayon sa pagkuha ng awtoridad (conceptual)user = authenticate(session) # authenticated from trusted source = user.roles + ["everyone"] # e.g. ["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)

Babala: Huwag kailanman humingi ng awtoridad sa modelo o umasa sa prompt. Ang pagkakakilanlan at awtoridad ay tinutukoy sa pinagkakatiwalaang layer ng aplikasyon; Ang retrieval filter ay sapilitan, ang prompt na pagtuturo ay isang karagdagang layer lamang. "Isinulat ko ito sa prompt" ay hindi seguridad.

Solid Prompt Template

Ang prompt na template ay ang balangkas na pinagsasama-sama ang konteksto, tanong ng user, at mga tagubilin sa pag-uugali mula sa pagkuha. Mga bahagi ng isang magandang template: paglalarawan ng tungkulin/gawain, mga tuntunin ng pag-uugali (pagbabatay, hindi ko alam ang pahintulot, kahilingan sa mapagkukunan, tono), konteksto, tanong.

Isa kang corporate HR assistant. Ang iyong trabaho ay sagutin ang mga tanong ng empleyado LAMANG batay sa sumusunod na KONTEKSTO. Mga Panuntunan:- Kung ang sagot ay hindi malinaw sa konteksto, isulat ang "Hindi ko mahanap ang impormasyon tungkol dito sa dokumentasyon, suriin sa HR team". Huwag hulaan, huwag gumawa.- Kung magkasalungat ang mga source sa konteksto, kunin ang opisyal na patakaran bilang batayan at sabihin ang kontradiksyon.- Idagdag ang source na iyong pinagkakatiwalaan bilang [Source: file, section] sa dulo ng bawat claim.- Sagutin sa isang maikli, malinaw at propesyonal na wika. CONTEXT:{numbered_parts}TANONG: {user_question}

Ang paglalagay ng numero sa mga bahagi ng konteksto ([1], [2], ...) ay nagpapadali sa pagbanggit sa modelo. Gayundin, isulat ang pinagmulan sa simula ng bawat piraso upang mabanggit ito nang tama ng modelo.

Tip: Panatilihing pare-pareho ang prompt na template at palaging maglagay ng mga variable (konteksto, tanong) sa parehong mga lugar. Ang isang nakapirming template ay parehong nagpapataas ng pagiging masusubok at nakakabawas ng mga gastos salamat sa maagang pag-cache sa ilang mga system.

CONTEXT:[1] (Source: ik_el_kitabi.pdf, Section 5.2) Ang taunang bayad na bakasyon ay 14 na araw...[2] (Pinagmulan: ik_el_kitabi.pdf, Seksyon 5.4) Ang bakasyon ay 20 araw para sa mga taong may higit sa 5 taon ng serbisyo...

Mahina Prompt / Malakas na Prompt

Mahina (walang batayan, walang pinagmulan, pinaghalong pagkakakilanlan):

Gamitin ang mga dokumentong ito at sagutin ang tanong: {parts}User: {question}# Problema: ang modelo ay lumalabas sa konteksto, bumubuo, hindi nagbabanggit ng mga pinagmulan, # kumikilos nang di-makatwiran sa kontradiksyon.

Malakas (role + rules + numbered context + source mandatory):

Ikaw... Umasa ka lang sa CONTEXT. Kung hindi, sabihin ang "Hindi ko alam". Sa kontrahan, pumili ng opisyal na patakaran. Idagdag ang [Source: ...] sa bawat claim.KONTEKSTO: [1]... [2]... TANONG: {question}# Resulta: sagot na tapat sa konteksto, pinanggalingan, at pinangangasiwaan ng tama ang kontradiksyon.

Pamamahala ng Multi-Tour na Pag-uusap

Ang isang tunay na gumagamit ay hindi nagtatanong ng isang tanong at iwanan ito nang mag-isa; nagsasalita. "Ilang araw ang annual leave ko?" → "Paano ang 6 na taong empleyado?" → “Paano ako mag-a-apply para dito?” Ang pangalawa at pangatlong tanong lamang ay walang kabuluhan; depende sa dating konteksto.

Kailangan mong lutasin ang dalawang problema. Ang una ay para sa retrieval: gawing independent ang follow-up na tanong (question rewriting). "Paano ang 6 na taong empleyado?" → "Ilang araw ng taunang bakasyon ang karapat-dapat sa isang empleyado ng 6 na taon?" Maghanap ka gamit ang malayang tanong na ito. Ang pangalawa ay para sa produksyon: binibigyan mo rin ang kasaysayan ng pag-uusap sa modelo upang magpatuloy ito nang tuluy-tuloy.

# Two-step: independentize → search → generate with history (conceptual) independent = model.uret( "Gamitin ang history ng pag-uusap para maintindihan ang tanong sa sarili nitong:\nHistory: {history}\nQuestion: {follow_question}") context = retrieval(independent) # search with independent questionanswer = model.uret(prompt(context) history

Habang lumalaki ang kasaysayan (mahabang pag-uusap), ang pagpapadala ng lahat ng ito sa isang pagkakataon ay nagiging mahal at pumupuno sa window ng konteksto. Solusyon: ibuod ang mga nakaraang round o panatilihin ang huling N round at bawasan ang mga nakaraang round sa buod. Kaya, ang mga gastos ay nananatiling nasa ilalim ng kontrol at ang pagkakapare-pareho ay pinananatili.

Katayuan

problema

Solusyon

Ang follow-up na tanong ay walang konteksto

Ang mga paghahanap sa pagkuha ay walang kahulugan

Gawing independent ang tanong (rewrite)

mahabang chat

Ang gastos at ang mga bintana ay lumubog

Buod ng mga nakaraang paglilibot

Binago ng user ang paksa

Ang lumang konteksto ay nahahawa

Bawasan ang nakaraang impluwensya sa bagong paksa

Maaaring mag-iba ang awtoridad sa pagitan ng mga paglilibot

Panganib ng pagtagas

Ilapat muli ang ACL filter bawat round

Tatlong Mini Case

Case 1 — "Security" fallacy na may prompt. Ang isang kumpanya ay naglalagay ng mga kumpidensyal na dokumento ng suweldo sa isang katulong na maaaring itanong ng sinuman, ngunit sumulat lamang ng "huwag magbigay ng impormasyon sa suweldo" sa prompt. Ang modelo ay nag-leak ng hanay ng suweldo kapag ang isang gumagamit ay nagtanong sa isang paikot-ikot na paraan. Kapag ang filter ng ACL ay idinagdag sa pagkuha (mga bahagi ng suweldo lamang sa papel ng HR), ang pagtagas ay ganap na sarado; dahil hindi na dinadala ang bahagi.

Kaso 2 — Walang konteksto na pag-stalk. Sa isang support assistant, itatanong ng user ang "panahon ng pagbalik?" → “kumusta naman ang sirang produkto?” Ang sistema ay nagdala ng mga hindi nauugnay na bahagi para sa "sirang produkto". Nang idinagdag ang pagsasarili ng tanong ("Gaano katagal ang panahon ng pagbabalik para sa isang sirang produkto?"), tumaas ang tamang rate ng sagot mula 44% hanggang 90%.

Kaso 3 — Namamagang nakaraan. Sa 30 round ng mga pakikipag-chat sa isang katulong, ipinadala ng bawat tawag ang buong kasaysayan; Tumataas ang gastos nang 3 beses bawat pag-ikot, at bumabagal ang mga tugon. Nang lumipat kami sa isang istraktura na nagpapanatili sa huling 6 na pag-ikot at nagbubuod sa mga nauna, ang halaga ng token ay bumaba ng 62% at napanatili ang pagkakapare-pareho.

Mga karaniwang pagkakamali

  • Pag-iiwan ng awtoridad sa prompt: Model forgets/bypasses; Ang ACL filter ay sapilitan sa pagkuha.
  • Hindi binibilang ang konteksto: Hindi mabanggit ng modelo ang tamang pinagmulan.
  • Hindi independiyente ang follow-up na tanong: Ang pagkuha ng paghahanap ay walang kabuluhan.
  • Pagpapadala sa lahat ng history blind: Sumasabog sa gastos at pagkaantala; buod.
  • Hindi isinusulat ang panuntunan ng kontradiksyon: Maaaring ipakita ng modelo ang hindi mapagkakatiwalaang source bilang opisyal.

Sa buod

  • Ang kontrol sa pag-access ay ipinatupad gamit ang isang metadata filter sa panahon ng yugto ng pagkuha; Hindi dapat dalhin ang mga hindi awtorisadong bahagi.
  • Ang pagkakakilanlan at awtoridad ay tinutukoy sa pinagkakatiwalaang layer ng aplikasyon; Ang mabilis na pagtuturo ay isang karagdagang layer ng depensa.
  • Kasama sa matatag na template ng prompt ang tungkulin, mga panuntunan ng pag-uugali (pagbabatay, hindi alam na pahintulot, pinagmulan, salungatan), may bilang na konteksto, at tanong.
  • Sa multi-round na pag-uusap, ang mga follow-up na tanong ay pinaghiwalay at ang modelo ay gumagawa ng mga pare-parehong sagot sa kasaysayan.
  • Sa pamamagitan ng pagbubuod ng mahabang kasaysayan, pinananatiling kontrolado ang window ng gastos at konteksto; Ang ACL ay muling inilalapat bawat round.

Gawain ng aplikasyon

(1) Tukuyin ang hindi bababa sa tatlong grupo ng awtorisasyon para sa iyong sariling katulong (hal. lahat, departamento, manager) at isulat sa isang talahanayan kung aling uri ng dokumento ang bukas para sa aling grupo. (2) Iangkop at isulat ang prompt na template sa itaas ayon sa iyong sariling tungkulin at tono; Gawing may bilang at pinagmulan ang konteksto. (3) Sumulat ng three-round realistic na senaryo ng pag-uusap (tanong → follow-up → follow-up) at manu-manong bumuo ng mga independiyenteng bersyon ng bawat follow-up na tanong. (4) Ipaliwanag sa isang pangungusap kung bakit dapat muling ilapat ang ACL filter sa bawat round sa sitwasyong ito.

checklist

  • [ ] Ipinapatupad ko ang kontrol sa pag-access gamit ang isang retrieval filter, hindi lang ako umaasa sa prompt.
  • [ ] Nagdaragdag ako ng saligan, hindi ko alam ang pahintulot, pinagmulan at panuntunan ng salungatan sa aking prompt na template.
  • [ ] Ibinibigay ko ang mga bahagi ng konteksto na may numero at naka-reference.
  • [ ] Ginagawa kong independyente ang mga follow-up na tanong bago kunin.
  • [ ] Pinamamahalaan ko ang gastos at window sa pamamagitan ng pagbubuod sa mahabang kasaysayan ng pag-uusap.