మీ AI ఏజెంట్ రెస్పాన్స్ కోల్పోయినప్పుడు డబుల్-ఛార్జ్ చేసే ప్రమాదం ఉంది
మీ AI ఏజెంట్ ఒక కార్డును ఛార్జ్ చేయడానికి ఒక టూల్ను పిలిచినప్పుడు, నెట్వర్క్ రెస్పాన్స్ను కోల్పోతే, మీ ఏజెంట్ సరిగ్గా పనిచేయదు. అది తెలియకుండానే కస్టమర్ను డబుల్-ఛార్జ్ చేస్తుంది.
డబ్బు ఇప్పటికే బదిలీ అయిపోయింది. ఏజెంట్కు "ok" అనే సమాచారం అందలేదు. ప్రతి రిట్రై లూప్ (retry loop) చేసేదే అది కూడా చేస్తుంది: మళ్ళీ ప్రయత్నిస్తుంది. అది అదే ప్రాంప్ట్ మరియు అదే ఆర్గ్యుమెంట్లను ఉపయోగిస్తుంది. దీనివల్ల రెండోసారి ఛార్జ్ అవుతుంది.
రిట్రై అనేది కేవలం నెట్వర్క్ ఈవెంట్ కాదు. ఇది ఇప్పటికే జరిగి ఉండవచ్చని అనుమానించే ఒక సైడ్ ఎఫెక్ట్ (side effect) గురించి తీసుకునే నిర్ణయం.
backoff మరియు jitter వంటి ప్రామాణిక రిట్రై టూల్స్ రిట్రైలను క్రమబద్ధీకరిస్తాయి. అవి డబుల్-ఛార్జ్లను ఆపడానికి ఏమీ చేయలేవు.
మీకు ఒక idempotency ledger అవసరం. ఇది ఒక యాక్షన్ గరిష్టంగా ఒకసారి మాత్రమే జరిగేలా చూడటానికి ఒక యూనిక్ కీని (unique key) ఉపయోగిస్తుంది.
టూల్ కాల్ విఫలమయ్యే రెండు మార్గాలు ఉన్నాయి:
- రిక్వెస్ట్ కోల్పోబడింది. యాక్షన్ అసలు జరగలేదు. అప్పుడు రిట్రై చేయడం సురక్షితం.
- రెస్పాన్స్ కోల్పోబడింది. యాక్షన్ ఇప్పటికే జరిగిపోయింది. అప్పుడు రిట్రై చేయడం వల్ల డూప్లికేట్ జరుగుతుంది.
ఏజెంట్కు ఇవి రెండూ ఒకేలా కనిపిస్తాయి. రెండూ టైమ్ అవుట్ (timeout) లేదా కనెక్షన్ తెగిపోయినట్లుగానే కనిపిస్తాయి.
ఒక టూల్కు పేమెంట్, ఈమెయిల్ లేదా రీఫండ్ వంటి సైడ్ ఎఫెక్ట్స్ ఉంటే, మీరు సాధారణ రిట్రైలపై ఆధారపడలేరు. మీరు తప్పనిసరిగా idempotency కీని ఉపయోగించాలి.
దీనిని ఎలా పరిష్కరించాలి:
- మీ టూల్స్ను ట్యాగ్ చేయండి. ఏ టూల్స్కు వెనక్కి తీసుకోలేని (irreversible) సైడ్ ఎఫెక్ట్స్ ఉన్నాయో గుర్తించండి.
- డిటర్మినిస్టిక్ కీలను (deterministic keys) ఉపయోగించండి. వర్క్ఫ్లో ID, స్టెప్ మరియు ఆర్గ్యుమెంట్లను బట్టి ఒక స్టేబుల్ కీని సృష్టించండి. LLM ఆర్గ్యుమెంట్లను మార్చకముందే దీనిని చేయండి.
- ప్రొవైడర్ కీలను ఉపయోగించండి. మీరు Stripe ఉపయోగిస్తుంటే, వారి idempotency కీని పంపండి. ఛార్జ్ను ఆపడానికి ప్రొవైడర్ ఆ రిపీట్ను గుర్తించాలి.
- మీ స్వంత టూల్స్ కోసం ఒక లెడ్జర్ (ledger) నిర్మించండి. మీరు నియంత్రించే సైడ్ ఎఫెక్ట్స్ కోసం, యూనిక్ కన్స్ట్రెయింట్ (unique constraint) ఉన్న డేటాబేస్ టేబుల్ను ఉపయోగించండి. ఇది మీ సిస్టమ్ మళ్ళీ ప్రయత్నించే ముందే ఫలితాన్ని రికార్డ్ చేసేలా చేస్తుంది.
"at-least-once" ను "exactly-once" అని పొరపడకండి. డిస్ట్రిబ్యూటెడ్ సిస్టమ్స్లో, at-most-once డెలివరీని, at-least-once రిట్రైలు మరియు ఒక డూప్లికేషన్ లెడ్జర్తో కలిపి ఉపయోగించడం ద్వారా మీరు "exactly-once" సాధించవచ్చు.
రైట్స్ (writes) ను రీడ్స్ (reads) లాగా చూడటం ఆపండి. రీడ్ను రిట్రై చేయడం వల్ల ఖర్చు ఉండదు. రైట్ను రిట్రై చేయడం వల్ల డబ్బు ఖర్చవుతుంది.
Source: https://dev.to/0012303/your-ai-agent-will-double-charge-on-a-lost-response-5eed
Optional learning community: https://t.me/GyaanSetuAi