സംഭവിക്കാത്ത കാര്യങ്ങൾ നിങ്ങളുടെ ലോഗ് റെക്കോർഡ് ചെയ്യില്ല

മിക്ക AI സുരക്ഷാ ടൂളുകളും ആർട്ടീഫാക്റ്റുകൾക്കായി (artifacts) തിരയുന്നു. അവ ഒരു ലോഗ് എൻട്രി, ഒരു സിഗ്നേച്ചർ, അല്ലെങ്കിൽ ഒരു ടൂൾ റിസൾട്ട് എന്നിവയ്ക്കായി നോക്കുന്നു. ഒരു ടൂൾ റിസൾട്ട് വ്യാജമാണെങ്കിൽ, സിസ്റ്റം അത് അടയാളപ്പെടുത്തുന്നു. ഒരു JSON ബ്ലോക്ക് തകരാറിലാണെങ്കിൽ, സിസ്റ്റം അത് കണ്ടെത്തുന്നു.

ഇവ എളുപ്പത്തിൽ കണ്ടെത്താവുന്ന പരാജയങ്ങളാണ്, കാരണം അവ ഒരു അടയാളം അവശേഷിപ്പിക്കുന്നു.

യഥാർത്ഥ അപകടം ഒഴിവാക്കലിലാണ് (omission). ഒന്നും സംഭവിക്കാത്ത അവസ്ഥയെയാണ് ഒഴിവാക്കൽ എന്ന് പറയുന്നത്.

ഒരു append-only ലോഗിൽ, അഭാവം (absence) മൂന്ന് രീതികളിൽ ഒരേപോലെ തോന്നും:

  • അത് സംഭവിച്ചില്ല.
  • അത് ഇതുവരെ സംഭവിച്ചിട്ടില്ല.
  • അത് സംഭവിച്ചു, പക്ഷേ ഒരിക്കലും റെക്കോർഡ് ചെയ്യപ്പെട്ടില്ല.

ലോഗിൽ ഒന്നും കാണുന്നില്ല. ഓഡിറ്റ് ക്വറി (audit query) ഒന്നും നൽകുന്നില്ല. നിശബ്ദത സമ്മതമായി മാറുന്നു.

മൂന്ന് ഡിസൈൻ നിയമങ്ങളിലൂടെ നിങ്ങൾക്ക് ഇത് പരിഹരിക്കാം:

  1. നിശബ്ദതയ്ക്ക് കാലാവധി നിശ്ചയിക്കുക (Make silence expire) ഒരു ഏജന്റ് ഒരു പ്രവർത്തനം നടത്തിയാൽ, ഒരു റിവ്യൂവർ അത് അംഗീകരിക്കണം (sign off). ഒരു സിഗ്നേച്ചർ ഇല്ലാതിരിക്കുന്നത് നിങ്ങളുടെ സുരക്ഷയിലെ ഒരു വിടവാണ്. "pending" എന്നത് എന്നെന്നേക്കുമായി "pending" ആയി തുടരാൻ അനുവദിക്കരുത്. ഒരു സമയപരിധി (deadline) നിശ്ചയിക്കുക. ആ സമയപരിധി കഴിഞ്ഞാൽ, സിസ്റ്റം REVIEW_EXPIRED പോലുള്ള ഒരു ടെർമിനൽ സ്റ്റേറ്റ് (terminal state) റെക്കോർഡ് ചെയ്യണം. ഇത് ഒരു ശൂന്യമായ ഇടത്തെ തിരയാൻ കഴിയുന്ന ഒരു പിശകായി (searchable error) മാറ്റുന്നു.

  2. അവകാശവാദങ്ങൾക്ക് (claims) തെളിവുകൾ ആവശ്യമാക്കുക ഏജന്റുകൾ ലോകത്തെ വിവരിക്കാൻ പലപ്പോഴും സാധാരണ ഭാഷ (prose) ഉപയോഗിക്കാറുണ്ട്. "ഫയൽ കാലിയായിരുന്നു" എന്ന് ഒരു ഏജന്റ് പറഞ്ഞേക്കാം. അതിനെ പിന്തുണയ്ക്കാൻ ഒരു ടൂൾ റിസൾട്ട് ഇല്ലെങ്കിൽ, ആ അവകാശവാദം അപകടകരമാണ്.

