એકમ 6 / 11

એક્સેસ કંટ્રોલ, પ્રોમ્પ્ટ ટેમ્પલેટ અને વાતચીત મેનેજમેન્ટ

નફો:

  • એક્સેસ કંટ્રોલ (ACL) સેટ કરો જે વપરાશકર્તા સત્તાના આધારે પુનઃપ્રાપ્તિને ફિલ્ટર કરે છે
  • એક નક્કર પ્રોમ્પ્ટ ટેમ્પલેટ લખવું જે સંદર્ભ અને વપરાશકર્તા પ્રશ્નને યોગ્ય રીતે મૂકે છે
  • મલ્ટિ-રાઉન્ડ વાર્તાલાપમાં પ્રશ્ન સ્વતંત્રતા અને ઇતિહાસ સંચાલનનો અભ્યાસ કરવો

અમે આર્કિટેક્ચરની સ્થાપના કરી; હવે ચાલો તેને સુરક્ષિત, સુસંગત અને વાતચીત કરીએ. આ એકમમાં ત્રણ નિર્ણાયક વિષયો છે: (1) વપરાશ નિયંત્રણ જે વપરાશકર્તાની સત્તાના આધારે પુનઃપ્રાપ્તિને ફિલ્ટર કરે છે, (2) એક મજબૂત પ્રોમ્પ્ટ ટેમ્પલેટ જે સંદર્ભ અને પ્રશ્નને યોગ્ય રીતે મૂકે છે, (3) મલ્ટિ-રાઉન્ડ ચેટમાં પ્રશ્ન સ્વતંત્રતા અને વાર્તાલાપ ઇતિહાસનું સંચાલન. આ ત્રણ વિના, સહાયક કાં તો ડેટા લીક કરશે, અસંગત જવાબો આપશે અથવા ફોલો-અપ પ્રશ્નોમાં અલગ પડી જશે.

ઍક્સેસ નિયંત્રણ: અનધિકૃત ડેટા ક્યારેય આવવો જોઈએ નહીં

એન્ટરપ્રાઇઝ સૌથી મોટું જોખમ: એક દસ્તાવેજ કે જે વપરાશકર્તાને પ્રતિસાદમાં લીક જોવા ન જોઈએ. શિખાઉ માણસની ખૂબ જ સામાન્ય ભૂલ એ છે કે "મોડલને પ્રોમ્પ્ટ પર 'છુપાયેલા દસ્તાવેજો બતાવવા' જણાવો." આ સલામત નથી. મોડેલ સૂચના ભૂલી શકે છે અથવા પ્રોમ્પ્ટ ઇન્જેક્શન તેને ટાળી શકે છે. યોગ્ય સ્થાન એ પુનઃપ્રાપ્તિનો તબક્કો છે: અનધિકૃત ભાગ બિલકુલ લાવવો જોઈએ નહીં.

આ કરવાની રીત એ છે કે તમે શોધ દરમિયાન ફિલ્ટર તરીકે દરેક ભાગ પર મૂકેલા ઓથોરિટી મેટાડેટા (વિભાગ, ભૂમિકા, ગોપનીયતા સ્તર) લાગુ કરો. તમે એપ્લીકેશન લેયર પર વપરાશકર્તા કોણ છે (ઓળખ અને ભૂમિકાઓ) સુરક્ષિત રીતે નક્કી કરો છો અને કૉલમાં ACL (એક્સેસ કંટ્રોલ લિસ્ટ) ફિલ્ટર ઉમેરો છો.

# અધિકૃત પુનઃપ્રાપ્તિ દ્વારા ફિલ્ટર કરેલ (વૈકલ્પિક) વપરાશકર્તા = પ્રમાણીકરણ(સત્ર) # વિશ્વસનીય સ્રોતથી પ્રમાણિત = user.roles + ["દરેક"] # દા.ત. ["HR", "admin"]પરિણામ = vektor_db.search( vektor=embed( question), top_k=20, filter={"permission_group": {"in": મંજૂર}, # ફક્ત મંજૂર ભાગો "ગોપનીયતા": {"lte": user.level}} # સ્તરની નીચે)

