நீங்கள் ஒரு LLM-ஆல் இயக்கப்படும் (LLM-driven) அம்சத்திற்காக, மாதிரியின் API-ஐ அழைக்காமலேயே 28 unit test-களை இயக்கக்கூடிய ஒரு உள் கருவியை (internal tool) உருவாக்கினீர்கள். ஒரு மாற்றக்கூடிய இடைமுகத்தை (fakeable interface) உருவாக்கி, அதன் மேல் தீர்மானிக்கத்தக்க (deterministic), அனுபவ அறிவு சார்ந்த (heuristic) மற்றும் LLM-அடிப்படையிலான மதிப்பீடு என மூன்று அடுக்குகளைச் சேர்ப்பதன் மூலம் இதைச் செய்தீர்கள்.
LLM ஒரு உரைப்பகுதியை (prose) உருவாக்கும் தருணத்திலேயே வழக்கமான assertions தோல்வியடைகின்றன. ஒரே prompt ஒவ்வொரு முறையும் வெவ்வேறு வாக்கியங்களைத் தரக்கூடும் என்பதால், assertEqual(output, expected) என்பது மாதிரி சரியாகச் செயல்பட்டாலும் தோல்வியைக் காட்டும். பெரும்பாலான பொறியியல் குழுக்கள், சரிபார்ப்பு ஏதுமின்றி அம்சத்தை வெளியிடுகிறார்கள் அல்லது ஒரு மாறிக்கொண்டே இருக்கும் இலக்கை (shifting target) ஒரு நிலையான library போலக் கருதி, மாதிரியைத் தாங்களே சோதிக்க முயற்சி செய்கிறார்கள்.
இந்தப் பிரச்சனை ஏன் முக்கியமானது
இப்போது LLM-கள் வாடிக்கையாளர் சார்ந்த பணிப்பாய்வுகளுக்குள் (customer-facing workflows)—மின்னஞ்சல் தொடர்பு, ஆதரவு பதில்கள், உள்ளடக்க உருவாக்கம் எனப் பல இடங்களில் அமர்ந்துள்ளன. ஒரு சிறிய கற்பனையான தகவல் (hallucinated fact) அல்லது கசிந்த அடையாளம் (leaked identifier) நிறுவனத்தின் நற்பெயரைப் பாதிக்கலாம், தனிப்பட்ட தரவுகளை வெளிப்படுத்தலாம் அல்லது விதிமுறை மீறல்களுக்கு (compliance violations) வழிவகுக்கலாம். நம்பகமான சோதனை உத்தி இல்லையென்றால், குழுக்கள் அடிக்கடி மாறும் தோல்விகளைத் (flaky failures) தேடி நேரத்தை வீணடிக்கின்றன அல்லது தயாரிப்பு நிலையில் (production) மட்டுமே தெரியவரும் பிழைகளை வெளியிடுகின்றன.
அணுகுமுறை: மாதிரியின் பொறுப்பைக் குறைத்தல்
முதல் படி, LLM உண்மையில் என்ன செய்கிறது என்பதைக் கட்டுப்படுத்துவதாகும். இந்த அமைப்பில், மாதிரி மின்னஞ்சல் செய்திகளைத் தயாரிக்கும் பணியை மட்டுமே செய்கிறது. அனைத்து routing logic, state management மற்றும் பாதுகாப்புச் சோதனைகளும் சாதாரண குறியீட்டிலேயே (ordinary code) உள்ளன. மாதிரியை ஒரு குறிப்பிட்ட, நன்கு வரையறுக்கப்பட்ட வெளியீட்டிற்குள் மட்டும் கட்டுப்படுத்துவதன் மூலம், அதைச் சுற்றியுள்ள அமைப்பு தீர்மானிக்கத்தக்கதாகவும் (deterministic) சோதனை செய்யக்கூடியதாகவும் மாறுகிறது.
இதைச் சாத்தியமாக்க, LLM ஒரு provider interface-க்கு பின்னால் அமைகிறது, இது சோதனைகளில் ஒரு fake பதிப்பைப் பயன்படுத்த அனுமதிக்கிறது. தயாரிப்பு நிலையில் (production), இந்தச் செயல்பாடு வெளிப்புற API-ஐ அழைக்கிறது; சோதனைத் தொகுப்பில் (test suite), ஒரு இலகுரக fake ஒரு முன் தீர்மானிக்கப்பட்ட பதிலை (canned response) வழங்குகிறது. மீதமுள்ள குறியீடு அந்த interface உடன் மட்டுமே தொடர்பு கொள்வதால், நெட்வொர்க்கைத் தொடாமலேயே முழு பணிப்பாய்வையும் unit test-கள் மூலம் சோதிக்க முடியும். இதன் விளைவாக, 28 சோதனைகள் சரிபார்க்கக்கூடிய ஒரு கணிக்கக்கூடிய மையப்பகுதி (predictable core) கிடைக்கிறது.
ஒரு நேர்மையான மதிப்பீட்டு கருவி (Evaluation harness)
அளவிடப்பட்ட எல்லைக்குள்ளும், மாதிரியின் வெளியீடு தீர்மானிக்க முடியாததாகவே (nondeterministic) உள்ளது. எனவே, ஒவ்வொரு அடுக்கையும் ஒரு குறிப்பிட்ட வகை அபாயத்தைக் கையாளும் வகையில் ஒரு மூன்று அடுக்கு மதிப்பீட்டு கருவியை (evaluation harness) உருவாக்கியது.
அடுக்கு 1 – தீர்மானிக்கத்தக்க சோதனைகள் (Deterministic checks) தவறான கட்டிட ஐடி (building ID) அல்லது தடைசெய்யப்பட்ட டோக்கன்கள் போன்ற நேரடித் தவறுகளை எளிய regular-expression விதிகள் கண்டறிகின்றன. இந்தச் சோதனைகள் வேகமானவை மற்றும் ஒரு தெளிவான pass/fail முடிவைத் தருகின்றன.
அடுக்கு 2 – அனுபவ அறிவு சார்ந்த சோதனைகள் (Heuristic checks) கற்பனையான எண்கள் அல்லது தேதிகளைத் தேடி, தெளிவான உண்மைத் தவறுகளைக் கண்டறிய ஸ்கிரிப்ட்கள் பயன்படுகின்றன. எண்கள் இல்லாத தவறான தகவல்களை இவை கண்டறியத் தவறிவிடும் என்பதை ஆசிரியர் வெளிப்படையாக ஒப்புக்கொள்கிறார்.
அடுக்கு 3 – LLM நடுவர் (LLM judge) ஒரு இரண்டாம் நிலை மாதிரி, உரையின் தொனி (tone) மற்றும் தொழில்முறைத் தன்மையை (professionalism) மதிப்பிடுகிறது. இந்த படிநிலை மற்றொரு நிகழ்தகவு அமைப்பை (probabilistic system) சார்ந்து இருப்பதால், தீர்மானிக்கத்தக்க விதிகள் சாத்தியமில்லாத அகநிலைத் தன்மைகளுக்கு (subjective aspects) மட்டுமே இது பயன்படுத்தப்படுகிறது.
இந்த மதிப்பீட்டு கருவியின் முக்கிய அம்சம் அதில் பயன்படுத்தப்படும் தரவுத்தொகுப்பு (dataset) ஆகும். ஏற்கனவே தெரிந்த தோல்வி முறைகளை—குறிப்பிட்ட பொறிகள்கள் மற்றும் துறை சார்ந்த அறிவை—ஆசிரியர் இதில் குறியீடு செய்துள்ளார், இதனால் நடைமுறையில் ஏற்பட்ட தவறுகளை இந்த கருவி துல்லியமாகச் சோதிக்கிறது. இது ஒரு மாயாஜால "அனைத்தையும் பிடிக்கும்" கருவி அல்ல, மாறாக ஒரு இலக்கு வைக்கப்பட்ட பாதுகாப்பு வலை (targeted safety net).
குழுக்களுக்கு இதன் பொருள் என்ன
- LLM-ன் வேலையைச் சிறியதாக வைத்திருங்கள். பொறுப்புகள் குறைவாக இருக்கும்போது, தனிமைப்படுத்துவதும் (isolation) சோதிப்பதும் எளிதாகிறது.
- Routing, state மற்றும் பாதுகாப்பை குறியீட்டில் (code) வைக்கவும். பாரம்பரிய தர்க்கங்கள் (traditional logic) தீர்மானிக்கத்தக்கதாகவும் முழுமையாகச் சோதனை செய்யக்கூடியதாகவும் இருக்கும்.
- மாதிரியை ஒரு fakeable interface மூலம் வெளிப்படுத்துங்கள். Unit test-கள் வெளிப்புற அழைப்புகள் இன்றி வேகமாக மற்றும் நம்பகமாக இயங்கும்.
- மதிப்பீடுகளை அடுக்குகளாகப் பிரிக்கவும். தீர்மானிக்கத்தக்க விதிகளுடன் தொடங்குங்கள், தெரிந்த hallucinations-களுக்கு heuristic முறைகளைச் சேர்க்கவும், மற்றும் அகநிலைத் தரக் கட்டுப்பாடுகளுக்கு LLM நடுவர்களைப் பயன்படுத்தவும்.
- வரம்புகளைக் குறிப்பிடவும். எந்த அடுக்கும் முழுமையானத் துல்லியத்தை உறுதி செய்யாது; நீங்கள் எதைக் கண்டறியத் திட்டமிட்டுள்ளீர்களோ அதை மட்டுமே இந்த கருவி கண்டறியும்.
முரண்பட்ட கருத்து: நீங்கள் மாதிரியைத் தாங்களே unit-test செய்ய முடியாது
மாதிரி என்பது ஒரு மாறிக்கொண்டே இருக்கும் இலக்கு (moving target) என்பதை ஆசிரியர் ஒப்புக்கொள்கிறார். LLM நடுவர் அடுக்கு கூட, அது மதிப்பிட முயலும் அதே தீர்மானிக்க முடியாத தன்மையையே (nondeterminism) கொண்டுள்ளது. இதன் விளைவாக, ஒவ்வொரு hallucination அல்லது கொள்கை மீறலும் வெளியீட்டிற்கு முன் கண்டறியப்படும் என்று இந்த அமைப்பால் ஒருபோதும் உத்தரவாதம் அளிக்க முடியாது. இந்த அணுகுமுறை அபாயத்தைக் குறைக்கிறது, ஆனால் அதை முற்றிலுமாக நீக்கவில்லை. புதிய தோல்வி முறைகள் தோன்றும் போது, மதிப்பீட்டுத் தரவை (evaluation data) புதுப்பித்து வைத்திருக்கும் குழுவின் திறமையையே இது சார்ந்துள்ளது.
சுருக்கம்
ஒரு LLM-ன் துல்லியமான வெளியீட்டை உறுதி செய்யும் ஒரு பாரம்பரிய unit test-ஐ உங்களால் எழுத முடியாது, ஆனால் மாதிரியின் தாக்கம் வரையறுக்கப்பட்டதாகவும், அதன் interface மாற்றக்கூடியதாகவும், அதன் வெளியீடு அடுக்குமுறை மற்றும் வெளிப்படையான சோதனைகள் மூலம் வடிகட்டப்பட்டதாகவும் இருக்கும் ஒரு அமைப்பை உங்களால் உருவாக்க முடியும். அந்தத் தொகுப்பு, ஒரு நிலையற்ற கூறினை (flaky component) ஒரு பெரிய, சோதனை செய்யக்கூடிய பயன்பாட்டின் கணிக்கக்கூடிய பகுதியாக மாற்றுகிறது.
