AI एजंट्ससाठी PRG पॅटर्न
AI एजंट्स एका जुन्या समस्येचा सामना करत आहेत. ही तीच त्रुटी (bug) आहे ज्याने ९० च्या दशकात वेब फॉर्म्समध्ये समस्या निर्माण केल्या होत्या.
जुन्या वेबच्या काळात, वापरकर्ता एक फॉर्म सबमिट करायचा. जर त्यांनी रिफ्रेश दाबले, तर ब्राउझर तो डेटा पुन्हा सबमिट करायचा. याचा अर्थ दोन ऑर्डर्स, दोन चार्जेस किंवा दोन ईमेल्स असे होत असे.
याचे निराकरण Post/Redirect/Get (PRG) पॅटर्नमध्ये होते.
याचे लॉजिक सोपे आहे:
- वापरकर्ता POST विनंती (request) पाठवतो.
- सर्व्हर कामावर प्रक्रिया करतो.
- सर्व्हर नवीन URL वर 302 Redirect पाठवतो.
- ब्राउझर GET विनंतीसह त्या रिडायरेक्टचा अवलंब करतो.
आता रिफ्रेश केल्यावर फक्त रिझल्ट पेज पुन्हा लोड होते. ती क्रिया पुन्हा घडत नाही.
AI एजंट्सनी ही त्रुटी एका नवीन स्तरावर आणली आहे.
जेव्हा एखादा एजंट कार्ड चार्ज करण्यासाठी किंवा रेकॉर्ड तयार करण्यासाठी एखाद्या टूलला कॉल करतो, तेव्हा गोष्टी बिघडतात. नेटवर्क कनेक्शन तुटणे, कंटेनर रीस्टार्ट होणे किंवा रेट लिमिट लागू होणे अशा गोष्टी घडतात. शेवटची कॉल यशस्वी झाली की नाही हे एजंटला माहित नसते. त्यामुळे, तो पुन्हा प्रयत्न (retry) करतो.
योग्य उपाय नसेल तर, एजंट डुप्लिकेट ऑर्डर्स तयार करतो आणि ग्राहकांकडून चुकीचे चार्जेस आकारतो, ज्यामुळे ग्राहक संतापतात.
तुम्ही तुमच्या agentic pipelines मध्ये idempotency keys वापरून PRG पॅटर्न लागू केला पाहिजे.
Idempotency key म्हणजे तुमचे रिडायरेक्ट आहे. ते कृतीला (action) निकालापासून (result) वेगळे करते.
त्याची अंमलबजावणी कशी करावी:
- प्रत्येक बदल घडवून आणणाऱ्या (mutating) टूलने idempotency key स्वीकारली पाहिजे.
- पहिल्या प्रयत्नापूर्वीच की (key) तयार करा.
- की ही टाइमस्टॅम्पवरून नाही, तर वापरकर्त्याच्या हेतूवरून (user intent) मिळवावी.
- सर्व्हरने ती की यापूर्वी पाहिली आहे का, हे तपासले पाहिजे.
- जर ती की आधीच अस्तित्वात असेल, तर कार्य पुन्हा करण्याऐवजी साठवलेला निकाल (stored result) परत करा.
दीर्घकालीन कामांसाठी, तुम्हाला केवळ की पुरेशी नाही. तुम्हाला checkpointing ची गरज आहे.
Checkpointing प्रत्येक टप्प्यावर स्थिती (state) जतन करते. जर एखादा एजंट वीस मिनिटांच्या कामाच्या दरम्यान मध्येच क्रॅश झाला, तर तो जिथे थांबला होता तिथूनच पुन्हा सुरू करतो. तो पुन्हा सुरुवातीपासून सुरुवात करत नाही.
जर तुम्ही फक्त एकच गोष्ट करू शकत असाल, तर प्रत्येक टूल कॉल दोनदा चालवण्यासाठी सुरक्षित बनवा.
तुमच्या एजंट्सची निर्मिती या पाच तपासण्यांसह करा:
- प्रत्येक टूल idempotency key स्वीकारते का?
- की वेळेऐवजी हेतूवर आधारित आहे का?
- प्रत्येक रीट्राईमध्ये (retry) तीच की पुन्हा वापरली जाते का?
- डुप्लिकेट की साठी सर्व्हर साठवलेले निकाल परत करतो का?
- दीर्घकालीन कामांसाठी मध्यवर्ती टप्पे (intermediate steps) जतन केले जातात का?
पॅटर्न तोच आहे. फक्त स्तर बदलला आहे.