સાવધાન: મોડેલને ક્યારેય સત્તા માટે પૂછશો નહીં અથવા પ્રોમ્પ્ટ પર આધાર રાખશો નહીં. એપ્લિકેશનના વિશ્વસનીય સ્તર પર ઓળખ અને સત્તા નક્કી કરવામાં આવે છે; પુનઃપ્રાપ્તિ ફિલ્ટર ફરજિયાત છે, પ્રોમ્પ્ટ સૂચના માત્ર એક વધારાનું સ્તર છે. "મેં તેને પ્રોમ્પ્ટમાં લખ્યું છે" એ સુરક્ષા નથી.

સોલિડ પ્રોમ્પ્ટ ટેમ્પલેટ

પ્રોમ્પ્ટ ટેમ્પલેટ એ હાડપિંજર છે જે પુનઃપ્રાપ્તિમાંથી સંદર્ભ, વપરાશકર્તા પ્રશ્ન અને વર્તન સૂચનાઓને એકસાથે લાવે છે. સારા નમૂનાના ભાગો: ભૂમિકા/કાર્યનું વર્ણન, આચારના નિયમો (ગ્રાઉન્ડિંગ, મને પરવાનગી ખબર નથી, સંસાધન વિનંતી, સ્વર), સંદર્ભ, પ્રશ્ન.

તમે કોર્પોરેટ એચઆર સહાયક છો. તમારું કાર્ય ફક્ત નીચેના સંદર્ભના આધારે કર્મચારીના પ્રશ્નોના જવાબ આપવાનું છે. નિયમો:- જો જવાબ સ્પષ્ટ રીતે સંદર્ભમાં ન હોય તો "મને દસ્તાવેજીકરણમાં આ અંગેની માહિતી મળી નથી, HR ટીમ સાથે તપાસ કરો" લખો. અનુમાન લગાવશો નહીં, બનાવશો નહીં.- જો સંદર્ભમાં સ્ત્રોતો વિરોધાભાસી હોય, તો સત્તાવાર નીતિને આધાર તરીકે લો અને વિરોધાભાસ જણાવો.- દરેક દાવાના અંતે તમે [સ્ત્રોત: ફાઇલ, વિભાગ] તરીકે આધાર રાખતા સ્ત્રોતને ઉમેરો.- ટૂંકી, સ્પષ્ટ અને વ્યાવસાયિક ભાષામાં જવાબ આપો. સંદર્ભ:{numbered_parts}પ્રશ્ન: {user_question}

સંદર્ભ ભાગો ([1], [2], ...) ને નંબર આપવાથી મોડેલ ટાંકવાનું સરળ બને છે. ઉપરાંત, દરેક ભાગની શરૂઆતમાં સ્ત્રોત લખો જેથી મોડેલ તેને યોગ્ય રીતે ટાંકી શકે.

ટીપ: પ્રોમ્પ્ટ ટેમ્પલેટને સતત રાખો અને હંમેશા એ જ જગ્યાએ ચલો (સંદર્ભ, પ્રશ્ન) મૂકો. નિશ્ચિત નમૂનો ટેસ્ટીબિલિટીમાં વધારો કરે છે અને કેટલીક સિસ્ટમ્સમાં પ્રોમ્પ્ટ કેશીંગને કારણે ખર્ચ ઘટાડે છે.

સંદર્ભ:[1] (સ્રોત: ik_el_kitabi.pdf, વિભાગ 5.2) વાર્ષિક પેઇડ રજા 14 દિવસ છે...[2] (સ્ત્રોત: ik_el_kitabi.pdf, વિભાગ 5.4) 5 વર્ષથી વધુ સેવા ધરાવતા લોકો માટે રજા 20 દિવસની છે...

નબળા પ્રોમ્પ્ટ / મજબૂત પ્રોમ્પ્ટ

નબળું (કોઈ ગ્રાઉન્ડિંગ નથી, કોઈ સ્ત્રોત નથી, ઓળખ મિશ્રિત):

