મેં જે AI એજન્ટ લોન્ચ કર્યો હતો તે 23 યુનિટ ટેસ્ટ પાસ કરી ગયો હતો, પરંતુ લાઈવ થયાના એક કલાકની અંદર જ તેણે એક નવું પ્રોડક્ટ ફીચર બનાવ્યું અને વાસ્તવિકતા કરતા ત્રણ ગણી ઓછી કિંમત જણાવી દીધી. જ્યારે યુઝરે તેને પકડ્યો, ત્યારે બોટે પોતાની વાત પર વધુ ભાર મૂક્યો, વાતચીત પૂરી થઈ ગઈ અને મેં એક ક્લાયન્ટ ગુમાવ્યો. આ ભૂલ એ સાબિત કરી ગઈ કે ડિટરમિનિસ્ટિક યુનિટ ટેસ્ટનો સેટ એજન્ટની વિશ્વસનીયતાની ખાતરી આપી શકતો નથી.
AI એજન્ટ્સ માટે યુનિટ ટેસ્ટ કેમ અપૂરતા છે
પરંપરાગત કોડ માટે યુનિટ ટેસ્ટ કામ કરે છે કારણ કે સમાન ઇનપુટ હંમેશા સમાન આઉટપુટ આપે છે. “2 + 2 = 4” એ એક એવી ખાતરી છે જેને તમે સાદા ઇક્વાલિટી ચેક દ્વારા ચકાસી શકો છો. જોકે, LLM-સંચાલિત એજન્ટ તેના પ્રોમ્પ્ટ, આસપાસના સંદર્ભ અને તે કોલ કરેલા કોઈપણ એક્સટર્નલ ટૂલ્સની સ્થિતિ સાથે તેનું આઉટપુટ બદલી નાખે છે. સમાન સ્ટ્રિંગ ઇક્વાલિટી (string equality) તપાસતો ટેસ્ટ હેલ્યુસિનેશન (hallucinations), ટોન બદલાવો અથવા ગાર્ડરેલ ઉલ્લંઘનો પકડી શકતો નથી. એક ક્લાયન્ટને કારણે થયેલી આ શાંત નિષ્ફળતા દર્શાવે છે કે તમારે માત્ર અલગ-અલગ ફંક્શન્સને જ નહીં, પરંતુ સમગ્ર ઇન્ટરેક્શનનું મૂલ્યાંકન કરવું જોઈએ.
કોઈપણ ફીચર કોડ લખતા પહેલા ઇવેલ્યુએશન હાર્નેસ બનાવવું
મેં ડેવલપમેન્ટનો ક્રમ બદલી નાખ્યો: પહેલા ચાર-સ્તરીય ઇવેલ્યુએશન હાર્નેસ ડિઝાઇન કરો, પછી એજન્ટ લખો. આ હાર્નેસ એક જ પાસમાં 131 ટેસ્ટ ચલાવે છે, જેનો ખર્ચ અંદાજે ત્રણ સેન્ટ પ્રતિ રન આવે છે અને તે લગભગ અગિયાર મિનિટમાં પૂર્ણ થાય છે. હું દરેક ટેસ્ટને તે હેન્ડલ કરી શકે તેવા સૌથી નાના મોડેલને સોંપું છું, અને મોટા, મોંઘા મોડેલ્સનો ઉપયોગ ત્યારે જ કરું છું જ્યારે તેઓ ખરેખર મૂલ્ય ઉમેરે.
સ્તર ૧ – ટૂલ ફંક્શનલિટી
સુરક્ષાની પ્રથમ લાઇન એ તપાસે છે કે એજન્ટ તેના ટૂલ્સને યોગ્ય રીતે કોલ કરી શકે છે કે નહીં. ટેસ્ટમાં સફળ સર્ચ, જાણીજોઈને ખોટી રીતે બનાવેલી ક્વેરીઝ અને સિમ્યુલેટેડ API નિષ્ફળતાઓનો સમાવેશ થાય છે. કારણ કે ટૂલનો ઉપયોગ મોટે ભાગે ડિટરમિનિસ્ટિક હોય છે—કાં તો રિક્વેસ્ટ યોગ્ય રીતે બનાવવામાં આવી હોય અથવા API ભૂલ (error) આપે—તેથી સાદા Python assertions પૂરતા છે. અહીં ખોટી રિક્વેસ્ટ પકડવાથી આગળના તબક્કે થતી મૂંઝવણ અટકાવી શકાય છે.
સ્તર ૨ – સૂચનાઓનું પાલન
ત્યારબાદ, હાર્નેસ એ ચકાસે છે કે એજન્ટ ગાર્ડરેલ્સનું પાલન કરે છે કે નહીં. એક નાનું LLM ઇવેલ્યુએટર તરીકે કામ કરે છે, જે એજન્ટના પ્રતિસાદમાં પાલન માટે સ્કેન કરે છે: પાત્રમાં રહેવું, પ્રતિબંધિત વિષયો ટાળવા અને જરૂરી JSON schema આપવું. આ સ્તર એવા સેમેન્ટિક ડ્રિફ્ટ (semantic drift) ને પકડી લે છે જે યુનિટ ટેસ્ટ ચૂકી જાય છે, જેમ કે અજાણતા કોઈ અન્ય પર્સનામાં બદલાઈ જવું અથવા ઇન્ટરનલ પ્રોમ્પ્ટ્સ લીક કરવા.
સ્તર ૩ – ધ્યેય-લક્ષી વર્તન
ત્રીજું સ્તર સૌથી મહત્વપૂર્ણ છે. તે એ પૂછે છે કે શું એજન્ટ ખરેખર તેનો હેતુ સિદ્ધ કરે છે. લીડ-જનરેશન બોટ માટે, તેનો અર્થ એ છે કે તે યોગ્ય ક્વોલિફાઇંગ પ્રશ્નો પૂછે છે અને યોગ્ય સમયે માણસ પાસે એસ્કેલેટ કરે છે તેની ખાતરી કરવી. હું અહીં રીઝનિંગ-ઓરિએન્ટેડ મોડેલનો ઉપયોગ કરું છું કારણ કે તે ખર્ચ વધાર્યા વિના એકંદર પ્રવાહનું મૂલ્યાંકન કરી શકે છે. જો બોટ તેના લક્ષ્યને પ્રાપ્ત કરવામાં નિષ્ફળ જાય—પહેલા બે સ્તરો પાસ કર્યા પછી પણ—તો તેને ફરીથી ડિઝાઇન કરવા માટે ફ્લેગ કરવામાં આવે છે.
સ્તર ૪ – પર્ફોર્મન્સ
અંતે, હાર્નેસ લેટન્સી (latency) અને ટોકન-જનરેશન સ્પીડની નોંધ લે છે. ધીમો પ્રતિસાદ યુઝર એક્સપિરિયન્સને બગાડે છે, ખાસ કરીને રિયલ-ટાઇમ ચેટમાં. ફંક્શનલ કરેક્ટનેસની સાથે આ મેટ્રિક્સને ટ્રેક કરીને, હું ખાતરી કરું છું કે એજન્ટ સચોટ અને પ્રતિભાવશીલ બંને હોય.
ખર્ચ બચાવતા વિકલ્પો
$0.03 પ્રતિ રનનો આ આંકડો કોઈ માર્કેટિંગ ગિમિક નથી; તે ટેસ્ટની જટિલતાને મોડેલના કદ સાથે મેચ કરવાથી આવે છે. ડિટરમિનિસ્ટિક ટૂલ ચેક્સ સૌથી સસ્તા રનટાઇમ પર ચાલે છે, ઇન્સ્ટ્રક્શન કમ્પ્લાયન્સ માટે લાઇટવેઇટ મોડેલનો ઉપયોગ થાય છે, અને માત્ર ધ્યેય-લક્ષી મૂલ્યાંકન માટે જ વધુ સક્ષમ, જોકે મોંઘા, મોડેલનો ઉપયોગ કરવામાં આવે છે. આ સ્તરબદ્ધ અભિગમ કુલ ખર્ચને એટલો ઓછો રાખે છે કે દરેક કોડ ફેરફાર પર આખી સુટ ચલાવી શકાય.
સંતુલન: ઝડપ વિરુદ્ધ સુરક્ષા
હાર્નેસ દાખલ કરવાથી શરૂઆતમાં થોડી મુશ્કેલીઓ વધી. ડેવલપમેન્ટ સાયકલ લાંબી થઈ અને લોન્ચનું સમયપત્રક લંબાયું.
આગળ શું જોવું
- મોડેલ-ડ્રિવન ઇવેલ્યુએટર્સ: જેમ જેમ LLMs સુધરશે, તેમ સ્તર ૨ માં ઇવેલ્યુએટર વધુ સૂક્ષ્મ બની શકશે, જે સહેજ પણ પોલિસી ઉલ્લંઘનને પકડી લેવાની સાથે ખોટા પોઝિટિવ્સ (false positives) ઘટાડશે.
મુખ્ય વાત
જો તમે પ્રોડક્શન માટે AI એજન્ટ્સ બનાવો છો, તો લેયર્ડ ઇવેલ્યુએશન હાર્નેસ એ વૈકલ્પિક નથી; તે પાયાની જરૂરિયાત છે. વ્યાપક ટેસ્ટિંગનો ખર્ચ અગાઉથી ભોગવીને—$0.03 પ્રતિ રન, દરેક સુટ માટે અગિયાર મિનિટ—તમે એવા શાંત નિષ્ફળતાઓ સામે રક્ષણ મેળવો છો જેને યુનિટ ટેસ્ટ શોધી શકતા નથી.