ഒരു അവകാശവാദം ഭാവിയിലെ ഒരു പ്രവർത്തനത്തെ സ്വാധീനിക്കുന്നുണ്ടെങ്കിൽ, അതിൽ ഒരു observation ID ഉണ്ടായിരിക്കണം. ഏജന്റ് പറയുന്നത് സത്യമാണോ എന്ന് ഊഹിക്കാൻ ശ്രമിക്കരുത്. ആ അവകാശവാദം ഒരു യഥാർത്ഥ ഡാറ്റാ സ്രോതസ്സിലേക്ക് (data source) വിരൽ ചൂണ്ടുന്നുണ്ടോ എന്ന് പരിശോധിക്കുക മാത്രം ചെയ്യുക. തെളിവുകളില്ലാത്ത ഒരു അവകാശവാദം തെറ്റായ രീതിയിൽ രൂപപ്പെടുത്തിയ സന്ദേശമാണ് (malformed message).

  1. പ്രവർത്തനങ്ങൾക്കായി രണ്ട് ഇവന്റുകൾ ഉപയോഗിക്കുക (Use a two-event split for actions) ഒരു ഏജന്റ് ഇമെയിൽ അയക്കുന്നത് പോലുള്ള ഒരു ജോലി തുടങ്ങുമ്പോൾ, അതിന്റെ ഫലം ലോഗ് ചെയ്യുന്നതിന് മുമ്പ് തന്നെ അത് പരാജയപ്പെട്ടേക്കാം. ഇത് ഒരു വിടവ് സൃഷ്ടിക്കുന്നു. ഇമെയിൽ അയച്ചോ? നിങ്ങൾ വീണ്ടും ശ്രമിക്കണോ?

ഈ രീതി ഉപയോഗിക്കുക:

  • ഒരു യുണീക് കീ ഉപയോഗിച്ച് ഒരു INTENT ഇവന്റ് ചേർക്കുക.
  • പ്രവർത്തനം നടപ്പിലാക്കുക.
  • ഒരു OUTCOME ഇവന്റ് ചേർക്കുക.

ഇപ്പോൾ നിങ്ങൾക്ക് ഇടയിലുള്ള അവസ്ഥ (middle state) കാണാൻ കഴിയും. നിങ്ങൾക്ക് ഒരു INTENT ഉണ്ടെങ്കിലും OUTCOME ഇല്ലെങ്കിൽ, സിസ്റ്റം എവിടെയാണ് പരാജയപ്പെട്ടതെന്ന് നിങ്ങൾക്ക് കൃത്യമായി അറിയാൻ കഴിയും. ഊഹിക്കുന്നതിന് പകരം നിങ്ങൾക്ക് ആ അവസ്ഥ ശരിയാക്കാൻ (reconcile) സാധിക്കും.

നിയമം ലളിതമാണ്: നിങ്ങളുടെ സിസ്റ്റം റെക്കോർഡ് ചെയ്യുന്ന ഓരോ വിജയത്തിനും, ആ റെക്കോർഡ് ഇല്ലാതിരുന്നാൽ എന്ത് സംഭവിക്കുമെന്ന് ചോദിക്കുക. ഉത്തരം "ഒന്നുമില്ല" എന്നാണെങ്കിൽ, നിങ്ങൾക്ക് ഒരു ബൈൻഡ് സ്പോട്ട് (blind spot) ഉണ്ട്.

നിങ്ങളുടെ നെഗറ്റീവ് സ്റ്റേറ്റുകളെ (negative states) പ്രധാനപ്പെട്ട റെക്കോർഡുകളായി രൂപകൽപ്പന ചെയ്യുക. അവയ്ക്ക് പേരുകൾ നൽകുക. അവയ്ക്ക് ഉടമസ്ഥരെ (owners) നിശ്ചയിക്കുക. അവ നിങ്ങളുടെ സുരക്ഷാ പരിശോധനകളിൽ (gates) പരാജയപ്പെടുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക.

Source: https://dev.to/anp2network/your-log-cant-record-what-didnt-happen-2ga7

Optional learning community: https://t.me/GyaanSetuAi