આ દસ્તાવેજોનો ઉપયોગ કરો અને પ્રશ્નનો જવાબ આપો: {parts}વપરાશકર્તા: {પ્રશ્ન}# સમસ્યા: મોડેલ સંદર્ભની બહાર જાય છે, બનાવે છે, સ્ત્રોતો ટાંકતા નથી, # વિરોધાભાસમાં મનસ્વી રીતે વર્તે છે.

મજબૂત (ભૂમિકા + નિયમો + ક્રમાંકિત સંદર્ભ + સ્ત્રોત ફરજિયાત):

તમે છો... ફક્ત CONTEXT પર આધાર રાખો. નહિંતર, "મને ખબર નથી" કહો. સંઘર્ષમાં, સત્તાવાર નીતિ પસંદ કરો. દરેક દાવા માટે [સ્ત્રોત: ...] ઉમેરો. સંદર્ભ: [1]... [2]... પ્રશ્ન: {પ્રશ્ન}# પરિણામ: જવાબ જે સંદર્ભને વફાદાર છે, સ્ત્રોત છે અને વિરોધાભાસને યોગ્ય રીતે સંચાલિત કરે છે.

મલ્ટી-ટૂર વાર્તાલાપ વ્યવસ્થાપન

એક વાસ્તવિક વપરાશકર્તા એક પ્રશ્ન પૂછતો નથી અને તેને એકલા છોડી દે છે; બોલે છે. "મારે કેટલા દિવસની વાર્ષિક રજા છે?" → "6-વર્ષના કર્મચારી વિશે શું?" → "હું તેના માટે કેવી રીતે અરજી કરી શકું?" એકલા બીજા અને ત્રીજા પ્રશ્નો અર્થહીન છે; અગાઉના સંદર્ભ પર આધાર રાખે છે.

તમારે બે સમસ્યાઓ હલ કરવાની જરૂર છે. પ્રથમ પુનઃપ્રાપ્તિ માટે છે: ફોલો-અપ પ્રશ્નને સ્વતંત્ર બનાવો (પ્રશ્ન પુનઃલેખન). "6 વર્ષના કર્મચારી વિશે શું?" → "6 વર્ષનો કર્મચારી કેટલા દિવસની વાર્ષિક રજા માટે હકદાર છે?" તમે આ સ્વતંત્ર પ્રશ્ન સાથે શોધો. બીજું ઉત્પાદન માટે છે: તમે મોડેલને વાતચીતનો ઇતિહાસ પણ આપો જેથી તે સતત ચાલુ રહે.

# બે-પગલાં: સ્વતંત્ર કરો → શોધ → ઇતિહાસ સાથે જનરેટ કરો (વૈકલ્પિક) સ્વતંત્ર = model.uret("પ્રશ્નને તેના પોતાના પર સમજી શકાય તે માટે વાતચીત ઇતિહાસનો ઉપયોગ કરો:\nઇતિહાસ: {ઇતિહાસ}\nપ્રશ્ન: {અનુસરો_પ્રશ્ન}") સંદર્ભ = પુનઃપ્રાપ્તિ(સ્વતંત્ર) # સ્વતંત્ર પ્રશ્ન જવાબ સાથે શોધ (સંદર્ભ_ઇતિહાસ = મોડલ, ફોલો.

જેમ જેમ ઈતિહાસ વધે છે (લાંબી વાર્તાલાપ), એક સમયે તે બધું મોકલવું મોંઘું બની જાય છે અને સંદર્ભ વિન્ડો ભરે છે. ઉકેલ: પાછલા રાઉન્ડનો સારાંશ આપો અથવા છેલ્લા N રાઉન્ડ રાખો અને પહેલાના રાઉન્ડને સારાંશમાં ઘટાડી દો. આમ, ખર્ચ નિયંત્રણમાં રહે છે અને સાતત્ય જળવાય છે.

સ્થિતિ

સમસ્યા

ઉકેલ

ફોલો-અપ પ્રશ્નનો કોઈ સંદર્ભ નથી

