रिस्पॉन्स खो जाने पर आपका AI एजेंट डबल-चार्ज कर सकता है
यदि आपका AI एजेंट कार्ड चार्ज करने के लिए किसी टूल को कॉल करता है और नेटवर्क रिस्पॉन्स को ड्रॉप कर देता है, तो आपका एजेंट बुरी तरह विफल हो जाता है। वह बिना जाने ही ग्राहक से डबल-चार्ज कर लेता है।
पैसा पहले ही ट्रांसफर हो चुका है। एजेंट ने कभी "ok" नहीं सुना। वह वही करता है जो हर रिट्राय लूप (retry loop) करता है: वह फिर से कोशिश करता है। वह उसी प्रॉम्प्ट और उन्हीं आर्गुमेंट्स (arguments) का उपयोग करता है। इससे दूसरा चार्ज लग जाता है।
रिट्राय (retry) कोई नेटवर्क इवेंट नहीं है। यह उस साइड इफेक्ट (side effect) के बारे में एक निर्णय है जो शायद पहले ही हो चुका हो।
बैकऑफ़ (backoff) और जिटर (jitter) जैसे स्टैंडर्ड रिट्राय टूल्स रिट्राय को 'पॉलाइट' बनाते हैं। वे डबल-चार्ज को रोकने के लिए कुछ नहीं करते।
आपको एक इडेम्पोटेंसी लेज़र (idempotency ledger) की आवश्यकता है। यह यह सुनिश्चित करने के लिए एक यूनिक की (unique key) का उपयोग करता है कि कोई एक्शन अधिकतम एक ही बार हो।
टूल कॉल विफल होने के दो तरीके हैं:
- रिक्वेस्ट खो गई। एक्शन कभी हुआ ही नहीं। रिट्राय करना सुरक्षित है।
- रिस्पॉन्स खो गया। एक्शन पहले ही हो चुका है। रिट्राय करने से डुप्लिकेट चार्ज हो जाता है।
एजेंट के लिए, ये दोनों एक जैसे दिखते हैं। दोनों ही टाइमआउट या ड्रॉप हुए कनेक्शन की तरह लगते हैं।
यदि किसी टूल का कोई साइड इफेक्ट है जैसे कि पेमेंट, ईमेल, या रिफंड, तो आप साधारण रिट्राय पर भरोसा नहीं कर सकते। आपको इडेम्पोटेंसी की (idempotency key) का उपयोग करना चाहिए।
इसे कैसे ठीक करें:
- अपने टूल्स को टैग करें। पहचानें कि किन टूल्स के साइड इफेक्ट्स अपरिवर्तनीय (irreversible) हैं।
- डिटरमिनिस्टिक कीज़ (deterministic keys) का उपयोग करें। वर्कफ़्लो ID, स्टेप और आर्गुमेंट्स के आधार पर एक स्टेबल की (stable key) बनाएं। ऐसा LLM द्वारा आर्गुमेंट्स बदलने से पहले करें।
- प्रोवाइडर कीज़ का उपयोग करें। यदि आप Stripe का उपयोग करते हैं, तो उनकी इडेम्पोटेंसी की (idempotency key) पास करें। चार्ज को रोकने के लिए प्रोवाइडर को उस रिपीट को पहचानना चाहिए।
- अपने स्वयं के टूल्स के लिए एक लेज़र बनाएं। उन साइड इफेक्ट्स के लिए जिनके आप मालिक हैं, एक यूनिक कंस्ट्रेंट (unique constraint) वाले डेटाबेस टेबल का उपयोग करें। यह सुनिश्चित करता है कि आपका सिस्टम दोबारा कोशिश करने से पहले परिणाम को रिकॉर्ड कर ले।
"at-least-once" को "exactly-once" समझने की गलती न करें। डिस्ट्रिब्यूटेड सिस्टम में, आप 'at-most-once' डिलीवरी को 'at-least-once' रिट्राय और एक डिडुप्लिकेशन लेज़र (deduplication ledger) के साथ जोड़कर "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