तुमचा AI Agent प्रतिसाद हरवल्यास ग्राहकाकडून दोनदा पैसे आकारू शकतो
जर तुमच्या AI agent ने कार्ड चार्ज करण्यासाठी एखाद्या टूलला कॉल केला आणि नेटवर्कमुळे प्रतिसाद (response) मिळाला नाही, तर तुमचा agent चुकीच्या पद्धतीने अपयशी ठरतो. त्याला न कळता तो ग्राहकाकडून दोनदा पैसे आकारतो.
पैसे आधीच ट्रान्सफर झाले आहेत. agent ला कधीही "ok" ऐकायला मिळाले नाही. तो प्रत्येक retry loop प्रमाणेच करतो: तो पुन्हा प्रयत्न करतो. तो तोच prompt आणि तेच arguments वापरतो. यामुळे दुसरे चार्जेस लागतात.
Retry ही केवळ एक नेटवर्क इव्हेंट नाही. ती अशा 'side effect' बद्दलची निर्णय प्रक्रिया आहे जी कदाचित आधीच घडली असू शकते.
backoff आणि jitter सारखी मानक retry टूल्स retry प्रक्रिया सुलभ करतात. परंतु, ते double-charges रोखण्यासाठी काहीही करत नाहीत.
तुम्हाला 'idempotency ledger' ची आवश्यकता आहे. एखादी क्रिया जास्तीत जास्त एकदाच घडली आहे याची खात्री करण्यासाठी हे एक युनिक की (unique key) वापरते.
टूल कॉल अपयशी ठरण्याचे दोन मार्ग आहेत:
- विनंती (request) हरवली. क्रिया कधीच घडली नाही. अशा वेळी retry करणे सुरक्षित आहे.
- प्रतिसाद (response) हरवला. क्रिया आधीच घडली आहे. अशा वेळी retry केल्यामुळे डुप्लिकेट व्यवहार होतो.
agent साठी हे दोन्ही सारखेच दिसतात. दोन्ही गोष्टी timeout किंवा कनेक्शन तुटल्यासारख्या वाटतात.
जर एखाद्या टूलचा पेमेंट, ईमेल किंवा रिफंड सारखा side effect असेल, तर तुम्ही साध्या retries वर अवलंबून राहू शकत नाही. तुम्हाला 'idempotency key' वापरणे अनिवार्य आहे.
हे कसे सुधारावे:
- तुमच्या टूल्सना टॅग करा. कोणत्या टूल्सचे परिणाम (side effects) अपरिवर्तनीय आहेत ते ओळखा.
- deterministic keys वापरा. workflow ID, स्टेप आणि arguments वर आधारित एक स्थिर की तयार करा. LLM ने arguments बदलण्यापूर्वीच हे करा.
- provider keys वापरा. जर तुम्ही Stripe वापरत असाल, तर त्यांची idempotency key पास करा. चार्जेस थांबवण्यासाठी provider ने तो पुन्हा झालेला व्यवहार ओळखणे आवश्यक आहे.
- तुमच्या स्वतःच्या टूल्ससाठी ledger तयार करा. तुमच्या नियंत्रणाखालील side effects साठी, unique constraint असलेल्या डेटाबेस टेबलचा वापर करा. यामुळे तुमचा सिस्टम पुन्हा प्रयत्न करण्यापूर्वी निकाल नोंदवून घेईल याची खात्री होते.
"at-least-once" ला "exactly-once" समजण्याची चूक करू नका. डिस्ट्रिब्युटेड सिस्टममध्ये (distributed systems), at-most-once delivery, at-least-once retries आणि 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