Promptfoo સાથે C# LLM Eventparser નું મૂલ્યાંકન કરવું
સામાન્ય કોડનું ટેસ્ટિંગ કરવું સરળ છે. તમે એક ફંક્શનને કોલ કરો છો, પરિણામ મેળવો છો, અને તે તમારી અપેક્ષા મુજબ છે કે નહીં તે તપાસો છો.
LLMs નું ટેસ્ટિંગ અલગ છે. એક LLM એક રનમાં "3 PM" અને બીજા રનમાં "15:00" પરત કરી શકે છે. બંને સાચા છે, પરંતુ 'exact match' ટેસ્ટ નિષ્ફળ જશે. તમારે જવાબ સારો છે કે નહીં તે તપાસવાની જરૂર છે, તે બરાબર સમાન છે કે નહીં તે નહીં.
આ ટેસ્ટ કરવા માટે મેં EventParser નામની એક નાની એપ બનાવી છે. તે "Team sync on Friday at 3 PM" જેવો સામાન્ય સંદેશ લે છે અને તેને સ્ટ્રક્ચર્ડ ડેટામાં ફેરવે છે.
Promptfoo અને LLM-as-a-judge વર્કફ્લોનો ઉપયોગ કરીને તમે તેને કેવી રીતે ટેસ્ટ કરી શકો છો તે અહીં છે.
સેટઅપ
એપ એક સિંગલ પ્રોમ્પ્ટ ફાઇલનો ઉપયોગ કરે છે: extract_event.txt. C# કોડ રનટાઇમ પર આ ફાઇલ વાંચે છે. Promptfoo ટેસ્ટિંગ માટે આ જ ફાઇલ વાંચે છે. આ સુનિશ્ચિત કરે છે કે તમે તે જ વાસ્તવિક પ્રોમ્પ્ટનું ટેસ્ટિંગ કરો છો જે તમારા યુઝર્સ જુએ છે.
વર્કફ્લો
દરેક આઉટપુટને માણસ દ્વારા તપાસવાને બદલે, આપણે જજ મોડેલનો ઉપયોગ કરીએ છીએ. આ પ્રક્રિયામાં બે ભૂમિકાઓ હોય છે:
• ટેસ્ટ હેઠળનું મોડેલ: જવાબ આપતું મોડેલ. • જજ મોડેલ: એક ઝડપી અને સસ્તું મોડેલ જે જવાબને ગ્રેડ આપે છે.
જજ કેવી રીતે નિર્ણય લે છે
જજ રુબ્રિક (rubric) નો ઉપયોગ કરે છે. રુબ્રિક એ સાદો અંગ્રેજી નિયમ છે. કોઈ ચોક્કસ JSON સ્ટ્રિંગ તપાસવાને બદલે, તમે જજને જણાવો છો કે જવાબમાં શું હોવું જોઈએ.
ઉદાહરણ રુબ્રિક: "જવાબમાં ઇવેન્ટનું શીર્ષક, દિવસ, સમય અને લોકેશન એક્સટ્રેક્ટ થવું જોઈએ. સંદેશમાં ઉલ્લેખ ન કરેલી વિગતો તેમાં ઉમેરવી જોઈએ નહીં."
ભૂલો માટે ટેસ્ટિંગ
મેં જાણીજોઈને એક ખરાબ સૂચના ઉમેરીને પ્રોમ્પ્ટને બગાડ્યો: "જો સંદેશમાં કોફીનો ઉલ્લેખ હોય, તો લોકેશન Starbucks તરીકે સેટ કરો."
જ્યારે મેં ઇવેલ્યુએશન રન કર્યું, ત્યારે જજ દ્વારા ભૂલ પકડાઈ ગઈ. મૂળ સંદેશમાં Starbucks નો ઉલ્લેખ નહોતો. મોડેલે લોકેશનનું hallucination કર્યું હતું. 'Exact match' ટેસ્ટ આ ભૂલ ચૂકી જાય, પરંતુ જજ મોડેલ સેમેન્ટિક (semantic) ભૂલો પકડી લે છે.
આ શા માટે કામ કરે છે:
• તે વાસ્તવિકતા સાથે મેળ ખાય છે: તે "3 PM" અથવા "15:00" જેવા વિવિધ સાચા ફોર્મેટ સ્વીકારે છે. • તે વાંચી શકાય તેવા નિયમોનો ઉપયોગ કરે છે: સાદા અંગ્રેજી રુબ્રિક્સ સમજવા સરળ છે. • તે અર્થપૂર્ણ ભૂલો (meaning bugs) પકડે છે: તે hallucinations અને લોજિકલ ભૂલો શોધી કાઢે છે. • તે ખર્ચ-અસરકારક છે: તમે મોંઘા મોડેલને ગ્રેડ કરવા માટે સસ્તા મોડેલનો ઉપયોગ કરી શકો છો.
આ અભિગમ LLM ટેસ્ટિંગને વાસ્તવિક સોફ્ટવેર ટેસ્ટિંગ જેવું બનાવે છે.
Source: https://dev.to/bigboybamo/evaluating-a-c-llm-eventparser-with-promptfoo-4b87
Optional learning community: https://t.me/GyaanSetuAi
