എന്റെ റൂട്ടീൻ അത് പ്രവർത്തിച്ചുവെന്ന് പറഞ്ഞു. അത് കള്ളം പറയുകയായിരുന്നു.

ഞാൻ ഒരു AI സിസ്റ്റം പ്രവർത്തിപ്പിക്കുന്നു. അത് സ്വയം പരിപാലിക്കുന്നതിനായി ഒരു ഷെഡ്യൂൾ പിന്തുടരുന്നു. ഒരു ഫയൽ സേവ് ചെയ്യുന്നതിനായി ഒരു റൂട്ടീൻ ആഴ്ചയിൽ രണ്ടുതവണ പ്രവർത്തിക്കുന്നു.

ഷെഡ്യൂളർ അത് പ്രവർത്തിച്ചുവെന്ന് പറഞ്ഞു. ടൈംസ്റ്റാമ്പ് അവിടെ ഉണ്ടായിരുന്നു. സ്റ്റാറ്റസ് പച്ച നിറത്തിലായിരുന്നു.

ഫയൽ അവിടെ ഉണ്ടായിരുന്നില്ല. അത് തെറ്റായ ഫോൾഡറിൽ ആയിരുന്നില്ല. അത് എവിടെയും ഉണ്ടായിരുന്നില്ല.

ഓട്ടോണമസ് ഏജന്റുകളെ (autonomous agents) നിർമ്മിക്കുമ്പോൾ ആളുകൾ ഇത് ശ്രദ്ധിക്കാറില്ല. "അത് പ്രവർത്തിച്ചു" എന്നതും "അത് ഫലപ്രദമായി പ്രവർത്തിച്ചു" എന്നതും ഒന്നല്ല. മിക്ക ഡാഷ്‌ബോർഡുകളും അത് പ്രവർത്തിച്ചോ എന്ന് മാത്രമേ പരിശോധിക്കാറുള്ളൂ.

ഒരു പ്രക്രിയ ആരംഭിച്ചു എന്ന് മാത്രമേ ഷെഡ്യൂളർ നിങ്ങളോട് പറയൂ. അതിന്റെ ഫലത്തെക്കുറിച്ച് അത് ഒന്നും പറയുന്നില്ല. എന്റെ റൂട്ടീൻ ആരംഭിച്ചു, ഒരു ഫയൽ വായിക്കാൻ ശ്രമിച്ചപ്പോൾ എറർ (error) വരികയും അത് നിലയ്ക്കുകയും ചെയ്തു. അത് ക്രാഷ് (crash) ആയിരുന്നില്ല. ചുവന്ന നിറത്തിലുള്ള എറർ മെസ്സേജും ഉണ്ടായിരുന്നില്ല. അത് പ്രവർത്തിച്ചു, പക്ഷേ ഒന്നും ഉൽപ്പാദിപ്പിച്ചില്ല.

ഞാൻ സ്റ്റാറ്റസ് നോക്കുന്നത് നിർത്തി. ഞാൻ ഡിസ്കിൽ പരിശോധിച്ചു. ഞാൻ മൂന്ന് പരിശോധനകൾ നടത്തി:

  • ഔട്ട്‌പുട്ട് ഫയൽ ഇപ്പോൾ നിലവിലുണ്ടോ?
  • ഫയൽ പുതിയതാണോ, അത് കാലിയല്ലല്ലോ?
  • ഫയൽ ഇല്ലെങ്കിൽ, റൺ ലോഗ് (raw run log) വായിക്കുക. സമ്മറി (summary) വായിക്കരുത്. ഓരോ ടൂൾ കോളിന്റെയും (tool call) യഥാർത്ഥ ട്രാൻസ്ക്രിപ്റ്റ് വായിക്കുക.

റൂട്ടീൻ "episodic" ആണെന്നാണ് സമ്മറി പറഞ്ഞത്. എന്നാൽ ട്രാൻസ്ക്രിപ്റ്റ് സത്യം വെളിപ്പെടുത്തി. ഏജന്റ് ഒരു മെമ്മറി ഫയൽ വായിക്കാൻ ശ്രമിച്ചു. ആ ഫയൽ അവിടെ ഉണ്ടായിരുന്നില്ല. ഫയൽ നിർമ്മിക്കേണ്ട ഘട്ടത്തിൽ ഏജന്റ് എത്തിയിരുന്നില്ല. അത് ഒരു റൈറ്റ് കോൾ (write call) പോലും നടത്തിയിരുന്നില്ല.

സമ്മറി എന്നെ തെറ്റായ പരിഹാരത്തിലേക്ക് നയിക്കുമായിരുന്നു.

നിങ്ങൾ ഓട്ടോണമസ് സിസ്റ്റങ്ങൾ പ്രവർത്തിപ്പിക്കുന്നുണ്ടെങ്കിൽ, ഈ നിയമങ്ങൾ ഓർക്കുക:

  • "പ്രവർത്തിച്ചു" എന്നത് "ഫലപ്രദമായി പ്രവർത്തിച്ചു" എന്നല്ല അർത്ഥമാക്കുന്നത്. ഫയൽ തന്നെയാണ് അതിന്റെ ആരോഗ്യം. ഫയൽ നിലവിലുണ്ടായിരിക്കണം, അത് പുതിയതായിരിക്കണം, കാലിയായിരിക്കരുത്.
  • സ്പെക് (spec) എന്നത് ഒരു ഹൈപ്പോത്തിസിസ് (hypothesis) മാത്രമാണ്. ഡിസ്ക് ആണ് യാഥാർത്ഥ്യം. അവ തമ്മിൽ വ്യത്യാസമുണ്ടെങ്കിൽ, ഡിസ്കിനെ വിശ്വസിക്കുക.
  • റൺ ലോഗ് (raw log) വായിക്കുക. പരാജയപ്പെട്ട അതേ സിസ്റ്റം തന്നെയാണ് സമ്മറി എഴുതുന്നത്. ഏത് ടൂളുകളാണ് യഥാർത്ഥത്തിൽ പ്രവർത്തിച്ചത് എന്ന് ട്രാൻസ്ക്രിപ്റ്റ് കാണിച്ചുതരും.

പരിഹാരം ലളിതമായിരുന്നു. റൂട്ടീൻ ആദ്യം അതിന്റെ ഫയൽ എഴുതുന്ന രീതിയിൽ ഞാൻ മാറ്റം വരുത്തി. ഇപ്പോൾ മറ്റേതൊരു ഘട്ടത്തിനും മുമ്പ് അത് ഫയൽ എഴുതുന്നു.

മിക്ക ഏജന്റ് പ്രശ്നങ്ങളും റീസണിംഗ് പരാജയങ്ങളല്ല (reasoning failures). അവ പ്ലംബിംഗ് പരാജയങ്ങളാണ് (plumbing failures).

Source: https://dev.to/eltony_lfgi/my-routine-said-it-ran-it-was-lying-2gfb

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