પુનઃપ્રાપ્તિ અર્થહીન શોધ

પ્રશ્નને સ્વતંત્ર બનાવો (ફરીથી લખો)

લાંબી ચેટ

ખર્ચ અને વિન્ડો swells

ભૂતકાળના પ્રવાસોનો સારાંશ

વપરાશકર્તાએ વિષય બદલ્યો

જૂના સંદર્ભનો ચેપ લાગે છે

નવા વિષય પર ભૂતકાળનો પ્રભાવ ઓછો કરો

પ્રવાસો વચ્ચે સત્તા બદલાઈ શકે છે

લિકેજનું જોખમ

ACL ફિલ્ટરને દરેક રાઉન્ડમાં ફરીથી લાગુ કરો

ત્રણ મિની કેસ

કેસ 1 - પ્રોમ્પ્ટ સાથે "સુરક્ષા" ભ્રમણા. એક કંપનીએ સહાયક પર ગોપનીય પગાર દસ્તાવેજો મૂક્યા જે કોઈ પણ પૂછી શકે, પરંતુ પ્રોમ્પ્ટ પર ફક્ત "પગારની માહિતી આપશો નહીં" લખ્યું. જ્યારે એક યુઝરે રાઉન્ડ અબાઉટ રીતે પ્રશ્ન પૂછ્યો ત્યારે મોડેલે પગારની શ્રેણી લીક કરી. જ્યારે ACL ફિલ્ટરને પુનઃપ્રાપ્તિમાં ઉમેરવામાં આવ્યું હતું (માત્ર HR ભૂમિકા માટે પગારના ભાગો), લીક સંપૂર્ણપણે બંધ થઈ ગયું હતું; કારણ કે ભાગ હવે ક્યારેય લાવવામાં આવતો નથી.

કેસ 2 - સંદર્ભહીન પીછો. સહાયક સહાયકમાં, વપરાશકર્તા પૂછે છે "રીટર્ન પીરિયડ?" → "તૂટેલા ઉત્પાદન વિશે શું?" સિસ્ટમ "તૂટેલા ઉત્પાદન" માટે અપ્રસ્તુત ભાગો લાવી હતી. જ્યારે પ્રશ્નની સ્વતંત્રતા ઉમેરવામાં આવી ("તૂટેલા ઉત્પાદન માટે વળતરનો સમયગાળો કેટલો સમય છે?"), સાચા જવાબનો દર 44% થી વધીને 90% થયો.

કેસ 3 - ભૂતકાળમાં સોજો. સહાયક સાથે ચેટના 30 રાઉન્ડમાં, દરેક કૉલે સમગ્ર ઇતિહાસ મોકલ્યો; ખર્ચ પ્રતિ રાઉન્ડમાં 3 ગણો વધી રહ્યો હતો, અને પ્રતિસાદો ધીમો પડી રહ્યો હતો. જ્યારે અમે છેલ્લા 6 રાઉન્ડ રાખતા અને પાછલા રાઉન્ડનો સારાંશ આપતાં સ્ટ્રક્ચર પર સ્વિચ કર્યું, ત્યારે ટોકન ખર્ચમાં 62% ઘટાડો થયો અને સુસંગતતા જાળવી રાખવામાં આવી.

સામાન્ય ભૂલો

  • પ્રોમ્પ્ટ પર સત્તા છોડવી: મોડેલ ભૂલી જાય છે/બાયપાસ થાય છે; પુનઃપ્રાપ્તિ પર ACL ફિલ્ટર ફરજિયાત છે.
  • સંદર્ભની ગણતરી કરતા નથી: મોડેલ સાચા સ્ત્રોતને ટાંકી શકતું નથી.
  • ફોલો-અપ પ્રશ્નને સ્વતંત્ર બનાવતા નથી: પુનઃપ્રાપ્તિ અર્થહીન શોધ કરે છે.
  • બધા ઇતિહાસને અંધ મોકલી રહ્યું છે: ખર્ચ અને વિલંબમાં વિસ્ફોટ; સારાંશ
  • વિરોધાભાસ નિયમ લખતો નથી: મોડેલ અવિશ્વસનીય સ્ત્રોતને સત્તાવાર તરીકે રજૂ કરી શકે છે.

