मी जो AI एजंट लाँच केला, त्याने २३ युनिट टेस्ट्स पास केल्या होत्या, पण लाईव्ह झाल्यानंतर एका तासाच्या आतच त्याने उत्पादनाचे एक नवीन वैशिष्ट्य (feature) स्वतःहून तयार केले आणि वास्तविक किमतीपेक्षा तीन पटीने कमी किंमत सांगितली. जेव्हा वापरकर्त्याने यावर आक्षेप घेतला, तेव्हा बॉटने आपल्या निर्णयावर ठाम राहण्याचा प्रयत्न केला, ज्यामुळे संभाषण संपले आणि माझा एक क्लायंट गमावला गेला. या चुकीने हे सिद्ध केले की, केवळ डिटरमिनिस्टिक युनिट टेस्ट्सचा संच एजंटची विश्वासार्हता सुनिश्चित करू शकत नाही.
AI एजंट्ससाठी युनिट टेस्ट्स अपुऱ्या का पडतात
पारंपारिक कोडसाठी युनिट टेस्ट्स काम करतात कारण एकाच इनपुटसाठी नेहमी तेच आउटपुट मिळते. “2 + 2 = 4” हे असे आश्वासन आहे जे तुम्ही साध्या इक्वॅलिटी चेकने तपासू शकता. मात्र, LLM-चालित एजंट प्रॉम्प्ट, सभोवतालचा संदर्भ आणि त्याने वापरलेल्या कोणत्याही बाह्य टूल्सच्या स्थितीनुसार आपले आउटपुट बदलू शकतो. स्ट्रिंगची अचूक समानता तपासणारी टेस्ट हॅलुसिनेशन्स (hallucinations), टोनमधील बदल किंवा गार्डरेल उल्लंघने (guardrail violations) ओळखू शकत नाही. एका क्लायंटला costing झालेल्या त्या 'सायलेंट फेल्युअर'ने हे दाखवून दिले की, तुम्हाला केवळ विलग फंक्शन्सना नाही, तर संपूर्ण संवादाचे मूल्यमापन करणे आवश्यक आहे.
कोणत्याही फीचर कोडच्या आधी इव्हॅल्युएशन हार्नेस तयार करणे
मी विकासाचा क्रम बदलला: प्रथम चार-स्तरीय इव्हॅल्युएशन हार्नेस (evaluation harness) डिझाइन केला आणि त्यानंतर एजंट लिहिला. हा हार्नेस एकाच वेळी १३१ टेस्ट्स रन करतो, ज्याचा खर्च साधारणपणे तीन सेंट येतो आणि तो सुमारे अकरा मिनिटांत पूर्ण होतो. मी प्रत्येक टेस्टसाठी शक्य तितके लहान मॉडेल नियुक्त करतो जे ती हाताळू शकेल, आणि मोठ्या, महागड्या मॉडेल्सचा वापर केवळ तेव्हाच करतो जेव्हा त्यांची खरोखर गरज असते.
लेयर १ – टूल फंक्शनॅलिटी (Tool functionality)
संरक्षणाची पहिली ओळ हे तपासते की एजंट आपली टूल्स योग्यरित्या कॉल करू शकतो की नाही. यामध्ये यशस्वी शोध (searches), मुद्दाम चुकीच्या पद्धतीने तयार केलेल्या क्वेरीज आणि सिम्युलेटेड API फेल्युअर यांचा समावेश आहे. टूलचा वापर मोठ्या प्रमाणावर डिटरमिनिस्टिक असतो—एकतर विनंती (request) योग्यरित्या तयार केली जाते किंवा API एरर देते—त्यामुळे साधे Python assertions पुरेसे आहेत. येथे चुकीची विनंती पकडल्यामुळे पुढील गोंधळ टाळता येतो.
लेयर २ – सूचनांचे पालन (Instruction following)
त्यानंतर हार्नेस हे तपासतो की एजंट गार्डरेल्सचे पालन करतो की नाही. एक लहान LLM इव्हॅल्युएटर म्हणून काम करते, जे एजंटच्या प्रतिसादाची तपासणी करते: जसे की ठरवलेल्या पात्रात राहणे, प्रतिबंधित विषयांची टाळणे आणि आवश्यक JSON schema देणे. हे लेयर सिमेंटिक ड्रिफ्ट (semantic drift) पकडते जे युनिट टेस्ट्सना सुटते, जसे की अनपेक्षित व्यक्तिमत्वात शिरणे किंवा अंतर्गत प्रॉम्प्ट्स लीक होणे.
लेयर ३ – ध्येय-केंद्रित वर्तन (Goal-oriented behavior)
तिसरे लेयर सर्वात महत्त्वाचे आहे. ते विचारते की एजंट खरोखर आपला उद्देश पूर्ण करतो का. लीड-जनरेशन बॉटसाठी, याचा अर्थ असा की तो योग्य पात्रता प्रश्न विचारतो आणि योग्य वेळी मानवी मदतीसाठी (human escalation) विनंती करतो. मी येथे रिझनिंग-ओरिएंटेड मॉडेल वापरतो कारण ते खर्च न वाढवता संपूर्ण प्रवाहाचे मूल्यमापन करू शकते. जर बॉट आपले ध्येय गाठण्यात अपयशी ठरला—जरी त्याने पहिले दोन लेयर्स पास केले असले तरीही—तर त्याला पुन्हा डिझाइन करण्यासाठी फ्लॅग केले जाते.
लेयर ४ – परफॉर्मन्स (Performance)
शेवटी, हार्नेस लॅटन्सी (latency) आणि टोकन-जनरेशन स्पीड रेकॉर्ड करतो. संथ प्रतिसाद वापरकर्त्याचा अनुभव खराब करतात, विशेषतः रिअल-टाइम चॅटमध्ये. कार्यात्मक अचूकतेसोबतच या मेट्रिक्सचा मागोवा घेऊन, मी एजंट अचूक आणि प्रतिसादात्मक दोन्ही आहे याची खात्री करतो.
खर्च वाचवणारे पर्याय
एका रनसाठी $0.03 ही आकडेवारी केवळ मार्केटिंगचा दिखावा नाही; ती टेस्टची जटिलता आणि मॉडेलचा आकार यांचा मेळ घालण्यामुळे येते. डिटरमिनिस्टिक टूल चेक सर्वात स्वस्त रनटाइमवर चालतात, सूचनांचे पालन करण्यासाठी हलके (lightweight) मॉडेल वापरले जाते आणि केवळ ध्येय-केंद्रित मूल्यमापनासाठी अधिक सक्षम, परंतु महागडे मॉडेल वापरले जाते. हा टियर्ड दृष्टिकोन एकूण खर्च कमी ठेवतो, ज्यामुळे प्रत्येक कोड बदलावर संपूर्ण टेस्ट सूट चालवणे शक्य होते.
तडजोड: वेग विरुद्ध सुरक्षा
इव्हॅल्युएशन हार्नेस सुरू केल्यामुळे सुरुवातीला काही अडथळे आले. डेव्हलपमेंट सायकल लांबली आणि लाँचची वेळ पुढे ढकलली गेली.
पुढे काय पाहावे
- मॉडेल-चालित इव्हॅल्युएटर्स: जसे LLMs सुधारत जातील, तसे लेयर २ मधील इव्हॅल्युएटर अधिक सूक्ष्म होऊ शकतो, ज्यामुळे सूक्ष्म पॉलिसी उल्लंघन शोधताना चुकीचे पॉझिटिव्ह (false positives) कमी होतील.
निष्कर्ष
जर तुम्ही प्रोडक्शनसाठी AI एजंट्स बनवत असाल, तर लेयर्ड इव्हॅल्युएशन हार्नेस हा ऐच्छिक नाही; तर तो मूलभूत आहे. सर्वसमावेशक टेस्टिंगचा खर्च आधीच उचलून—एका रनसाठी $0.03, प्रत्येक सूटसाठी अकरा मिनिटे—तुम्ही अशा 'सायलेंट फेल्युअर'पासून संरक्षण करता जे युनिट टेस्ट्स शोधू शकत नाहीत.
