बेंचमार्क-ड्रिवेन डेवलपमेंट: एआई सिस्टम्स के लिए TDD से परे
कैसे बेंचमार्क-ड्रिवेन डेवलपमेंट TDD से विकसित हुआ ताकि डेटा-चालित कॉन्फ़िगरेशन जनरेशन और अनुभवजन्य अनुकूलन के माध्यम से एआई की घातीय गति को संभाला जा सके.
Developed by Robert E. Beckner III (Merlin) | rbeckner.com
मैंने शुरुआती 2025 में बेंचमार्क-ड्रिवेन डेवलपमेंट खोजा, जब मैं एक अनुवाद प्रणाली बना रहा था जिस पर मैं दो वर्षों से काम कर रहा था और कई दस्तावेज़ रेंडरिंग इंजन. अनुवाद प्रणाली वह प्रयोगशाला बन गई जहां इस पद्धति को स्पष्ट रूप से परिभाषित किया गया. मैं लगभग 2023 से एआई सिस्टम्स के साथ काम कर रहा था, और जैसे-जैसे मैंने प्रगति की, मैंने महसूस किया कि एआई मॉडल इतनी तेज़ी से विकसित हो रहे थे कि पारंपरिक दृष्टिकोण गति के साथ नहीं चल पा रहे थे.यह वह समय था जब फ़ंक्शन कॉलिंग अभी-अभी बाज़ार में नवाचार के रूप में उभरी थी, इससे पहले कि स्वायत्त एजेंट वास्तव में प्रचलित हों. मैं विभिन्न भाषा युग्मों का मूल्यांकन कर रहा था, जटिल पाइपलाइनों का निर्माण कर रहा था, और मैंने महसूस किया कि परियोजना को स्वयं क्षमताओं को मेटल तक मापने का एक तरीका चाहिए था। समस्या केवल यह नहीं थी कि कुछ काम करता है या नहीं—यह यह पता लगाने की थी कि जब परिदृश्य कुछ हफ़्तों में बदलता है, तो सबसे अच्छा क्या काम करता है.परीक्षण से सिमुलेशन तक#
मैं हमेशा परीक्षण के मूल्य को समझता हूं, विशेषकर सरकारी प्रणालियों के लिए उद्यम प्रणालियाँ बनाते समय, जहां कड़े आवश्यकताएं और पूरी तरह से वित्तपोषित अनुबंध प्रमाण की मांग करते हैं. लेकिन जब TDD उन परियोजनाओं पर थोप दिया गया जिन पर मैं काम कर रहा था, मैंने कुछ महत्वपूर्ण देखा: फ्रेमवर्क तभी काम करते हैं जब टीमें वास्तव में उन्हें अपनाती हैं. पूरा स्वीकृति थोपना शायद ही कभी समझ में आता है.जो मैंने सीखा है वह यह है कि सबसे अच्छा दृष्टिकोण अक्सर हाइब्रिड होता है—केवल उतना ही अपनाएँ जितना आवश्यक हो. मैंने व्यापक यूनिट कवरेज के बजाय मूल क्षमताओं का परीक्षण करने की ओर झुकाव किया. कई हजारों बिखरे हुए परीक्षणों को बनाए रखने का क्या कारण है, जब एक सिमुलेशन स्क्रिप्ट 1000 पंक्तियों के भीतर पूरी उपयोगकर्ता प्रवाह को मान्य कर सकती है?एक राजनीतिक कैनवासिंग एप्लिकेशन के लिए, मैंने एक सिमुलेशन बनाया जो नकली टीमों का निर्माण करता है, कैनवासर को शामिल और छोड़ते हुए अनुकरण करता है, यथार्थवादी कार्यभार उत्पन्न करता है, और सिस्टम को बड़े पैमाने पर तनाव देता है. इसने सब कुछ उजागर किया: यूआई व्यवहार, चार्ट रेंडरिंग, सीमाओं पर डेटा अखंडता. एक स्क्रिप्ट ने मुझे बिखरे हुए यूनिट परीक्षणों से अधिक विश्वास दिया.मेरे 25 वर्ष के कोडिंग में, मैंने पिछले 10-12 वर्षों को गहराई से इस बात से अवगत होकर बिताया कि एक शानदार स्कोरकार्ड कितना मूल्यवान हो सकता है. मैं GPT के अस्तित्व से बहुत पहले स्कोरकार्ड का उपयोग कर रहा था, और पिछले तीन वर्षों में उन्हें AI के साथ फिर से देखने से बहुत रोचक अनुभव हुआ. वो सिमुलेशन अनुभवों ने Benchmark-Driven Development की नींव रखी.वह क्षण जब सब कुछ बदल गया#
सच्चा खोज तब हुआ जब मुझे एहसास हुआ कि कुछ ऐसा था जिसने सब कुछ बदल दिया: benchmarking केवल एक कॉन्फ़िगरेशन उत्सर्जित कर सकता है जो सीधे उत्पादन में जाता है. यह पहले से ही परीक्षणित है, उसी स्थान पर, प्रॉम्प्ट और सब कुछ के साथ लगाने के लिए तैयार. वही बड़ा अंतर्दृष्टि थी.यह अनुवाद प्रणाली के साथ एक मौलिक समस्या का सामना करने से उत्पन्न हुआ. AI प्रदाताओं ने दर्जनों भाषाओं के लिए समर्थन का दावा किया, लेकिन किस हद तक और किस गुणवत्ता के साथ? वह जानकारी अच्छी तरह से प्रलेखित नहीं थी, और अनुभव के माध्यम से मैंने सीखा कि मैं विक्रेता के दावों पर पूरी तरह भरोसा नहीं कर सकता—और मुझे नहीं करना चाहिए.इसलिए मैंने एक बेंचमार्क मूल्यांकन लूप बनाया जो प्रोजेक्ट में रहता है. मैं इसे एक सेवा और मॉडल दे सकता था, और यह यह मूल्यांकन करता कि कौन सी भाषाएँ वास्तव में अच्छी हैं—न कि विक्रेता ने दावा किया, बल्कि क्या अनुभवजन्य साक्ष्य दिखाता है.यह प्रक्रिया समरूप है: समान इनपुट, समान आउटपुट, लगातार कैश्ड तेज़ परिणामों के लिए. प्रॉम्प्ट बदलते समय, हम A/B परीक्षण कर रहे हैं ताकि सर्वश्रेष्ठ का पता लगाया जा सके. जो मॉडल लगातार विफल रहे, उन्हें कुछ भाषा जोड़ों के लिए ब्लैकलिस्ट किया गया या रैंक घटा दिया गया, जिससे बेंचमार्किंग अधिक उत्पादक बनी.AI का उपयोग करके AI एकीकरण बनाना अविश्वसनीय रूप से शक्तिशाली साबित हुआ. फ़ंक्शन कॉलिंग और प्रारंभिक फ्रेमवर्क के साथ जो एजेंट में विकसित होंगे, मैं AI के साथ बेंचमार्क बना सकता था, स्कोरकार्ड और मूल्यांकन सहित. मॉडलों और भाषा क्षमताओं के बारे में मैंने जो खोजा, वह विक्रेता के दावों से काफी अलग था. मुझे धातु के करीब, वास्तविक साक्ष्य के करीब होना था.graph TB
Problem[विक्रेता दावे]
Loop[मूल्यांकन लूप]
Cache[आइडेम्पोटेंट कैश]
ABTest[ए/बी परीक्षण संकेत]
Demote[ब्लैकलिस्ट असफलताएँ]
Discovery[उत्पादन में उत्सर्जित करें]
BDD[बीडीडी ढांचा]
Problem -->|बनाएँ| Loop
Loop -->|सक्षम करें| Cache
Cache -->|तेज| ABTest
Cache -->|ट्रैक| Demote
ABTest -->|ब्रेकथ्रू| Discovery
Demote -->|सुधार करें| Discovery
Discovery --> BDD
style Problem fill:transparent,stroke:#666666,stroke-width:2px,stroke-dasharray:5 5
style Discovery fill:transparent,stroke:#3B82F6,stroke-width:2px
style BDD fill:transparent,stroke:#10B981,stroke-width:2pxCopy sourceबेंचमार्क-ड्रिवेन विकास वास्तव में क्या है#
बेंचमार्क-ड्रिवेन विकास सत्यापन से आगे बढ़कर एक जनरेटिव प्रक्रिया बन जाता है। . जहाँ परीक्षण शुद्धता की पुष्टि करते हैं, बेंचमार्क कई आयामों में प्रदर्शन की तुलना करते हैं। . और भी महत्वपूर्ण, BDD में, बेंचमार्क वह कॉन्फ़िगरेशन उत्सर्जित करते हैं जो उत्पादन प्रणाली को चलाता है। .मैं वास्तव में यही कह रहा हूं: केवल यह जांचने के बजाय कि कोड काम कर रहा है या नहीं, सिस्टम लगातार यह मूल्यांकन करता है कि कौन सा दृष्टिकोण सबसे अच्छा काम करता है, फिर स्वतः ही अपने आप को उस अनुकूलतम दृष्टिकोण का उपयोग करने के लिए कॉन्फ़िगर करता है। . जो काम करता है उसे लें और ऐसा कुछ बनाएं जो वास्तव में आपके संदर्भ की सेवा करे। .graph LR
subgraph "टेस्ट-ड्रिवेन डेवलपमेंट"
Test[परीक्षण लिखें]
Code[कोड लिखें]
Pass[परीक्षण पास]
Test --> Code
Code --> Pass
end
subgraph "बेंचमार्क-ड्रिवेन डेवलपमेंट"
Bench[बेंचमार्क चलाएँ]
Compare[परिणामों की तुलना करें]
Config[कॉन्फ़िग बनाएं]
Deploy[उत्पादन]
Bench --> Compare
Compare --> Config
Config --> Deploy
end
style Pass fill:transparent,stroke:#10B981,stroke-width:2px
style Deploy fill:transparent,stroke:#10B981,stroke-width:2px
style Config fill:transparent,stroke:#3B82F6,stroke-width:2pxCopy sourceअनुवाद प्रणाली के भीतर#
अनुवाद प्रणाली में, एकल एआई मॉडल चुनने और यह उम्मीद करने के बजाय कि वह सभी भाषा जोड़ों में अच्छा प्रदर्शन करे, मैंने एक व्यापक बेंचमार्किंग प्रणाली बनाई जो तीन प्रमुख मेट्रिक्स के माध्यम से कई मॉडलों का मूल्यांकन करती है:- गुणवत्ता - अनुवाद सटीकता और सांस्कृतिक सूक्ष्मता का संरक्षण
- गति - विभिन्न पाठ लंबाइयों के लिए प्रतिक्रिया समय
- लागत - प्रति-टोकन या प्रति अनुरोध मूल्य निर्धारण
graph TB
Input[परीक्षण कॉर्पस]
Models[एआई मॉडल]
Bench[बेंचमार्क सूट]
Metrics[स्कोर: Q/S/C]
Winner[सर्वश्रेष्ठ कॉन्फ़िगरेशन]
ProdConfig[उत्पादन]
Input --> Bench
Models --> Bench
Bench -->|गुणवत्ता| Metrics
Bench -->|गति| Metrics
Bench -->|लागत| Metrics
Metrics --> Winner
Winner -->|स्वयं-जनरेट| ProdConfig
style Winner fill:transparent,stroke:#3B82F6,stroke-width:2px
style ProdConfig fill:transparent,stroke:#10B981,stroke-width:2pxCopy sourceमूल्यांकनकर्ता का मूल्यांकन#
एक महत्वपूर्ण नवाचार यह था कि मैंने जो 'पहले मूल्यांकनकर्ता का मूल्यांकन' कहा है, उसे लागू किया। स्पेनिश से कुछ परिचित होने के कारण, मैं सांस्कृतिक सूक्ष्मता में होने वाले नुकसानों को आसानी से पहचान सका, जिन्हें सरल मूल्यांकन मेट्रिक्स ने मिस किया. समाधान था कि अधिक महंगे, उच्च-गुणवत्ता वाले मॉडल विशेष रूप से स्कोरकार्ड का मूल्यांकन करने के लिए उपयोग किए जाएँ, जिससे बेंचमार्क वास्तव में महत्वपूर्ण चीजों को मापें.मूल्यांकन चक्र होने और अधिक बुद्धिमान मॉडल का उपयोग करके मूल्यांकनकर्ताओं का मूल्यांकन करने से एक शक्तिशाली तकनीक बन गई. किसी चीज़ के लिए एक अच्छा मूल्यांकनकर्ता प्राप्त करना परियोजना में एक अद्भुत सृजन है—एक उपलब्धि, एक चुनौती, और एक उपलब्धि एक साथ.यह मेटा-आकलन प्रक्रिया स्कोरकार्ड को क्रमिक रूप से परिष्कृत करती है, और मैं एक मजबूत मूल्यांकन ढाँचा बना पाया जिसे वास्तव में स्वचालित निर्णय लेने के लिए भरोसा किया जा सकता है. मेरे अनुभव में, यही वह जगह है जहाँ अधिकांश टीमें विफल होती हैं: वे अपने मूल्यांकनकर्ताओं पर भरोसा करते हैं बिना पहले उनका मूल्यांकन किए.graph TB
Basic[मूलभूत मीट्रिक्स]
Human[मानव समीक्षा]
Premium[प्रीमियम मॉडल]
Refined[परिष्कृत स्कोरकार्ड]
Trust[विश्वसनीय मूल्यांकनकर्ता]
Basic -->|पाए गए अंतर| Human
Human -->|अंतर्दृष्टि| Premium
Premium -->|मूल्यांकन| Basic
Premium --> Refined
Refined -->|आवृत्ति| Trust
style Human fill:transparent,stroke:#333333,stroke-width:2px
style Premium fill:transparent,stroke:#3B82F6,stroke-width:2px
style Trust fill:transparent,stroke:#10B981,stroke-width:2pxCopy sourceजब बेंचमार्क कॉन्फ़िगरेशन बनते हैं#
तब मैंने समझा कि बेंचमार्क उत्पादन कॉन्फ़िग बना सकते हैं, सब कुछ स्पष्ट हो गया . बेंचमार्क कोड के साथ ही रहता है और इंजन के किसी भी परत या घटक पर केंद्रित हो सकता है . यह नकली घटक बना सकता है, विविधताओं का परीक्षण कर सकता है, और जब स्कोर सुधारते हैं, तो सीधे स्रोत कोड में कॉन्फ़िग जारी कर सकता है .उस कनेक्टिविटी को आवश्यक बना दिया गया। एआई इतनी तेजी से विकसित होता है कि प्रोजेक्ट में बेंचमार्किंग का जीवित होना लाभदायक है . जब कोई नया मॉडल बेहतर आर्थिक या गति के साथ जारी होता है, तो स्कोरकार्ड वही रहते हैं और बेंचमार्किंग जारी रहती है . गुणवत्ता लाभ अद्भुत हैं .विजेता संयोजन—मॉडल चयन, प्रॉम्प्ट इंजीनियरिंग, पैरामीटर ट्यूनिंग—पहले से पूरी ऑडिट ट्रेल के साथ परखे गए हैं, कॉन्फ़िग में जारी होते हैं और सीधे उत्पादन में जाते हैं . अनुवाद प्रणाली के साथ, इसने मुझे भाषा अनुवादों के लिए मॉडल क्षमताओं के बारे में अद्भुत जागरूकता दी . विजेता स्वचालित रूप से उत्पादन कॉन्फ़िगरेशन बन गए, हमेशा गुणवत्ता, मूल्य और सांस्कृतिक सूक्ष्मता संरक्षण के सर्वोत्तम संतुलन का उपयोग करते हुए .इससे एक ऑडिट ट्रेल बना जो सटीक रूप से दिखाता है कि प्रत्येक तकनीकी निर्णय क्यों लिया गया, अनुभवजन्य डेटा द्वारा समर्थित . जब कोई पूछता है "स्पेनिश-से-फ्रेंच के लिए मॉडल X क्यों, लेकिन चीनी-से-इंग्लिश के लिए मॉडल Y?" उत्तर बेंचमार्क परिणामों में मौजूद है .डेटा के माध्यम से प्रॉम्प्ट इंजीनियरिंग#
प्रणाली ने न केवल मॉडल चयन बल्कि स्वयं प्रॉम्प्ट इंजीनियरिंग को बेंचमार्क करने के लिए विकास किया . मैं बेंचमार्क बना पाया और फिर विभिन्न भागों को एआई प्रॉम्प्ट पर काम करने के लिए भी रखा, विभिन्न प्रॉम्प्ट का A/B परीक्षण व्यवस्थित रूप से किया . स्थापित मेट्रिक्स के आधार पर स्पष्ट विजेता उभरे . इसने प्रॉम्प्ट इंजीनियरिंग से अनुमान को हटा दिया, सहजज्ञान को डेटा-आधारित निर्णयों से बदल दिया .लगातार खोज की अर्थव्यवस्था#
इस दृष्टिकोण में एक महत्वपूर्ण लागत बचत पहलू है . स्कोरकार्ड को सबसे अच्छी गुणवत्ता और सांस्कृतिक सूक्ष्मता को अच्छी गति के साथ, लेकिन सर्वोत्तम लागत पर बढ़ावा देने के लिए डिज़ाइन किया गया है . इसके अलावा, वह लागत है जिसे मैं मैन्युअल रूप से कुछ भी मूल्यांकन न करके बचा रहा हूँ—सिर्फ नई मॉडल या मॉडल संस्करण जारी होने पर सब कुछ स्वाभाविक रूप से चलने देना .जब एक मॉडल दावा करता है कि वह कुछ भाषा युग्मों में वास्तव में अच्छा है, तो इसे कॉन्फ़िगरेशन में जोड़ना और बेंचमार्क चलने देना बेहद आसान है . मुझे पता है कि जो भी विजयी होगा, उसे उत्पादन में लागू किया जाएगा, कड़ी साक्ष्य के आधार पर .मेरे लिए, बेंचमार्क-चालित विकास एक छोटे एजेंट टीम के होने जैसा है, जो प्रोजेक्ट में, एक विशेष अनुभाग में शोध, खोज और मूल्यांकन कर रही है . यह देखना काफी मज़ेदार है. यह परियोजना में एक छोटा R&D शॉप रखने जैसा है, जो काम कर रहा है. अनुवाद प्रणाली मेरे पसंदीदा प्रणालियों में से एक थी—मैंने इसे बार-बार दो साल से अधिक समय तक बनाया, और अब यह ऐसी स्थिति पर है जहाँ मैं इसके साथ एक सेवा बना सकता हूँ, हालांकि वर्तमान में मैं इसका निजी उपयोग कर रहा हूँ.सद्भावना चक्र#
Benchmark-Driven Development एक सद्भावनापूर्ण चक्र बनाता है:- माप के माध्यम से स्पष्टता: अमूर्त गुणवत्ता ठोस मेट्रिक्स बन जाती है
- तुलना के माध्यम से सीखना: प्रत्येक बेंचमार्क समस्या क्षेत्र के बारे में कुछ नया सिखाता है
- डेटा के माध्यम से आत्मविश्वास: निर्णय स्थानीय, सत्यापनीय साक्ष्य द्वारा समर्थित होते हैं
- स्वचालन के माध्यम से विकास: प्रणाली स्वयं को निरंतर सुधारती है
graph TB
Define[मेट्रिक्स परिभाषित करें]
Implement[बेंचमार्क बनाएं]
Cache[परिणाम कैश करें]
Evaluate[ए/बी परीक्षण चलाएँ]
Select[विजेता चुनें]
Generate[कॉन्फ़िग जारी करें]
Deploy[उत्पादन में परिनियोजित करें]
Monitor[प्रदर्शन मॉनिटर करें]
Define --> Implement
Implement --> Cache
Cache --> Evaluate
Evaluate --> Select
Select --> Generate
Generate --> Deploy
Deploy --> Monitor
Monitor -.->|लगातार| Evaluate
style Cache fill:transparent,stroke:#333333,stroke-width:2px
style Select fill:transparent,stroke:#3B82F6,stroke-width:2px
style Deploy fill:transparent,stroke:#10B981,stroke-width:2pxCopy sourceअभ्यास से उभरने वाली बातें#
Benchmark-Driven Development को लागू करके, ये पैटर्न महत्वपूर्ण के रूप में उभरे:- स्पष्ट मेट्रिक्स आवश्यक साबित हुईं: जब प्रदर्शन, लागत और गुणवत्ता को सहीता के साथ ट्रैक किया गया, तो सफलता कई आयामों में मापने योग्य हो गई.
- व्यापक बेंचमार्क्स ने छिपी हुई समस्याओं का खुलासा किया: अपेक्षित इनपुट्स और एज केसों के पूरे रेंज में परीक्षण करने से वे समस्याएँ उजागर हुईं जो आंशिक परीक्षण से छूट गईं.
- कैशिंग ने तेज़ पुनरावृत्ति को सक्षम किया: समानता और आक्रामक कैशिंग ने हजारों बेंचमार्क विविधताओं को अनावश्यक गणना के बिना संभव बनाया.
- स्वचालित कॉन्फ़िगरेशन ने त्रुटियों को कम किया: जब बेंचमार्क परिणाम सीधे उत्पादन कॉन्फ़िगरेशन उत्पन्न करते हैं, मैन्युअल ट्रांस्क्रिप्शन त्रुटियाँ गायब हो जाती हैं.
- ऑडिट ट्रेल्स ने स्पष्टता प्रदान की: हर कॉन्फ़िगरेशन निर्णय बेंचमार्क डेटा से वापस ट्रेस किया गया, जिससे डिबगिंग और जवाबदेही आसान हो गई.
जहाँ यह दृष्टिकोण फलता-फूलता है#
सॉफ़्टवेयर विकास के संदर्भ में मेरी दर्शनशास्त्र यह है कि दृष्टिकोण को हमेशा संदर्भ और आवश्यकता के अनुसार विकसित होना चाहिए. बेंचमार्क-ड्रिवेन डेवलपमेंट कई परियोजनाओं के लिए समझ में नहीं आता, विशेष रूप से उन परियोजनाओं के लिए जिनमें प्रयोगात्मक प्रकृति नहीं होती या जो तेज़ी से विकसित हो रहे AI सिस्टम के साथ सीधे एकीकृत नहीं हैं.मेरे लिए, इस क्षेत्र में विकास की दर के तनाव और AI क्षमताओं के दायरे—शून्य तापमान पर पूरी तरह से निर्धारक आउटपुट से लेकर उच्च तापमान पर रचनात्मक आउटपुट तक—ने आवश्यकता पैदा की. अनुवाद प्रणाली के साथ, बेंचमार्क-ड्रिवेन दृष्टिकोण समझ में आया क्योंकि मैं कठोर साक्ष्य और पेन ट्रेल के साथ गुणवत्ता, गति, और लागत को माप सकता था.BDD ने उन परिदृश्यों में सबसे अधिक प्रभावी साबित हुआ जहां:- कई वैध कार्यान्वयन विकल्प (विभिन्न AI मॉडल, एल्गोरिदम, या दृष्टिकोण)
- तेज़ी से विकसित होते प्रौद्योगिकी परिदृश्य
- बहुआयामी अनुकूलन आवश्यकताएं (गुणवत्ता, गति, लागत)
- व्याख्यात्मक तकनीकी निर्णयों की आवश्यकता
- जटिल कॉन्फ़िगरेशन स्पेस
- उन प्रणालियों को जिन्हें नई क्षमताओं के लिए निरंतर अनुकूलन की आवश्यकता होती है