સારાંશમાં

  • પુનઃપ્રાપ્તિના તબક્કા દરમિયાન મેટાડેટા ફિલ્ટર સાથે એક્સેસ કંટ્રોલ લાગુ કરવામાં આવે છે; અનધિકૃત ભાગો ક્યારેય ન લાવવા જોઈએ.
  • વિશ્વસનીય એપ્લિકેશન સ્તર પર ઓળખ અને સત્તા નક્કી કરવામાં આવે છે; પ્રોમ્પ્ટ સૂચના એ સંરક્ષણનું એક વધારાનું સ્તર છે.
  • મજબૂત પ્રોમ્પ્ટ ટેમ્પ્લેટમાં ભૂમિકા, આચારના નિયમો (ગ્રાઉન્ડિંગ, પરવાનગી ખબર નથી, સ્ત્રોત, સંઘર્ષ), ક્રમાંકિત સંદર્ભ અને પ્રશ્નનો સમાવેશ થાય છે.
  • મલ્ટિ-રાઉન્ડ વાર્તાલાપમાં, ફોલો-અપ પ્રશ્નોને અલગ કરવામાં આવે છે અને મોડેલ ઇતિહાસ સાથે સુસંગત જવાબો આપે છે.
  • લાંબા ઇતિહાસનો સારાંશ આપીને, ખર્ચ અને સંદર્ભ વિન્ડોને નિયંત્રણમાં રાખવામાં આવે છે; ACL દરેક રાઉન્ડમાં ફરીથી લાગુ કરવામાં આવે છે.

એપ્લિકેશન કાર્ય

(1) તમારા પોતાના સહાયક માટે ઓછામાં ઓછા ત્રણ અધિકૃત જૂથો વ્યાખ્યાયિત કરો (દા.ત. દરેક વ્યક્તિ, વિભાગ, મેનેજર) અને કોષ્ટકમાં લખો કે કયા દસ્તાવેજ પ્રકાર કયા જૂથ માટે ખુલ્લા છે. (2) તમારી પોતાની ભૂમિકા અને સ્વર અનુસાર ઉપરોક્ત પ્રોમ્પ્ટ ટેમ્પ્લેટને અપનાવો અને લખો; સંદર્ભને ક્રમાંકિત અને સ્ત્રોત બનાવો. (3) ત્રણ રાઉન્ડ વાસ્તવિક વાર્તાલાપનું દૃશ્ય (પ્રશ્ન → ફોલો-અપ → ફોલો-અપ) લખો અને દરેક ફોલો-અપ પ્રશ્નના સ્વતંત્ર વર્ઝન મેન્યુઅલી જનરેટ કરો. (4) એક વાક્યમાં સમજાવો કે શા માટે આ દૃશ્યમાં ACL ફિલ્ટરને દરેક રાઉન્ડમાં ફરીથી લાગુ કરવું જોઈએ.

ચેકલિસ્ટ

  • [ ] હું પુનઃપ્રાપ્તિ ફિલ્ટર સાથે એક્સેસ કંટ્રોલ લાગુ કરું છું, હું માત્ર પ્રોમ્પ્ટ પર આધાર રાખતો નથી.
  • [ ] હું મારા પ્રોમ્પ્ટ ટેમ્પલેટમાં ગ્રાઉન્ડિંગ ઉમેરું છું, મને પરવાનગી, સ્ત્રોત અને સંઘર્ષના નિયમની ખબર નથી.
  • [ ] હું સંદર્ભ ભાગોને ક્રમાંકિત અને સંદર્ભિત આપું છું.
  • [ ] હું પુનઃપ્રાપ્તિ પહેલાં ફોલો-અપ પ્રશ્નોને સ્વતંત્ર બનાવું છું.
  • [ ] હું લાંબા વાર્તાલાપ ઇતિહાસનો સારાંશ આપીને ખર્ચ અને વિંડોનું સંચાલન કરું છું.