ഒരു മറുപടി ലഭിക്കാതെ പോയാൽ നിങ്ങളുടെ AI ഏജന്റ് ഇരട്ടി തുക ഈടാക്കിയേക്കാം
ഒരു കാർഡ് ചാർജ് ചെയ്യുന്നതിനായി നിങ്ങളുടെ AI ഏജന്റ് ഒരു ടൂൾ ഉപയോഗിക്കുകയും, എന്നാൽ നെറ്റ്വർക്ക് തകരാർ കാരണം മറുപടി ലഭിക്കാതിരിക്കുകയും ചെയ്താൽ, നിങ്ങളുടെ ഏജന്റ് പരാജയപ്പെടും. അത് അറിയാതെ തന്നെ ഉപഭോക്താവിൽ നിന്ന് ഇരട്ടി തുക ഈടാക്കും.
പണം ഇതിനകം തന്നെ കൈമാറ്റം ചെയ്യപ്പെട്ടു കഴിഞ്ഞു. ഏജന്റിന് "ok" എന്ന മറുപടി ലഭിച്ചില്ല. എല്ലാ റീട്രൈ ലൂപ്പുകളും (retry loop) ചെയ്യുന്നത് പോലെ, അത് വീണ്ടും ശ്രമിക്കുന്നു. ഒരേ പ്രോംപ്റ്റും ഒരേ ആർഗ്യുമെന്റുകളും ഉപയോഗിച്ച് അത് വീണ്ടും ശ്രമിക്കുമ്പോൾ രണ്ടാമതൊരു ചാർജ് കൂടി നടക്കുന്നു.
ഒരു റീട്രൈ (retry) എന്നത് വെറുമൊരു നെറ്റ്വർക്ക് സംഭവമല്ല. അത് ഇതിനകം തന്നെ സംഭവിച്ചേക്കാവുന്ന ഒരു സൈഡ് ഇഫക്റ്റിനെ (side effect) കുറിച്ചുള്ള തീരുമാനമാണ്.
Backoff, jitter തുടങ്ങിയ സാധാരണ റീട്രൈ ടൂളുകൾ റീട്രൈകൾ കൂടുതൽ കൃത്യതയുള്ളതാക്കുന്നുണ്ടെങ്കിലും, ഇരട്ടി ചാർജ് ചെയ്യുന്നത് തടയാൻ അവയ്ക്ക് കഴിയില്ല.
നിങ്ങൾക്ക് ഒരു idempotency ledger ആവശ്യമാണ്. ഒരു പ്രവർത്തനം പരമാവധി ഒരു തവണ മാത്രം നടക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കാൻ ഇത് ഒരു യുണീക് കീ (unique key) ഉപയോഗിക്കുന്നു.
ഒരു ടൂൾ കോൾ പരാജയപ്പെടാൻ രണ്ട് വഴികളുണ്ട്:
- റിക്വസ്റ്റ് നഷ്ടപ്പെട്ടു. പ്രവർത്തനം നടന്നില്ല. ഈ സാഹചര്യത്തിൽ റീട്രൈ ചെയ്യുന്നത് സുരക്ഷിതമാണ്.
- മറുപടി നഷ്ടപ്പെട്ടു. പ്രവർത്തനം ഇതിനകം തന്നെ നടന്നു കഴിഞ്ഞു. ഈ സാഹചര്യത്തിൽ റീട്രൈ ചെയ്യുന്നത് ഡ്യൂപ്ലിക്കേറ്റ് ചാർജ് ഉണ്ടാക്കും.
ഒരു ഏജന്റിനെ സംബന്ധിച്ചിടത്തോളം ഇവ രണ്ടും ഒന്നുതന്നെയാണ്. ഇവ രണ്ടും ഒരു ടൈമൗട്ട് (timeout) അല്ലെങ്കിൽ കണക്ഷൻ നഷ്ടപ്പെട്ടത് പോലെയാണ് തോന്നിക്കുക.
പേയ്മെന്റ്, ഇമെയിൽ അല്ലെങ്കിൽ റീഫണ്ട് പോലുള്ള സൈഡ് ഇഫക്റ്റുകൾ ഉള്ള ഒരു ടൂൾ ആണെങ്കിൽ, വെറും റീട്രൈകളെ മാത്രം ആശ്രയിക്കാൻ കഴിയില്ല. നിങ്ങൾ നിർബന്ധമായും ഒരു idempotency key ഉപയോഗിക്കണം.
ഇത് എങ്ങനെ പരിഹരിക്കാം:
- നിങ്ങളുടെ ടൂളുകളെ ടാഗ് ചെയ്യുക. തിരിച്ചെടുക്കാൻ കഴിയാത്ത സൈഡ് ഇഫക്റ്റുകൾ (irreversible side effects) ഏതൊക്കെ ടൂളുകൾക്കാണെന്ന് തിരിച്ചറിയുക.
- Deterministic keys ഉപയോഗിക്കുക. Workflow ID, സ്റ്റെപ്പ്, ആർഗ്യുമെന്റുകൾ എന്നിവയെ അടിസ്ഥാനമാക്കി ഒരു സ്റ്റേബിൾ കീ നിർമ്മിക്കുക. LLM ആർഗ്യുമെന്റുകൾ മാറ്റുന്നതിന് മുമ്പ് ഇത് ചെയ്യുക.
- Provider keys ഉപയോഗിക്കുക. നിങ്ങൾ Stripe ആണ് ഉപയോഗിക്കുന്നതെങ്കിൽ, അവരുടെ idempotency key നൽകുക. ചാർജ് ചെയ്യുന്നത് തടയാൻ പ്രൊവൈഡർ ആ ആവർത്തനം തിരിച്ചറിയേണ്ടതുണ്ട്.
- സ്വന്തം ടൂളുകൾക്കായി ഒരു ledger നിർമ്മിക്കുക. നിങ്ങൾ നിയന്ത്രിക്കുന്ന സൈഡ് ഇഫക്റ്റുകൾക്കായി, ഒരു യുണീക് കൺസ്ട്രയിന്റ് (unique constraint) ഉള്ള ഒരു ഡാറ്റാബേസ് ടേബിൾ ഉപയോഗിക്കുക. ഇത് നിങ്ങളുടെ സിസ്റ്റം വീണ്ടും ശ്രമിക്കുന്നതിന് മുമ്പ് ഫലം രേഖപ്പെടുത്തുന്നുണ്ടെന്ന് ഉറപ്പാക്കുന്നു.
"at-least-once" എന്നതിനെ "exactly-once" ആയി തെറ്റിദ്ധരിക്കരുത്. ഡിസ്ട്രിബ്യൂട്ടഡ് സിസ്റ്റങ്ങളിൽ (distributed systems), at-most-once ഡെലിവറിയും, at-least-once റീട്രൈകളും, ഒരു deduplication ledger-ഉം സംയോജിപ്പിച്ചാൽ മാത്രമേ നിങ്ങൾക്ക് "exactly-once" ലഭിക്കൂ.
'Writes'-നെ 'Reads' പോലെ കാണുന്നത് നിർത്തുക. ഒരു 'Read' റീട്രൈ ചെയ്യുന്നത് സൗജന്യമാണ്. എന്നാൽ ഒരു 'Write' റീട്രൈ ചെയ്യുന്നത് പണം ചിലവാക്കുന്ന കാര്യമാണ്.
Source: https://dev.to/0012303/your-ai-agent-will-double-charge-on-a-lost-response-5eed
Optional learning community: https://t.me/GyaanSetuAi