AI ഏജന്റുകൾക്കായുള്ള PRG പാറ്റേൺ

AI ഏജന്റുകൾ 25 വർഷം പഴക്കമുള്ള ഒരു തെറ്റ് ആവർത്തിക്കുകയാണ്.

90-കളിൽ വെബ് ഫോമുകളിൽ ഒരു വലിയ പിശക് (bug) ഉണ്ടായിരുന്നു. ഒരു ഉപഭോക്താവ് ഓർഡർ നൽകി, ശേഷം പേജ് റിഫ്രഷ് ചെയ്താൽ ബ്രൗസർ ആ ഓർഡർ വീണ്ടും അയക്കും. ഇത് രണ്ട് തവണ പണം ഈടാക്കുന്നതിനും ഒരു ദേഷ്യപ്പെട്ട ഉപഭോക്താവിനും കാരണമായി.

ഇതിനുള്ള പരിഹാരം Post/Redirect/Get (PRG) പാറ്റേൺ ആയിരുന്നു. ഇത് ഇപ്രകാരമാണ് പ്രവർത്തിക്കുന്നത്:

  • ഡാറ്റ സമർപ്പിക്കുന്നതിനായി ഉപഭോക്താവ് ഒരു POST റിക്വസ്റ്റ് അയക്കുന്നു.
  • സെർവർ ഡാറ്റ പ്രോസസ്സ് ചെയ്യുന്നു.
  • സെർവർ ഒരു പുതിയ URL-ലേക്ക് റീഡയറക്ട് (redirect) അയക്കുന്നു.
  • ഫലം കാണിക്കുന്നതിനായി ബ്രൗസർ ഒരു GET റിക്വസ്റ്റ് ചെയ്യുന്നു.

ഉപഭോക്താവ് റിഫ്രഷ് ചെയ്താൽ, അവർ GET റിക്വസ്റ്റ് മാത്രമേ വീണ്ടും അയക്കുകയുള്ളൂ. അപകടകരമായ POST റിക്വസ്റ്റ് ഒഴിവാക്കപ്പെടുന്നു.

AI ഏജന്റുകൾ ഈ പിശക് വീണ്ടും കൊണ്ടുവന്നിരിക്കുന്നു.

ഒരു ഏജന്റ് കാർഡ് ചാർജ് ചെയ്യാനോ ഒരു റെക്കോർഡ് നിർമ്മിക്കാനോ ഒരു ടൂൾ ഉപയോഗിക്കുമ്പോൾ, നെറ്റ്‌വർക്ക് തകരാറിലാകാൻ സാധ്യതയുണ്ട്. ആ പ്രവർത്തനം വിജയിച്ചോ എന്ന് ഏജന്റിന് അറിയില്ല. അതിനാൽ അത് വീണ്ടും ശ്രമിക്കുന്നു. ഇപ്പോൾ ഉപഭോക്താവിന്റെ അക്കൗണ്ടിൽ നിന്ന് രണ്ട് തവണ പണം ഈടാക്കപ്പെടുന്നു.

Idempotency keys ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഇത് പരിഹരിക്കാം. ഒരു idempotency key ഒരു റീഡയറക്ട് പോലെ പ്രവർത്തിക്കുന്നു. ഇത് "പ്രവർത്തനം നടത്തുക" എന്നതിൽ നിന്നും "ഫലം കാണിക്കുക" എന്നതിൽ നിന്നും കാര്യങ്ങളെ വേർതിരിക്കുന്നു.

ഏജന്റുകൾക്കായുള്ള പാറ്റേൺ ഇപ്രകാരമായിരിക്കണം:

  • ആദ്യ ശ്രമത്തിന് മുമ്പ് ഏജന്റ് ഒരു യുണീക് കീ (unique key) നിർമ്മിക്കുന്നു.
  • ഉപഭോക്താവിന്റെ ID, കാർട്ട് ID എന്നിവ പോലുള്ള സ്ഥിരമായ മൂല്യങ്ങൾ ഇത് ഉപയോഗിക്കുന്നു.
  • ഓരോ ടൂൾ കോളോടൊപ്പവും ഈ കീ അയക്കുന്നു.
  • സെർവർ ഈ കീ പരിശോധിക്കുന്നു. കീ വീണ്ടും കണ്ടാൽ, പ്രവർത്തനം രണ്ടുതവണ നടത്തുന്നതിന് പകരം മുൻപത്തെ ഫലം തന്നെ തിരികെ നൽകുന്നു.

ദീർഘമായ ജോലികൾക്കായി ഒരു കീ മാത്രം പോരാ. നിങ്ങൾക്ക് ചെക്ക്‌പോയിന്റിംഗ് (checkpointing) ആവശ്യമാണ്. ഓരോ ഘട്ടത്തിലും സ്റ്റേറ്റ് (state) സേവ് ചെയ്യണം. ഇത് വീണ്ടും തുടങ്ങുമ്പോൾ എവിടെയാണോ നിർത്തിയത് അവിടെ നിന്ന് തുടരാൻ സഹായിക്കുന്നു.

ഡാറ്റ മാറ്റം വരുത്തുന്ന ഏത് ഏജന്റ് ടൂളിനും ഈ നിയമങ്ങൾ പാലിക്കുക:

  • ഡാറ്റ മാറ്റം വരുത്തുന്ന (mutating) എല്ലാ ടൂളുകളും ഒരു idempotency key സ്വീകരിക്കണം.
  • കീ നിർമ്മിക്കുന്നത് ഉപഭോക്താവിന്റെ ഉദ്ദേശ്യത്തിൽ (user intent) നിന്നായിരിക്കണം, ടൈംസ്റ്റാമ്പിൽ നിന്നല്ല.
  • ആദ്യ ശ്രമത്തിന് മുമ്പ് കീ നിർമ്മിക്കുക.
  • ഓരോ തവണ വീണ്ടും ശ്രമിക്കുമ്പോഴും ഒരേ കീ തന്നെ ഉപയോഗിക്കുക.
  • ദീർഘമായ ജോലികൾക്കായി, ഓരോ ഇടക്കാല ഘട്ടവും ചെക്ക്‌പോയിന്റ് ചെയ്യുക.

ലെയർ മാറുന്നു, പക്ഷേ ലോജിക് മാറുന്നില്ല.

Source: https://dev.to/ravikiran438/the-prg-pattern-for-ai-agents-a-25-year-old-fix-coming-of-age-in-a-new-era-23fh

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